deploy: Track 部署脚本改为免 sudo(与 MOM deploy_code.sh 一致)

- 去掉所有 sudo 与 ssh -t
- 前提:服务器 /opt/Track 属主改为 dxc(一次性 chown)
This commit is contained in:
2026-09-01 18:26:53 +08:00
parent 9eb66fa29f
commit ccc5a23a77

View File

@ -1,8 +1,8 @@
#!/bin/bash #!/bin/bash
# ============================================================ # ============================================================
# Track 生产流转系统 — 增量部署脚本 # Track 生产流转系统 — 增量部署脚本(免 sudo与 MOM deploy_code.sh 一致)
# 服务器: 172.16.0.198 # 服务器: 172.16.0.198
# 路径: /opt/Track # 路径: /opt/Track (需属主 dxc见 README 一次性 chown
# 仅更新代码,不覆盖数据库 # 仅更新代码,不覆盖数据库
# ============================================================ # ============================================================
set -e set -e
@ -18,11 +18,11 @@ echo "==================================================="
# 1. 远端备份 # 1. 远端备份
echo "[1/4] 服务器备份旧代码..." echo "[1/4] 服务器备份旧代码..."
ssh -t $SERVER "sudo mkdir -p $REMOTE_BACKUP_DIR && \ ssh $SERVER "mkdir -p $REMOTE_BACKUP_DIR && \
cd $REMOTE_DIR && \ cd $REMOTE_DIR && \
echo '>> 备份当前代码...' && \ echo '>> 备份当前代码...' && \
# ★ 必须排除大目录:否则会把 backend/venv(140M)+frontend/node_modules(519M)一起打包,备份极慢 # ★ 必须排除大目录:否则会把 backend/venv(140M)+frontend/node_modules(519M)一起打包,备份极慢
sudo tar -czf $REMOTE_BACKUP_DIR/code_backup.tar.gz \ tar -czf $REMOTE_BACKUP_DIR/code_backup.tar.gz \
--exclude='backend/venv' \ --exclude='backend/venv' \
--exclude='backend/.venv' \ --exclude='backend/.venv' \
--exclude='backend/__pycache__' \ --exclude='backend/__pycache__' \
@ -33,7 +33,7 @@ ssh -t $SERVER "sudo mkdir -p $REMOTE_BACKUP_DIR && \
backend frontend docker-compose.prod.yml 2>/dev/null || true && \ backend frontend docker-compose.prod.yml 2>/dev/null || true && \
echo '>> 保留最近 3 个备份...' && \ echo '>> 保留最近 3 个备份...' && \
cd $REMOTE_DIR/backups && \ cd $REMOTE_DIR/backups && \
sudo sh -c 'ls -dt */ 2>/dev/null | tail -n +4 | xargs -I {} rm -rf {} || true'" sh -c 'ls -dt */ 2>/dev/null | tail -n +4 | xargs -I {} rm -rf {} || true'"
if [ $? -ne 0 ]; then echo "❌ 备份失败,终止!"; exit 1; fi if [ $? -ne 0 ]; then echo "❌ 备份失败,终止!"; exit 1; fi
@ -65,18 +65,18 @@ if [ $? -ne 0 ]; then echo "❌ 上传失败!"; rm -f deploy.tar.gz; exit 1; f
# 4. 替换重启 # 4. 替换重启
echo "[4/4] 服务器替换并重启..." echo "[4/4] 服务器替换并重启..."
ssh -t $SERVER "cd $REMOTE_DIR && \ ssh $SERVER "cd $REMOTE_DIR && \
echo '>> 移除旧备份...' && \ echo '>> 移除旧备份...' && \
sudo rm -rf backend_old frontend_old && \ rm -rf backend_old frontend_old && \
echo '>> 保留当前为 old...' && \ echo '>> 保留当前为 old...' && \
(sudo mv backend backend_old 2>/dev/null || true) && \ (mv backend backend_old 2>/dev/null || true) && \
(sudo mv frontend frontend_old 2>/dev/null || true) && \ (mv frontend frontend_old 2>/dev/null || true) && \
echo '>> 解压新代码...' && \ echo '>> 解压新代码...' && \
sudo mv /tmp/deploy.tar.gz . && \ mv /tmp/deploy.tar.gz . && \
sudo tar -xzf deploy.tar.gz && \ tar -xzf deploy.tar.gz && \
echo '>> 重启 Docker...' && \ echo '>> 重启 Docker...' && \
sudo docker compose -f docker-compose.prod.yml up -d --build && \ docker compose -f docker-compose.prod.yml up -d --build && \
sudo rm deploy.tar.gz && \ rm deploy.tar.gz && \
echo '>> ✅ 部署完成!'" echo '>> ✅ 部署完成!'"
rm -f deploy.tar.gz rm -f deploy.tar.gz