如何通过Linux Tomcat实现自动化部署,轻松提升工作效率?
- 内容介绍
- 文章标签
- 相关推荐
痛点在日常运维中。手动复制 WAR 包、清理缓存、重启 Tomcat 的重复操作耗时耗力,易出错导致服务中断;缺乏统一的自动化流程会让开发与运维团队协作变得低效。
一、自动化部署的必要性
因为项目迭代加速,频繁发布新版本已成为常态。每一次手工部署都可能出现方法错误、权限不足或忘记重启等失误,导致服务不可用或日志堆积。通过自动化部署,可将这些操作标准化、脚本化。显著降低人为错误,提高发布速度。
二、Tomcat 在 Linux 上实现开机自启
1. 传统 init.d 脚本
# /etc/init.d/tomcat
#!/bin/sh
# chkconfig: - 85 15
# description: Tomcat service
start {
$CATALINA_HOME/bin/startup.sh
}
stop {
$CATALINA_HOME/bin/shutdown.sh
}
restart {
stop
start
}
case "$1" in
start) start;,stop) stop;,restart) restart;,话说回来,esac
设置执行权限并注册服务:
chmod +x /etc/init.d/tomcat
chkconfig --add tomcat
chkconfig tomcat on
2. Systemd
# /etc/systemd/system/tomcat.service
Description=Apache Tomcat Web Application Container
After=network.target
Type=forking
Environment=JA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
Environment=CATALINA_PID=/opt/tomcat/temp/tomcat.pid
Environment=CATALINA_HOME=/opt/tomcat
Environment=CATALINA_BASE=/opt/tomcat
ExecStart=$CATALINA_HOME/bin/startup.sh
ExecStop=$CATALINA_HOME/bin/shutdown.sh
User=tomcatuser
Group=tomcatgroup
WantedBy=multi-user.target
开启开机自启的观点是。
# systemctl daemon-reload # reload unit files after editing
systemctl enable tomcat # 开机启动
systemctl start tomcat # 开启服务
systemctl status tomcat # 检查状态
三、一键部署/升级脚本示例
该脚本完成停止 Tomcat、备份旧 WAR、复制新 WAR 并启动 Tomcat 的全流程。适合快速迭代场景,
# deploy.sh – 一键部署脚本
#!/bin/bash
# 项目方法与 Tomcat 方法请自行替换
PROJECT_PATH=/home/ubuntu/myapp/dist
TOMCAT_PATH=/opt/tomcat
# 停止 Tomcat 服务
$TOMCAT_PATH/bin/shutdown.sh
# 备份旧应用
mkdir -p $TOMCAT_PATH/backups/$
cp -r $TOMCAT_PATH/webapps/* $TOMCAT_PATH/backups/$/
# 清空 webapps 并复制新包
rm -rf $TOMCAT_PATH/webapps/*
cp -r $PROJECT_PATH/* $TOMCAT_PATH/webapps/
# 启动 Tomcat 服务
$TOMCAT_PATH/bin/startup.sh
echo "部署完成 – $"> $TOMCAT_PATH/logs/deploy.log
使用步骤
- chmod +x deploy.sh
- ./deploy.sh — 执行一次完整的停服–备份–升级–启动流程。
- 可将其加入 cron 或 CI/CD 流水线,实现持续交付。
四、Maven TomCat 插件部署方式
Maven 的 tomc7-maven-plugin 可以在建立阶段直接把应用推送到远程 TomCat Manager,实现“建立即发布”。这对需要快速迭代而且已配置好 Manager 权限的项目非常友好。
org.apache.tomcat.maven
tomc7-maven-plugin
2.4
http://your-tomc-server:8080/manager/text
tomcatsrv
/${project.artifactId}
true
UTF-8
-
Maven 首次打包并发布:
Mvn clean package tomc7:deploy -
Maven 热更新:
Mvn tomc7:redeploy - CICD 集成示例:
五、Jenkins 流水线编排示例
CICD 环境下通过 Jenkinsfile 可以实现从代码拉取到打包再到自动部署的全链路流水线。话说回来,
关键要点
- 脚本化:把所有手工步骤写入脚本,保证可复用与回滚。
- 权限管理:使用非 root 使用者运行。并确保目录拥有相同归属,以免因权限导致失败。老实说,
- 健康检查:在流水线里添加健康检查或监控告警。及时发现异常,老实说,
- 日志追踪:统一记录日志位置。例如把 deploy.log 写入固定目录,方便排查。
- 版本控制:保持脚本与 pom.xml 在同一 repo 内,配合 Git 标签做版本回滚。
- 安全审计:使用 HTTPS 与基本认证保护 Manager 接口;不要在公开仓库暴露凭据,
六、 – 从“敲命令”到“点击一键”效率翻倍
。痛点在日常运维中。手动复制 WAR 包、清理缓存、重启 Tomcat 的重复操作耗时耗力,易出错导致服务中断;缺乏统一的自动化流程会让开发与运维团队协作变得低效。
一、自动化部署的必要性
因为项目迭代加速,频繁发布新版本已成为常态。每一次手工部署都可能出现方法错误、权限不足或忘记重启等失误,导致服务不可用或日志堆积。通过自动化部署,可将这些操作标准化、脚本化。显著降低人为错误,提高发布速度。
二、Tomcat 在 Linux 上实现开机自启
1. 传统 init.d 脚本
# /etc/init.d/tomcat
#!/bin/sh
# chkconfig: - 85 15
# description: Tomcat service
start {
$CATALINA_HOME/bin/startup.sh
}
stop {
$CATALINA_HOME/bin/shutdown.sh
}
restart {
stop
start
}
case "$1" in
start) start;,stop) stop;,restart) restart;,话说回来,esac
设置执行权限并注册服务:
chmod +x /etc/init.d/tomcat
chkconfig --add tomcat
chkconfig tomcat on
2. Systemd
# /etc/systemd/system/tomcat.service
Description=Apache Tomcat Web Application Container
After=network.target
Type=forking
Environment=JA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
Environment=CATALINA_PID=/opt/tomcat/temp/tomcat.pid
Environment=CATALINA_HOME=/opt/tomcat
Environment=CATALINA_BASE=/opt/tomcat
ExecStart=$CATALINA_HOME/bin/startup.sh
ExecStop=$CATALINA_HOME/bin/shutdown.sh
User=tomcatuser
Group=tomcatgroup
WantedBy=multi-user.target
开启开机自启的观点是。
# systemctl daemon-reload # reload unit files after editing
systemctl enable tomcat # 开机启动
systemctl start tomcat # 开启服务
systemctl status tomcat # 检查状态
三、一键部署/升级脚本示例
该脚本完成停止 Tomcat、备份旧 WAR、复制新 WAR 并启动 Tomcat 的全流程。适合快速迭代场景,
# deploy.sh – 一键部署脚本
#!/bin/bash
# 项目方法与 Tomcat 方法请自行替换
PROJECT_PATH=/home/ubuntu/myapp/dist
TOMCAT_PATH=/opt/tomcat
# 停止 Tomcat 服务
$TOMCAT_PATH/bin/shutdown.sh
# 备份旧应用
mkdir -p $TOMCAT_PATH/backups/$
cp -r $TOMCAT_PATH/webapps/* $TOMCAT_PATH/backups/$/
# 清空 webapps 并复制新包
rm -rf $TOMCAT_PATH/webapps/*
cp -r $PROJECT_PATH/* $TOMCAT_PATH/webapps/
# 启动 Tomcat 服务
$TOMCAT_PATH/bin/startup.sh
echo "部署完成 – $"> $TOMCAT_PATH/logs/deploy.log
使用步骤
- chmod +x deploy.sh
- ./deploy.sh — 执行一次完整的停服–备份–升级–启动流程。
- 可将其加入 cron 或 CI/CD 流水线,实现持续交付。
四、Maven TomCat 插件部署方式
Maven 的 tomc7-maven-plugin 可以在建立阶段直接把应用推送到远程 TomCat Manager,实现“建立即发布”。这对需要快速迭代而且已配置好 Manager 权限的项目非常友好。
org.apache.tomcat.maven
tomc7-maven-plugin
2.4
http://your-tomc-server:8080/manager/text
tomcatsrv
/${project.artifactId}
true
UTF-8
-
Maven 首次打包并发布:
Mvn clean package tomc7:deploy -
Maven 热更新:
Mvn tomc7:redeploy - CICD 集成示例:
五、Jenkins 流水线编排示例
CICD 环境下通过 Jenkinsfile 可以实现从代码拉取到打包再到自动部署的全链路流水线。话说回来,
关键要点
- 脚本化:把所有手工步骤写入脚本,保证可复用与回滚。
- 权限管理:使用非 root 使用者运行。并确保目录拥有相同归属,以免因权限导致失败。老实说,
- 健康检查:在流水线里添加健康检查或监控告警。及时发现异常,老实说,
- 日志追踪:统一记录日志位置。例如把 deploy.log 写入固定目录,方便排查。
- 版本控制:保持脚本与 pom.xml 在同一 repo 内,配合 Git 标签做版本回滚。
- 安全审计:使用 HTTPS 与基本认证保护 Manager 接口;不要在公开仓库暴露凭据,

