Files
zsglpt/deploy_to_production.sh
Yu Yon b5344cd55e 修复所有bug并添加新功能
- 修复添加账号按钮无反应问题
- 添加账号备注字段(可选)
- 添加账号设置按钮(修改密码/备注)
- 修复用户反馈���能
- 添加定时任务执行日志
- 修复容器重启后账号加载问题
- 修复所有JavaScript语法错误
- 优化账号加载机制(4层保障)

🤖 Generated with Claude Code
2025-12-10 11:19:16 +08:00

158 lines
4.5 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
# ============================================================
# 生产环境部署脚本
# 服务器: 118.145.177.79
# 域名: zsglpt.workyai.cn
# 项目路径: /root/zsglpt
# ============================================================
set -e # 遇到错误立即退出
REMOTE_HOST="118.145.177.79"
REMOTE_USER="root"
REMOTE_PATH="/root/zsglpt"
BACKUP_DIR="backups/backup_$(date +%Y%m%d_%H%M%S)"
echo "============================================================"
echo "知识管理平台 - 生产环境部署脚本"
echo "目标服务器: $REMOTE_HOST"
echo "部署路径: $REMOTE_PATH"
echo "============================================================"
# 步骤1: 测试SSH连接
echo ""
echo "[1/8] 测试SSH连接..."
ssh -o ConnectTimeout=10 $REMOTE_USER@$REMOTE_HOST "echo '✓ SSH连接成功'" || {
echo "✗ SSH连接失败请检查"
echo " 1. 服务器IP是否正确"
echo " 2. SSH密码是否正确"
echo " 3. 网络连接是否正常"
exit 1
}
# 步骤2: 备份生产服务器数据库
echo ""
echo "[2/8] 备份生产服务器数据库..."
ssh $REMOTE_USER@$REMOTE_HOST "
cd $REMOTE_PATH
mkdir -p $BACKUP_DIR
if [ -f data/app_data.db ]; then
cp -r data $BACKUP_DIR/
echo '✓ 数据库备份完成: $BACKUP_DIR/data/'
else
echo '⚠ 未找到数据库文件,跳过备份'
fi
# 同时备份当前运行的配置
if [ -f docker-compose.yml ]; then
cp docker-compose.yml $BACKUP_DIR/
echo '✓ docker-compose.yml 已备份'
fi
"
# 步骤3: 压缩本地项目文件(排除不需要的文件)
echo ""
echo "[3/8] 压缩项目文件..."
tar -czf /tmp/zsglpt_deploy.tar.gz \
--exclude='*.pyc' \
--exclude='__pycache__' \
--exclude='.git' \
--exclude='data' \
--exclude='logs' \
--exclude='截图' \
--exclude='playwright' \
--exclude='backups' \
--exclude='*.tar.gz' \
-C /home/yuyx/aaaaaa/zsglpt \
.
echo "✓ 项目文件已压缩: /tmp/zsglpt_deploy.tar.gz"
ls -lh /tmp/zsglpt_deploy.tar.gz
# 步骤4: 上传项目文件到服务器
echo ""
echo "[4/8] 上传项目文件到服务器..."
scp /tmp/zsglpt_deploy.tar.gz $REMOTE_USER@$REMOTE_HOST:/tmp/
echo "✓ 文件上传完成"
# 步骤5: 在服务器上解压并替换文件
echo ""
echo "[5/8] 解压并更新项目文件..."
ssh $REMOTE_USER@$REMOTE_HOST "
cd $REMOTE_PATH
# 备份旧的代码文件(以防需要回滚)
mkdir -p $BACKUP_DIR/code
cp -r *.py templates static Dockerfile docker-compose.yml requirements.txt $BACKUP_DIR/code/ 2>/dev/null || true
# 解压新文件保留data、logs等目录
tar -xzf /tmp/zsglpt_deploy.tar.gz -C $REMOTE_PATH
# 清理临时文件
rm /tmp/zsglpt_deploy.tar.gz
echo '✓ 项目文件更新完成'
"
# 步骤6: 停止旧容器
echo ""
echo "[6/8] 停止旧容器..."
ssh $REMOTE_USER@$REMOTE_HOST "
cd $REMOTE_PATH
docker-compose down
echo '✓ 旧容器已停止'
"
# 步骤7: 清理旧镜像并重新构建
echo ""
echo "[7/8] 重新构建Docker镜像..."
ssh $REMOTE_USER@$REMOTE_HOST "
cd $REMOTE_PATH
# 删除旧镜像
docker rmi zsglpt-knowledge-automation 2>/dev/null || true
# 重新构建(无缓存)
docker-compose build --no-cache
echo '✓ Docker镜像构建完成'
"
# 步骤8: 启动新容器
echo ""
echo "[8/8] 启动新容器..."
ssh $REMOTE_USER@$REMOTE_HOST "
cd $REMOTE_PATH
docker-compose up -d
echo '✓ 新容器已启动'
echo ''
echo '等待10秒检查容器状态...'
sleep 10
docker ps | grep knowledge-automation
echo ''
echo '查看启动日志最后30行'
docker logs --tail 30 knowledge-automation-multiuser
"
# 清理本地临时文件
rm /tmp/zsglpt_deploy.tar.gz
echo ""
echo "============================================================"
echo "✓ 部署完成!"
echo "============================================================"
echo "访问地址: https://zsglpt.workyai.cn"
echo "后台管理: https://zsglpt.workyai.cn/yuyx"
echo ""
echo "备份位置: $REMOTE_PATH/$BACKUP_DIR"
echo ""
echo "如需查看日志,请执行:"
echo " ssh $REMOTE_USER@$REMOTE_HOST 'docker logs -f knowledge-automation-multiuser'"
echo ""
echo "如需回滚,请执行:"
echo " ssh $REMOTE_USER@$REMOTE_HOST 'cd $REMOTE_PATH && cd $BACKUP_DIR/code && cp -r * $REMOTE_PATH/ && cd $REMOTE_PATH && docker-compose up -d --build'"
echo "============================================================"