|
|
@@ -53,38 +53,28 @@ EOF
|
|
|
|
|
|
# 4. 远程部署
|
|
|
echo -e "${GREEN}[4/5] 服务器端部署...${NC}"
|
|
|
+
|
|
|
+REMOTE_COMMANDS="
|
|
|
+mkdir -p $REMOTE_PARENT_DIR && \
|
|
|
+cd $REMOTE_PARENT_DIR && \
|
|
|
+tar -xzf release.tar.gz && \
|
|
|
+rm release.tar.gz && \
|
|
|
+cd server && \
|
|
|
+echo 'Installing dependencies...' && \
|
|
|
+npm install --omit=dev --registry=https://registry.npmmirror.com && \
|
|
|
+(command -v pm2 &> /dev/null || npm install -g pm2) && \
|
|
|
+(pm2 describe ccdw-server > /dev/null 2>&1 && pm2 reload ccdw-server || pm2 start index.js --name ccdw-server) && \
|
|
|
+pm2 save
|
|
|
+"
|
|
|
+
|
|
|
/usr/bin/expect <<EOF
|
|
|
set timeout 300
|
|
|
-spawn ssh -o StrictHostKeyChecking=no $SERVER_USER@$SERVER_IP
|
|
|
+spawn ssh -o StrictHostKeyChecking=no $SERVER_USER@$SERVER_IP "$REMOTE_COMMANDS"
|
|
|
expect {
|
|
|
- "password:" { send "$SERVER_PASS\r" }
|
|
|
+ "password:" { send "$SERVER_PASS\r"; exp_continue }
|
|
|
"yes/no" { send "yes\r"; exp_continue }
|
|
|
+ eof
|
|
|
}
|
|
|
-expect "#"
|
|
|
-
|
|
|
-# 准备目录
|
|
|
-send "mkdir -p $REMOTE_PARENT_DIR\r"
|
|
|
-send "cd $REMOTE_PARENT_DIR\r"
|
|
|
-
|
|
|
-# 解压覆盖 (dist 和 server 目录)
|
|
|
-send "tar -xzf release.tar.gz\r"
|
|
|
-send "rm release.tar.gz\r"
|
|
|
-
|
|
|
-# 安装/更新后端依赖
|
|
|
-send "cd server\r"
|
|
|
-send "echo 'Installing dependencies...'\r"
|
|
|
-send "npm install --omit=dev --registry=https://registry.npmmirror.com\r"
|
|
|
-
|
|
|
-# 检查 PM2 是否安装
|
|
|
-send "if ! command -v pm2 &> /dev/null; then npm install -g pm2; fi\r"
|
|
|
-
|
|
|
-# 重启服务
|
|
|
-# 如果没有运行则启动,如果运行了则重启
|
|
|
-send "pm2 describe ccdw-server > /dev/null && pm2 reload ccdw-server || pm2 start index.js --name ccdw-server\r"
|
|
|
-send "pm2 save\r"
|
|
|
-
|
|
|
-send "exit\r"
|
|
|
-expect eof
|
|
|
EOF
|
|
|
|
|
|
# 5. 清理本地
|