一、概述
最近遇到一个运维需求,为了解决服务器断电、崩溃等意外后重启导致服务不能访问的问题,需要将Tomcat设置为开机自启动。
总体思路是:将tomcat配置成系统服务,再将服务配置成开机自启动。
二、步骤
2.1 安装tomcat8
过程略。
2.2 创建tomcat8服务文件:
vi /usr/lib/systemd/system/tomcat.service。
内容为:
[Unit]
Description=tomcat service
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecStop=/usr/local/tomcat/bin/shutdown.sh
PrivateTmp=true
[Install]
WantedBy=multi-user.target
说明:
ExecStart、ExecStop分别为tomcat安装路径下的启动、关闭脚本文件。
2.3 配置tomcat开机启动:
- 设置tomcat开机启动:
systemctl enable tomcat
- 修改tomcat.service文件后需要执行下面命令使其生效:
systemctl daemon-reload
2.4 其他命令
查看全部服务命令:
systemctl list-unit-files --type service
查看服务
systemctl status name.service
启动服务
systemctl start name.service
停止服务
systemctl stop name.service
重启服务
systemctl restart name.service增加开机启动
systemctl enable name.service
删除开机启动
systemctl disable name.service
2.5 验证服务是否配置成功
重启服务器,执行命令:
ps -aux | grep tomcat
如果启动失败,查看tomcat状态:
systemctl status tomcat
三、遇到问题
- tomcat开机自启动失败
tomcat.service - tomcat
Loaded: loaded (/usr/lib/systemd/system/tomcat.service; disabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Wed 2021-03-16 14:23:32 EDT; 3min 33s ago
Process: 1402 ExecStart=/root/apache-tomcat-8.0.53/bin/startup.sh (code=exited, status=1/FAILURE)
Main PID: 1402 (code=exited, status=1/FAILURE)
localhost.localdomain systemd[1]: Starting tomcat...
localhost.localdomain startup.sh[1402]: Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
localhost.localdomain startup.sh[1402]: At least one of these environment variable is needed to run this program
localhost.localdomain systemd[1]: tomcat.service: main process exited, code=exited, status=1/FAILURE
localhost.localdomain systemd[1]: Failed to start tomcat.
localhost.localdomain systemd[1]: Unit tomcat.service entered failed state.
localhost.localdomain systemd[1]: tomcat.service failed.
关键句:
Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
显然是java环境变量没有生效或者被识别。
- 查看java环境变量
java -version
解决方法
设置环境变量, vi /usr/local/tomcat/bin/catalina.sh,添加:
# JDK
export JAVA_HOME=/usr/local/java/jdk1.8.0_171
export JRE_HOME=/usr/local/java/jdk1.8.0_171/jre