CentOS7开始,从/etc/init.d脚本改为了systemctl管理服务。
本文记录了把tomcat7加入systemd管理的步骤。
首先,需要为tomcat配置pid。
bin/catalina.sh
-
# Copy CATALINA_BASE from CATALINA_HOME if not already set
-
[ -z "$CATALINA_BASE" ] && CATALINA_BASE="$CATALINA_HOME"
-
-
# 设置pid。一定要加在CATALINA_BASE定义后面,要不然pid会生成到/下面
-
CATALINA_PID="$CATALINA_BASE/tomcat.pid"
创建
脚本/usr/lib/systemd/system/tomcat.service
-
[Unit]
-
Description=tomcat
-
After=syslog.target network.target remote-fs.target nss-lookup.target
-
-
[Service]
-
Type=forking
-
Environment="JAVA_HOME=/opt/jdk1.7.0_40" "JENKINS_HOME=/home/lmis/.jenkins"
-
PIDFile=/opt/apache-tomcat-7.0.57/tomcat.pid
-
ExecStart=/opt/apache-tomcat-7.0.57/bin/startup.sh
-
ExecReload=/bin/kill -s HUP $MAINPID
-
ExecStop=/bin/kill -s QUIT $MAINPID
-
PrivateTmp=true
-
-
[Install]
-
WantedBy=multi-user.target
注意,需要有Environment来设置环境变量,否则启动时会报JAVA_HOME未定义而失败。
另外,由于需要发布jenkins,所以需要设置JENKINS_HOME。
现在还没有搞清楚systemd在执行启动命令时,使用的环境变量是在哪里设置的,
暂时只好通过
Environment来设置。在/etc/profile中设置是不起作用的。
启用tomcat服务(开机自启动?):
systemctl enable tomcat.service
查看状态:
systemctl status tomcat.service
启动服务:
systemctl start tomcat.service
停止服务:
systemctl stop tomcat.service
修改tomcat.service文件后需要执行下面命令使其生效:
systemctl daemon-reload
补充:有两个问题没有搞清楚,
1 systemd启动服务时,环境变量在哪里设置。
2 按上面方法启动的tomcat,使用jps查询不到,为什么?
阅读(4636) | 评论(0) | 转发(0) |