Stop tracking deploy.sh (local-only)
This commit is contained in:
parent
165b41e4ad
commit
77bad66c23
3
.gitignore
vendored
3
.gitignore
vendored
@ -12,3 +12,6 @@ __pycache__/
|
||||
# RAG model weights and caches
|
||||
minirag/minirag/models/
|
||||
minirag/minirag/cache/
|
||||
|
||||
# local deploy helper (contains secrets in some environments; keep out of git)
|
||||
deploy.sh
|
||||
|
||||
89
deploy.sh
89
deploy.sh
@ -1,89 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
# 一键部署脚本:打包本地 workspace(排除模型与 .git),上传到远端并重启服务
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
SERVER="${SERVER:-120.55.190.8}"
|
||||
USER="${USER:-root}"
|
||||
# 强烈建议使用 SSH Key;如需密码方式,请通过环境变量传入:
|
||||
# export DEPLOY_PASS='your_password'
|
||||
PASS="${DEPLOY_PASS:-}"
|
||||
REMOTE_DIR="${REMOTE_DIR:-/root/workspace}"
|
||||
# 通过环境变量注入 Moonshot Key(不要写死在脚本里):
|
||||
# export MOONSHOT_API_KEY='sk-...'
|
||||
MOONSHOT_KEY="${MOONSHOT_API_KEY:-}"
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
ARCHIVE="/tmp/nianjie_deploy_$(date +%Y%m%d%H%M%S).tar.gz"
|
||||
|
||||
if ! command -v sshpass >/dev/null 2>&1; then
|
||||
echo "[ERROR] 需要安装 sshpass 以使用密码方式非交互上传/执行。" >&2
|
||||
exit 1
|
||||
fi
|
||||
if [ -z "${PASS}" ]; then
|
||||
echo "[ERROR] 未设置 DEPLOY_PASS(远端 SSH 密码)。" >&2
|
||||
exit 1
|
||||
fi
|
||||
if [ -z "${MOONSHOT_KEY}" ]; then
|
||||
echo "[WARN] 未设置 MOONSHOT_API_KEY:云端 AI 模式可能无法调用外部模型。" >&2
|
||||
fi
|
||||
|
||||
echo "[1/5] 打包本地 workspace -> ${ARCHIVE}"
|
||||
# macOS: 避免打包扩展属性导致远端 tar 警告
|
||||
COPYFILE_DISABLE=1 tar -czf "${ARCHIVE}" \
|
||||
--exclude='.git' \
|
||||
--exclude='*/.git*' \
|
||||
--exclude='minirag/minirag/cache' \
|
||||
-C "${SCRIPT_DIR}" .
|
||||
|
||||
echo "[2/5] 上传压缩包到 ${SERVER}:/root/"
|
||||
sshpass -p "${PASS}" scp -o StrictHostKeyChecking=no "${ARCHIVE}" "${USER}@${SERVER}:/root/"
|
||||
|
||||
echo "[3/5] 远端处理(停服、清理、解压、重启)"
|
||||
sshpass -p "${PASS}" ssh -o StrictHostKeyChecking=no "${USER}@${SERVER}" MOONSHOT_KEY="${MOONSHOT_KEY}" bash -s <<'EOF'
|
||||
set -euo pipefail
|
||||
ARCHIVE="$(ls -t /root/nianjie_deploy_*.tar.gz | head -n1)"
|
||||
REMOTE_DIR="/root/workspace"
|
||||
MODEL_PATH="${REMOTE_DIR}/minirag/minirag/models"
|
||||
BACKUP_DIR="/root/model_backup_$(date +%s)"
|
||||
|
||||
echo " - 查杀 8081 端口进程"
|
||||
if command -v lsof >/dev/null 2>&1; then
|
||||
if pids=$(lsof -t -i:8081 || true); then
|
||||
[ -n "$pids" ] && kill -9 $pids || true
|
||||
fi
|
||||
elif command -v fuser >/dev/null 2>&1; then
|
||||
fuser -k 8081/tcp || true
|
||||
fi
|
||||
|
||||
echo " - 备份旧模型(如存在)"
|
||||
if [ -d "$MODEL_PATH" ]; then
|
||||
mkdir -p "$BACKUP_DIR"
|
||||
mv "$MODEL_PATH" "$BACKUP_DIR/"
|
||||
echo " 备份到 $BACKUP_DIR/models"
|
||||
fi
|
||||
|
||||
echo " - 清空远端 workspace 目录"
|
||||
mkdir -p "$REMOTE_DIR"
|
||||
rm -rf "$REMOTE_DIR"/*
|
||||
|
||||
echo " - 解压最新包到 workspace"
|
||||
tar -xzf "$ARCHIVE" -C "$REMOTE_DIR"
|
||||
|
||||
echo " - 恢复模型"
|
||||
if [ -d "$BACKUP_DIR/models" ]; then
|
||||
mkdir -p "$REMOTE_DIR/minirag/minirag"
|
||||
rm -rf "$REMOTE_DIR/minirag/minirag/models"
|
||||
mv "$BACKUP_DIR/models" "$REMOTE_DIR/minirag/minirag/" || true
|
||||
echo " 模型已恢复"
|
||||
fi
|
||||
|
||||
echo " - 后台重启服务(注入 MOONSHOT_API_KEY)"
|
||||
cd "$REMOTE_DIR/dialog"
|
||||
export MOONSHOT_API_KEY="${MOONSHOT_KEY:-}"
|
||||
nohup python3 app.py > app.log 2>&1 &
|
||||
echo " 启动完成,pid: $!"
|
||||
EOF
|
||||
|
||||
echo "[4/5] 部署完成,包保留在 ${ARCHIVE}(本机)与 /root/(远端)"
|
||||
echo "[5/5] 结束"
|
||||
Loading…
Reference in New Issue
Block a user