首先我需要说明,从CentOS7开始,/etc/init.d脚本改为了systemctl管理服务。
之前一直在init.d下面写了很多脚本,但是重启系统都没有效果,因此踩了很多坑。
说下步骤:
1.首先需要为tomcat添加自动生成pid的配置(到时候生成的tomcat.pid文件与bin目录平级)
修改tomcat下面的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"
2.在/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=/usr/local/java/jdk1.8.0_144"
PIDFile=/usr/local/java/tomcat/tomcat.pid
ExecStart=/usr/local/java/tomcat/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=/usr/local/java/jdk1.8.0_144" 这里要配置环境变量,在/etc/profile中的配置在系统服务中不生效。
3.设置为开机启动
systemctl enable tomcat.service
4.修改tomcat.service文件后需要执行下面命令使其生效
systemctl daemon-reload
5.其他命令
systemctl start tomcat.service 启动tomcat服务
systemctl disable tomcat.service 停止开机自启动