目录
- 前言
- 一、系统环境
- 二、配置步骤
- step1 了解环境的安装路径
- step2 配置生成tomcat.pid文件
- step3 配置tomcat.service文件
- 三、测试systemctl命令管理Tomcat服务
- 3.1 systemctl命令启动Tomcat服务
- 3.2 systemctl命令查看Tomcat服务
- 3.3 systemctl命令关闭Tomcat服务
- 3.4 systemctl命令重启Tomcat服务
- 3.5 systemctl命令开启Tomcat服务开机自启
- 3.6 systemctl命令关闭Tomcat服务开机自启
- 四、问题分析
- 参考文献
- 总结
前言
本篇文章介绍如何将Tomcat服务配置到系统服务,实现使用systemctl命令管理Tomcat服务。
一、系统环境
- 虚拟机版本:VMware® Workstation 15 Pro
- Linux镜像文件:CentOS-7-x86_64-Minimal-1804.iso
- 主机系统:Windows 11 家庭中文版
- 主机系统类型:64 位操作系统, 基于 x64 的处理器
- 远程连接工具:MobaXterm中文版本
二、配置步骤
step1 了解环境的安装路径
JDK安装路径:/export/server/jdk
Tomcat安装路径:/export/server/tomcat
读者根据自己的安装路径进行配置
step2 配置生成tomcat.pid文件
为了配置tomcat.service文件的[Service]区块的PIDFile字段,需要配置启动Tomcat时自动生成tomcat.pid文件,此文件保存的是运行Tomcat时的进程号。
vi /export/server/tomcat/bin/catalina.sh
添加以下内容
CATALINA_PID=$CATALINA_BASE/tomcat.pid
启动Tomcat服务,其自动会在tomcat的安装路径生成tomcat.pid文件(这里是/export/server/tomcat/)
当然,可以自定义生成路径,例如CATALINA_PID=自定义路径
step3 配置tomcat.service文件
在/usr/lib/systemd/system/目录下新建tomcat.service文件
vi /usr/lib/systemd/system/tomcat.service
添加以下内容
[Unit]
Description=Tomcat service
After=network.target
[Service]
Type=forking
Environment="JAVA_HOME=/export/server/jdk/"
User=tomcat
Group=tomcat
PIDFile=/export/server/tomcat/tomcat.pid
ExecStart=/export/server/tomcat/bin/startup.sh
ExecStop=/export/server/tomcat/bin/shutdown.sh
ExecReload=/usr/bin/kill -s SIGHUP $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
tomcat.service文件分为三个区块,[Unit]、[Service]、[Install]
-
[Unit]区块:定义服务的启动顺序和服务的依赖关系
Description:服务的描述字段
After:服务的启动顺序。例如After=network.target表示系统网络服务启动后再启动服务 -
[Service]区块:定义服务的启动行为
Type:服务的启动类型
Type=simple(默认), 表示以ExecStart字段启动的进程为主进程
Type=forking , 表示以ExecStart字段启动时,创建一个子进程并作为服务的主进程(后台运行)
Type=notify , 表示启动服务结束后发出通知信号,Systemd再启动其他服务
Environment:服务的运行的环境,需要借助JDK的环境运行。(此字段必须配置)
User:服务的所属用户
Group:服务的所属用户组
PIDFile:服务的pid文件
ExecStart:启动服务的程序文件(必须写绝对路径)
ExecStop:关闭服务的程序文件(必须写绝对路径)
ExecReload:服务重启的程序文件,这里借助系统提供的kill命令实现服务的重启
PrivateTmp:服务是否创建临时的私有空间 -
[Install]区块:定义如何安装这个配置文件,即怎样做到开机启动
WantedBy:服务依赖的 Target
配置完成后,重载系统守护进程
systemctl daemon-reload
三、测试systemctl命令管理Tomcat服务
3.1 systemctl命令启动Tomcat服务
systemctl start tomcat.service
3.2 systemctl命令查看Tomcat服务
systemctl status tomcat.service
3.3 systemctl命令关闭Tomcat服务
systemctl stop tomcat.service
3.4 systemctl命令重启Tomcat服务
systemctl restart tomcat.service
3.5 systemctl命令开启Tomcat服务开机自启
systemctl enable tomcat.service
3.6 systemctl命令关闭Tomcat服务开机自启
systemctl disable tomcat.service
四、问题分析
出现这个问题的原因是配置tomcat.service的时候没有配置好[Service]区块的Environment字段
参考文献
[1] https://blog.csdn.net/cshongye/article/details/120261915
[2] https://blog.csdn.net/arv002/article/details/121779213
总结
道阻且长,行则将至!