之前因为遭遇过测试服务器断电,然后启动之后所有的Tomcat服务都没有开机自启,所以就需要一台机器一台机器跑过去进行手动操作一遍,非常费劲儿,后来也研究过通过将启动命令加入开启自启脚本里边进行启动,效果均不理想。
现在,了解到在CentOS7当中通过systemctl管理Tomcat,不仅方便,而且加入开机自启之后,效果也非常的好,今天就来配置一下这个东东。
1,环境说明。
- 主机系统:CentOS Linux release 7.3.1611 (Core)
- jdk版本:java version “1.8.0_192”
- tomcat版本:Apache Tomcat/8.5.34
2,为tomcat配置pid。
$ vim /usr/local/tomcat/bin/catalina.sh
在111行添加如下内容:
CATALINA_PID="/usr/local/tomcat/tomcat.pid"
3,创建tomcat.service文件。
$ cat > /usr/lib/systemd/system/tomcat.service << "EOF"
[Unit]
Description=Tomcat
After=network.target
[Service]
Type=forking
Environment="JAVA_HOME=/usr/local/jdk1.8.0_192"
PIDFile=/usr/local/tomcat/tomcat.pid
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
EOF
注意
:Environment=”JAVA_HOME=/usr/local/jdk1.8.0_192″ 这里要配置环境变量,/etc/profile中的配置在系统服务中并不生效。4,验证配置。
操作前,先加载刚刚添加的配置。
$ systemctl daemon-reload
加入开机自启动。
[root@moban system]$ systemctl enable tomcat
Created symlink from /etc/systemd/system/multi-user.target.wants/tomcat.service to /usr/lib/systemd/system/tomcat.service.
启动服务。
$ systemctl start tomcat
查看服务状态。
[root@moban tomcat]$ systemctl status tomcat
● tomcat.service - Tomcat
Loaded: loaded (/usr/lib/systemd/system/tomcat.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2019-02-18 13:52:34 CST; 4s ago
Process: 13503 ExecStart=/usr/local/tomcat/bin/startup.sh (code=exited, status=0/SUCCESS)
Main PID: 13512 (java)
CGroup: /system.slice/tomcat.service
└─13512 /usr/local/jdk1.8.0_192/bin/java -Dnop -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.p...
Feb 18 13:52:34 moban systemd[1]: Starting Tomcat...
Feb 18 13:52:34 moban startup.sh[13503]: Tomcat started.
Feb 18 13:52:34 moban systemd[1]: Started Tomcat.
然后重启一下主机,测试一下开机自启是否有效,经过测试,我这里是可以的。
附:如何使用systemctl管理tomcat多实例?
日常生产中,一台服务器当中部署多个tomcat实例是非常常见的情况,所以这里拓展了解一下多实例配置的方式。
其实多实例配置的方式跟上边是一样的,只不过把对应的内容区分开即可。
1,配置多实例。
首先把刚刚配置好的tomcat复制一份。
$ cd /usr/local/
$ cp -a tomcat tomcat_app
然后更改config/server.xml里的端口,这个就不细说了。
2,重复上边的配置。
先修改pid文件路径。
$ vim tomcat_app/bin/catalina.sh
修改为如下情况:
CATALINA_PID="/usr/local/tomcat_app/tomcat.pid"
拷贝启动配置文件。
$ cd /usr/lib/systemd/system
$ cp tomcat.service tomcat_app.service
这个地方应该注意下,系统通过systemctl管理服务的时候,服务的名称就是上边定义的文件名。
简单更改一下里边对应的内容。修改之后如下:
[Unit]
Description=Tomcat
After=network.target
[Service]
Type=forking
Environment="JAVA_HOME=/usr/local/jdk1.8.0_192"
PIDFile=/usr/local/tomcat_app/tomcat.pid
ExecStart=/usr/local/tomcat_app/bin/startup.sh
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
最后验证一下。
$systemctl daemon-reload
$systemctl enable tomcat_app
$systemctl start tomcat_app
$systemctl status tomcat_app
这样通过systemctl管理单台主机上的tomcat多实例就轻松实现了。

扫码订阅本站,第一时间获得更新
微信扫描二维码,订阅我们网站的动态,另外不定时发送WordPress小技巧,你可以随时退订,欢迎订阅哦~