在Linux环境中部署Tomcat服务后,若希望服务器重启后Tomcat能自动启动,不需要每次手动执行启动命令,就需要配置对应的自启动规则。不同Linux发行版使用的初始化系统不同,配置自启动的方式也有区别,目前主流的分为systemd和SysVinit两种场景。
一、基于systemd的配置方式(适用于CentOS 7+、Ubuntu 16.04+等)
systemd是目前大多数新版本Linux发行版默认使用的初始化系统,配置Tomcat自启动需要先明确Tomcat的安装路径和Java环境路径。
1. 准备前置条件
首先确认Tomcat的安装目录,假设Tomcat安装在/usr/local/tomcat,Java安装在/usr/local/jdk1.8.0_301,可以通过如下命令验证路径是否正确:
# 查看Tomcat目录是否存在 ls /usr/local/tomcat # 查看Java版本确认环境可用 /usr/local/jdk1.8.0_301/bin/java -version
2. 编写systemd服务文件
在/etc/systemd/system/目录下创建名为tomcat.service的服务文件,内容如下:
[Unit] # 服务描述 Description=Apache Tomcat Web Application Container # 在网络服务启动后启动 After=network.target [Service] # 服务类型,forking表示主进程会fork子进程后退出 Type=forking # 环境变量,指定Java和Tomcat路径 Environment=JAVA_HOME=/usr/local/jdk1.8.0_301 Environment=CATALINA_HOME=/usr/local/tomcat Environment=CATALINA_BASE=/usr/local/tomcat # 启动命令,调用Tomcat的启动脚本 ExecStart=/usr/local/tomcat/bin/startup.sh # 停止命令,调用Tomcat的停止脚本 ExecStop=/usr/local/tomcat/bin/shutdown.sh # 以root用户运行,实际生产可根据需求调整为普通用户 User=root Group=root # 重启策略,异常退出时自动重启 Restart=on-failure [Install] # 多用户模式下开机启动 WantedBy=multi-user.target
3. 加载配置并设置自启动
服务文件创建完成后,需要重新加载systemd的配置,然后启用并设置启动:
# 重新加载systemd服务配置 systemctl daemon-reload # 启用Tomcat自启动 systemctl enable tomcat # 启动Tomcat服务 systemctl start tomcat # 查看服务状态确认是否正常运行 systemctl status tomcat
如果服务状态显示active (running),说明配置成功,后续服务器重启后Tomcat会自动启动。
二、基于SysVinit的配置方式(适用于CentOS 6、Ubuntu 14.04等旧版本)
部分旧版本Linux系统使用SysVinit作为初始化系统,需要通过编写init脚本的方式配置自启动。
1. 编写init脚本
在/etc/init.d/目录下创建名为tomcat的脚本文件,内容如下:
#!/bin/bash
# chkconfig: 2345 90 10
# description: Tomcat auto start script
# 定义Tomcat和Java路径
CATALINA_HOME=/usr/local/tomcat
JAVA_HOME=/usr/local/jdk1.8.0_301
export CATALINA_HOME JAVA_HOME
# 启动函数
start() {
echo "Starting Tomcat..."
$CATALINA_HOME/bin/startup.sh
}
# 停止函数
stop() {
echo "Stopping Tomcat..."
$CATALINA_HOME/bin/shutdown.sh
}
# 重启函数
restart() {
stop
start
}
# 根据传入参数执行对应操作
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
;;
esac
exit 0
2. 设置脚本权限并添加自启动
脚本创建完成后需要赋予执行权限,然后通过chkconfig命令添加自启动规则:
# 赋予脚本执行权限 chmod +x /etc/init.d/tomcat # 添加自启动 chkconfig --add tomcat # 设置开机启动 chkconfig tomcat on # 启动服务验证 service tomcat start # 查看服务状态 service tomcat status
三、常见问题排查
- 如果启动失败,首先检查Tomcat和Java的路径是否正确,路径错误是最常见的原因
- systemd场景下如果状态显示失败,可以通过
journalctl -u tomcat查看详细日志定位问题 - SysVinit场景下如果启动报错,可以查看
/usr/local/tomcat/logs/catalina.out日志文件排查错误 - 若服务器重启后未自动启动,检查是否执行了启用自启动的命令,systemd场景确认
systemctl is-enabled tomcat返回值为enabled,SysVinit场景确认chkconfig --list tomcat对应运行级别为on