Debian 上实现 JSP 项目自动化部署
一 架构与准备
二 方案一 脚本化自动部署到 Tomcat
#!/usr/bin/env bash
set -e
APP_NAME="your-project"
WAR_FILE="target/${APP_NAME}.war"
TOMCAT_WEBAPPS="/var/lib/tomcat9/webapps" # Tomcat 9 默认路径
TOMCAT_USER="tomcat" # 运行 Tomcat 的系统用户
TARGET_HOST="tomcat-server" # 目标主机(或 localhost)
# 1) 拉取代码
git pull origin main
# 2) 构建
mvn clean package -DskipTests
# 3) 仅当 WAR 生成成功才继续
if [[ ! -f "$WAR_FILE" ]]; then
echo "ERROR: $WAR_FILE not found!"
exit 1
fi
# 4) 拷贝到 Tomcat webapps(使用 rsync 保证原子性与权限)
rsync -avz --chown="$TOMCAT_USER:$TOMCAT_USER" "$WAR_FILE" "$TARGET_HOST:$TOMCAT_WEBAPPS/"
# 5) 可选:重启 Tomcat(生产环境可改为优雅滚动升级)
ssh "$TARGET_HOST" "sudo systemctl restart tomcat9"
echo "Deployed $WAR_FILE to $TARGET_HOST:$TOMCAT_WEBAPPS/"
三 方案二 Jenkins 流水线自动化
pipeline {
agent any
tools {
maven 'Maven-3' // 需在 Jenkins 全局工具配置中定义
jdk 'OpenJDK-11'
}
stages {
stage('Checkout') {
steps { git branch: 'main', url: 'https://github.com/your-org/your-jsp-project.git' }
}
stage('Build') {
steps { sh 'mvn clean package -DskipTests' }
}
stage('Deploy') {
steps {
sh 'scp target/your-project.war user@tomcat-server:/var/lib/tomcat9/webapps/'
sh 'ssh user@tomcat-server "sudo systemctl restart tomcat9"'
}
}
}
post {
success { echo 'Deploy succeeded.' }
failure { echo 'Deploy failed.' }
}
}
四 可选优化与热部署