1、修改bin目录下的catalina.sh
文件,添加如下内容:
CATALINA_PID="$CATALINA_BASE/tomcat.pid"
如下图所示:
2、创建文件tomcat.service
内容如下:
[Unit]
Description=Tomcat
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=oneshot
Environment="JAVA_HOME=/usr/local/java/jdk1.8.0_221"
Environment="LD_LIBRARY_PATH=/usr/tomcat/gdal-2.4.4/swig/java"
Environment="GDAL_DATA=/usr/local/share/gdal"
Environment="PROJ_LIB=/usr/local/share/proj"
PIDFile=/usr/tomcat/apache-tomcat-9.0.55/tomcat.pid
ExecStart=/usr/tomcat/apache-tomcat-9.0.55/bin/startup.sh
ExecStop=/bin/kill -s QUIT $MAINPID
ExecReload=/bin/kill -s HUP $MAINPID
PrivateTmp=true
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
将该文件上传到
/etc/systemd/system/
目录下,并更改tomcat.service文件权限:
tomcat.service参数说明:
由于设置了gdal支持,因此需要添加gdal对应的路径,否则gdal无效:
Environment="LD_LIBRARY_PATH=/usr/tomcat/gdal-2.4.4/swig/java"
Environment="GDAL_DATA=/usr/local/share/gdal"
Environment="PROJ_LIB=/usr/local/share/proj"
PIDFile=
守护进程的PID文件,必须是绝对路径,强烈建议在Type=forking的情况下明确设置此选项。这个路径也不是随便写的,而是你的进程实际的PID文件路径。这样systemd才能正确的读取该文件,但是它不会写入,只是会在服务停止后删除该文件,如果存在的话。
PrivateTmp
如果把PrivateTmp的值设置成true ,服务启动时会在/tmp目录下生成类似systemd-private-433ef27ba3d46d8aac286aeb1390e1b-apache.service-RedVyu的文件夹,用于存放apache的临时文件。
RemainAfterExit
RemainAfterExit= 可设为"yes"或"no"(默认值),表示当该服务的所有进程全部退出之后,是否依然将此服务视为活动(active)状态。
Type=
设置进程的启动类型,必须是下列值之一:simple, forking, oneshot, dbus, notify, idle 之一。
- 如果设为"forking",那么表示 ExecStart= 所设定的进程将会在启动过程中使用 fork() 系统调用。这是传统UNIX守护进程的经典做法。 也就是当所有的通信渠道都已建好、启动亦已成功之后,父进程将会退出,而子进程将作为该服务的主进程继续运行。 对于此种进程,建议同时设置 PIDFile= 选项,以帮助 systemd 准确定位该服务的主进程,进而加快后继单元的启动速度。
3、设置开机自启
systemctl enable tomcat.service
4、其他命令说明
systemctl daemon-reload #重新载入修改后配置文件,让设置生效
systemctl start tomcat.service #启动服务
systemctl stop tomcat.service # 关闭tomcat
systemctl restart tomcat.service #重启服务
systemctl enable tomcat.service #设置为开机自启动
systemctl status tomcat.service #查看服务运行状态