53 lines
1.9 KiB
Bash
53 lines
1.9 KiB
Bash
|
|
#!/bin/bash
|
|||
|
|
# 部署到 Kr宝塔 (43.139.27.93):打包 → SCP(端口22022) → SSH 解压构建 → 宝塔 API 重启
|
|||
|
|
# 不用 pm2 命令,用宝塔 API 操作。在「一场soul的创业实验」目录下执行。
|
|||
|
|
|
|||
|
|
set -e
|
|||
|
|
cd "$(dirname "$0")"
|
|||
|
|
|
|||
|
|
SSH_PORT="22022"
|
|||
|
|
BT_HOST="43.139.27.93"
|
|||
|
|
BT_PORT="9988"
|
|||
|
|
BT_KEY="qcWubCdlfFjS2b2DMT1lzPFaDfmv1cBT"
|
|||
|
|
PROJECT_PATH="/www/wwwroot/soul"
|
|||
|
|
PROJECT_NAME="soul"
|
|||
|
|
|
|||
|
|
echo "===== 1. 打包 ====="
|
|||
|
|
tar --exclude='node_modules' --exclude='.next' --exclude='.git' -czf /tmp/soul_update.tar.gz .
|
|||
|
|
|
|||
|
|
echo "===== 2. 上传到 Kr宝塔 (${BT_HOST}:${SSH_PORT}) ====="
|
|||
|
|
sshpass -p 'Zhiqun1984' scp -P "$SSH_PORT" /tmp/soul_update.tar.gz root@${BT_HOST}:/tmp/
|
|||
|
|
|
|||
|
|
echo "===== 3. SSH:解压、安装、构建(不执行 pm2)====="
|
|||
|
|
sshpass -p 'Zhiqun1984' ssh -p "$SSH_PORT" root@${BT_HOST} "
|
|||
|
|
mkdir -p ${PROJECT_PATH}
|
|||
|
|
cd ${PROJECT_PATH}
|
|||
|
|
rm -rf app components lib public styles *.json *.js *.ts *.mjs *.md .next
|
|||
|
|
tar -xzf /tmp/soul_update.tar.gz
|
|||
|
|
rm /tmp/soul_update.tar.gz
|
|||
|
|
export PATH=/www/server/nodejs/v22.14.0/bin:\$PATH
|
|||
|
|
[ -x \"\$(command -v pnpm)\" ] || npm i -g pnpm
|
|||
|
|
pnpm install
|
|||
|
|
pnpm run build
|
|||
|
|
"
|
|||
|
|
|
|||
|
|
echo "===== 4. 宝塔 API 重启 Node 项目 ${PROJECT_NAME} ====="
|
|||
|
|
REQUEST_TIME=$(date +%s)
|
|||
|
|
md5hex() { printf '%s' "$1" | openssl md5 2>/dev/null | awk '{print $NF}' || true; }
|
|||
|
|
MD5_KEY=$(md5hex "$BT_KEY")
|
|||
|
|
SIGN_STR="${REQUEST_TIME}${MD5_KEY}"
|
|||
|
|
REQUEST_TOKEN=$(md5hex "$SIGN_STR")
|
|||
|
|
|
|||
|
|
RESP=$(curl -s -k -X POST "https://${BT_HOST}:${BT_PORT}/project/nodejs/restart_project" \
|
|||
|
|
-d "request_time=${REQUEST_TIME}" \
|
|||
|
|
-d "request_token=${REQUEST_TOKEN}" \
|
|||
|
|
-d "project_name=${PROJECT_NAME}" 2>/dev/null || true)
|
|||
|
|
|
|||
|
|
if echo "$RESP" | grep -q '"status":true\|"status": true'; then
|
|||
|
|
echo "宝塔 API 重启成功: $RESP"
|
|||
|
|
else
|
|||
|
|
echo "宝塔 API 返回(若失败请到面板 网站→Node项目→${PROJECT_NAME}→重启): $RESP"
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
echo "===== 部署到 Kr宝塔 完成 ====="
|