发表于: 2025-05-13 20:43:52
0 4
今天完成的事情:(一定要写非常细致的内容,比如说学会了盒子模型,了解了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原有代码的功能
遇到的问题:(遇到什么困难,怎么解决的)
收获:(通过今天的学习,学到了什么知识)
评论