使用systemctl管理tomcat多实例
文章发布较早,内容可能过时,阅读注意甄别。
之前因为遭遇过测试服务器断电,然后启动之后所有的 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"
1
2
3
2
3
# 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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
注意
:Environment=”JAVA_HOME=/usr/local/jdk1.8.0_192″ 这里要配置环境变量,/etc/profile 中的配置在系统服务中并不生效。
# 4,验证配置。
操作前,先加载刚刚添加的配置。
$ systemctl daemon-reload
1
加入开机自启动。
[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.
1
2
2
启动服务。
$ systemctl start tomcat
1
查看服务状态。
[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.
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
然后重启一下主机,测试一下开机自启是否有效,经过测试,我这里是可以的。
# 附:如何使用 systemctl 管理 tomcat 多实例?
日常生产中,一台服务器当中部署多个 tomcat 实例是非常常见的情况,所以这里拓展了解一下多实例配置的方式。
其实多实例配置的方式跟上边是一样的,只不过把对应的内容区分开即可。
# 1,配置多实例。
首先把刚刚配置好的 tomcat 复制一份。
$ cd /usr/local/
$ cp -a tomcat tomcat_app
1
2
2
然后更改 config/server.xml 里的端口,这个就不细说了。
# 2,重复上边的配置。
先修改 pid 文件路径。
$ vim tomcat_app/bin/catalina.sh
修改为如下情况:
CATALINA_PID="/usr/local/tomcat_app/tomcat.pid"
1
2
3
2
3
拷贝启动配置文件。
$ cd /usr/lib/systemd/system
$ cp tomcat.service tomcat_app.service
1
2
2
这个地方应该注意下,系统通过 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
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
最后验证一下。
$systemctl daemon-reload
$systemctl enable tomcat_app
$systemctl start tomcat_app
$systemctl status tomcat_app
1
2
3
4
2
3
4
这样通过 systemctl 管理单台主机上的 tomcat 多实例就轻松实现了。
上次更新: 2024/11/19, 23:11:42