feat: 添加自动化部署方案(Docker + 远程服务器两套方案)
- 新增 deploy/docker/:Docker 本机模拟部署,含 Dockerfile、docker-compose、deploy.sh 一键脚本 - 新增 deploy/remote/:远程服务器部署,含 SSH 自动上传、重启、回滚脚本 - 新增 deploy/README.md:完整使用手册,含现状分析、落地调整工作清单、命令速查 - 新增 build.sh/start.sh:本地构建和启动脚本(含飞书通知) - 新增前端 .env.docker 环境配置,API 指向测试服务器 - 前端 package.json 新增 build-docker 命令 - 更新 .gitignore:排除 IDE 配置、SQL 数据、Docker 敏感文件 - 前端 UI 样式优化(多个页面组件) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
15
deploy/remote/scripts/restart-front.sh
Executable file
15
deploy/remote/scripts/restart-front.sh
Executable file
@@ -0,0 +1,15 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# 重新加载前端(Nginx reload)
|
||||
|
||||
echo "[INFO] 测试 Nginx 配置..."
|
||||
nginx -t 2>&1
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "[ERROR] Nginx 配置有误"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "[INFO] 重新加载 Nginx..."
|
||||
nginx -s reload
|
||||
|
||||
echo "[INFO] Nginx 已重新加载"
|
||||
37
deploy/remote/scripts/restart-task.sh
Executable file
37
deploy/remote/scripts/restart-task.sh
Executable file
@@ -0,0 +1,37 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# 重启 Task 服务(Spring Boot JAR)
|
||||
#
|
||||
# 用法: restart-task.sh [profile] [jvm_opts]
|
||||
|
||||
TASK_DIR="/opt/smartclean/task"
|
||||
JAR_FILE="$TASK_DIR/task.jar"
|
||||
PID_FILE="$TASK_DIR/task.pid"
|
||||
LOG_FILE="$TASK_DIR/logs/task.log"
|
||||
PROFILE="${1:-prod}"
|
||||
JVM_OPTS="${2:--Xms256m -Xmx512m}"
|
||||
|
||||
# 停止旧进程
|
||||
if [ -f "$PID_FILE" ]; then
|
||||
OLD_PID=$(cat "$PID_FILE")
|
||||
if kill -0 "$OLD_PID" 2>/dev/null; then
|
||||
echo "[INFO] 停止旧进程 PID=$OLD_PID"
|
||||
kill "$OLD_PID"
|
||||
sleep 3
|
||||
if kill -0 "$OLD_PID" 2>/dev/null; then
|
||||
echo "[WARN] 进程未正常退出,强制终止"
|
||||
kill -9 "$OLD_PID"
|
||||
fi
|
||||
fi
|
||||
rm -f "$PID_FILE"
|
||||
fi
|
||||
|
||||
# 启动新进程
|
||||
echo "[INFO] 启动 Task 服务 (profile=$PROFILE)..."
|
||||
nohup java $JVM_OPTS \
|
||||
-jar "$JAR_FILE" \
|
||||
--spring.profiles.active=$PROFILE \
|
||||
> "$LOG_FILE" 2>&1 &
|
||||
|
||||
echo $! > "$PID_FILE"
|
||||
echo "[INFO] Task 服务已启动, PID=$(cat "$PID_FILE")"
|
||||
26
deploy/remote/scripts/restart-web.sh
Executable file
26
deploy/remote/scripts/restart-web.sh
Executable file
@@ -0,0 +1,26 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# 重启 Web 服务(Tomcat)
|
||||
|
||||
TOMCAT_HOME="/opt/smartclean/web/tomcat"
|
||||
|
||||
echo "[INFO] 停止 Tomcat..."
|
||||
"$TOMCAT_HOME/bin/shutdown.sh" 2>/dev/null
|
||||
sleep 3
|
||||
|
||||
# 确保进程已停
|
||||
TOMCAT_PID=$(ps -ef | grep "[c]atalina" | awk '{print $2}')
|
||||
if [ -n "$TOMCAT_PID" ]; then
|
||||
echo "[WARN] Tomcat 未正常关闭,强制终止 PID=$TOMCAT_PID"
|
||||
kill -9 $TOMCAT_PID
|
||||
sleep 1
|
||||
fi
|
||||
|
||||
# 清理旧的解压目录,保留 WAR
|
||||
rm -rf "$TOMCAT_HOME/webapps/ROOT"
|
||||
rm -rf "$TOMCAT_HOME/work/Catalina"
|
||||
|
||||
echo "[INFO] 启动 Tomcat..."
|
||||
"$TOMCAT_HOME/bin/startup.sh"
|
||||
|
||||
echo "[INFO] Tomcat 已启动"
|
||||
14
deploy/remote/scripts/setup.sh
Executable file
14
deploy/remote/scripts/setup.sh
Executable file
@@ -0,0 +1,14 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# 服务器初始化脚本(仅需执行一次)
|
||||
# 在远程服务器上创建标准目录结构
|
||||
|
||||
DEPLOY_BASE="/opt/smartclean"
|
||||
|
||||
echo "[INFO] 创建目录结构..."
|
||||
mkdir -p "$DEPLOY_BASE"/{web/logs,task/logs,front,backups,scripts}
|
||||
|
||||
echo "[INFO] 目录结构:"
|
||||
find "$DEPLOY_BASE" -maxdepth 2 -type d | sort
|
||||
|
||||
echo "[INFO] 服务器初始化完成"
|
||||
Reference in New Issue
Block a user