[教程]CentOS 下将 tomcat 安装为系统服务

本教程假设 tomcat 安装在 /usr/local/tomcat 目录下,JDK 安装到 /usr/local/tomcat/jdk 目录下,如果是其它目录,将其替换(如果使用openJDK,则替换为对应的 open JDK 目录,比如 /usr/lib/jvm/jre)。另外,本文不做任何保证。

1、执行以下脚本准备 tomcat 安装为服务需要的东西:
→ jsvc 是用来将 Java 程序做为服务启动的一个工具,启动 tomcat 做为服务时,需要它作为启动器
→ rngd 是用来避免 tomcat 启动时,由于熵值不够,造成长时间停滞的问题

yum install jsvc rng-tools -y
systemctl enable rngd

2、添加 tomcat 账号和组,以避免 tomcat 运行在管理员账号下。

groupadd tomcat
useradd -M -s /sbin/nologin -g tomcat tomcat

3、修改 tomcat 的所有者为 tomcat

chown tomcat:tomcat -R /usr/local/tomcat

4、允许 jsvc 创建 1024 以下的端口

setcap cap_net_bind_service=+eip /usr/bin/jsvc

5、编写 tomcat 服务,并保存为 /lib/systemd/system/tomcat.service,注意环境变量的设置要对应到正确的路径下(环境变量的初始化也可以放到 /usr/local/tomcat/bin/setenv.sh 中,daemon.sh 会自动调用它来初始化相关变量的值)。

[Unit]
Description=Apache tomcat
After=network.target remote-fs.target nss-lookup.target syslog.target
Requires=rngd.service
[Service]
Type=forking
PIDFile=/usr/local/tomcat/tomcat.pid
ExecStart=/usr/local/tomcat/bin/daemon.sh start
ExecStop=/usr/local/tomcat/bin/daemon.sh stop
User=tomcat
Group=tomcat
PrivateTmp=true
Environment="JSVC=/usr/bin/jsvc" "JAVA_HOME=/usr/local/tomcat/jdk" "CATALINA_PID=/usr/local/tomcat/tomcat.pid"  "SERVICE_START_WAIT_TIME=120"
[Install]
WantedBy=multi-user.target

6、重新加载服务并启用服务

systemctl daemon-reload
systemctl enable tomcat.service
systemctl start tomcat.service

7、如果没有问题,重新启动计算机,然后运行下面的指令检查 tomcat 是否运行正常

ps aux |grep tomcat

分享到: