发表于: 2025-05-13 20:43:52

0 5


今天完成的事情:(一定要写非常细致的内容,比如说学会了盒子模型,了解了Margin)

部署代码

#!/bin/bash
# ---------------------------------------------------
# 全自动Git代码部署脚本(仅部署WAR版)
# 版本:2.1
# 修改重点:
# 1. 移除所有清理逻辑,仅部署WAR包
# 2. 保留webapps目录原有内容
# ---------------------------------------------------

# ================= 配置区 =================
TOMCAT_HOME="/usr/local/apache-tomcat-9.0.84"
PROJECT_DIR="$TOMCAT_HOME/project"          # 代码存放目录
DEPLOY_DIR="$TOMCAT_HOME/webapps"           # 部署目录
GIT_REPO="https://gitee.com/cui-xinliang/test.git"
GIT_BRANCH="spring"                         # 分支名称
TOMCAT_USER="tomcat"                        # 运行用户

# ================= 初始化检查 =================
echo "🔍 初始化检查..."
[ "$(id -u)" -eq 0 ] || { echo "❌ 请使用root或sudo运行"; exit 1; }

# 验证Tomcat安装
[ -f "$TOMCAT_HOME/bin/startup.sh" ] || {
 echo "❌ Tomcat安装不完整,缺少启动脚本"
 exit 1
}

# 检查tomcat用户是否存在
if ! id "$TOMCAT_USER" &>/dev/null; then
 echo "⚠️ 创建Tomcat运行用户..."
 useradd -r -s /bin/false "$TOMCAT_USER" || {
   echo "❌ 无法创建用户 $TOMCAT_USER"
   exit 1
 }
fi

# ================= 修复目录权限 =================
echo "🛠️ 修复目录权限..."
chown -R "$TOMCAT_USER":"$TOMCAT_USER" "$TOMCAT_HOME" || {
 echo "❌ 无法修改目录属主"
 exit 1
}

# 关键目录权限设置
dirs=("bin" "conf" "lib" "logs" "temp" "webapps" "work")
for dir in "${dirs[@]}"; do
 chmod 755 "$TOMCAT_HOME/$dir" || {
   echo "❌ 无法设置 $dir 目录权限"
   exit 1
 }
done

# ================= 代码管理 =================
echo "🔄 获取代码..."
mkdir -p "$PROJECT_DIR"
cd "$PROJECT_DIR" || exit 1

if [ ! -d ".git" ]; then
 sudo -u "$TOMCAT_USER" git clone -b "$GIT_BRANCH" "$GIT_REPO" . || {
   echo "❌ Git克隆失败!请检查:"
   echo "1. 网络连接 2. 仓库权限"
   exit 1
 }
else
 sudo -u "$TOMCAT_USER" git pull origin "$GIT_BRANCH" || {
   echo "❌ 代码更新失败!"
   exit 1
 }
fi

# ================= 构建WAR包 =================
echo "🔨 构建WAR包..."
[ -f "pom.xml" ] || {
 echo "❌ 项目目录中未找到pom.xml"
 exit 1
}

sudo -u "$TOMCAT_USER" /opt/apache-maven-3.8.8/bin/mvn clean package -DskipTests || {
 echo "❌ 构建失败!可能原因:"
 echo "1. JDK版本不匹配 2. 依赖下载失败"
 exit 1
}


# ================= 部署流程 =================
echo "📦 部署WAR包到webapps..."
# 确保部署目录存在
mkdir -p "$DEPLOY_DIR"
chown "$TOMCAT_USER":"$TOMCAT_USER" "$DEPLOY_DIR"

# 查找WAR包
WAR_FILE=$(find target -name '*.war' | head -1)
[ -f "$WAR_FILE" ] || {
 echo "❌ 未找到生成的WAR文件!"
 echo "👉 target目录内容:"
 ls -l target/
 exit 1
}
#获取WAR文件名
WAR_BASENAME=$(basename "$WAR_FILE")
# 仅部署新WAR包(不删除其他文件)
 echo "ℹ️ 正在部署 $WAR_FILE$DEPLOY_DIR/"
 sudo -u "$TOMCAT_USER" cp -v "$WAR_FILE" "$DEPLOY_DIR/" || {
 echo "❌ 复制WAR文件失败!"
 exit 1
}

# ================= 服务控制 =================
echo "🔄 重启Tomcat..."
# 停止服务
sudo -u "$TOMCAT_USER" "$TOMCAT_HOME/bin/shutdown.sh" 2>/dev/null
sudo -u "$TOMCAT_USER" pkill -9 -f catalina 2>/dev/null
sleep 3

# 启动服务
echo "🚀 启动Tomcat服务..."
sudo -u "$TOMCAT_USER" "$TOMCAT_HOME/bin/startup.sh" || {
 echo "❌ 启动失败!最后错误:"
 tail -n50 "$TOMCAT_HOME/logs/catalina.out"
 exit 1
}

# ================= 验证部署 =================
echo "⏳ 验证部署(等待30秒)..."
sleep 30

if curl -sSf --connect-timeout 15 "http://localhost:8080" >/dev/null; then
 echo -e "\n✅ 部署成功!访问地址:"
 echo "   http://$(curl -s ifconfig.me):8080"
 echo "   🕒 最后部署时间: $(date)"
else
 echo -e "\n❌ 服务未响应!请检查:"
 echo "1. 查看实时日志: tail -f $TOMCAT_HOME/logs/catalina.out"
 echo "2. 检查WAR包: ls -l $DEPLOY_DIR/"
 echo "3. 检查进程: ps aux | grep tomcat"
 exit 1
fi

明天计划的事情:(一定要写非常细致的内容)

添加删除webapps原有代码的功能

遇到的问题:(遇到什么困难,怎么解决的)

收获:(通过今天的学习,学到了什么知识)



返回列表 返回列表
评论

    分享到