debian

Debian JSP项目如何实现自动化部署

小樊
41
2025-11-19 03:08:21
栏目: 编程语言

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.' }
  }
}

四 可选优化与热部署

0
看了该问题的人还看了