55 lines
2.3 KiB
Bash
55 lines
2.3 KiB
Bash
#!/usr/bin/env bash
|
||
# 部署流程:拉代码 → 安装依赖 → 构建前端到 dist/ →(可选)同步到 Nginx root → 后台启动 API(5599)
|
||
# 若 Nginx 未反代 /api,请先设置 API_BASE_URL 再执行,例如:
|
||
# export API_BASE_URL="http://你的域名或IP:5599"
|
||
# ./run.sh
|
||
# 使用 pm2 保活(推荐):export USE_PM2=1 && ./run.sh
|
||
# 若项目在子目录、Nginx root 指向固定目录,构建后同步到该目录,例如:
|
||
# export DEPLOY_DIST=/www/wwwroot/view.airtep.com/dist
|
||
# ./run.sh
|
||
|
||
set -e
|
||
cd "$(dirname "$0")"
|
||
API_PORT="${PORT:-5599}"
|
||
export PORT="$API_PORT"
|
||
|
||
git fetch origin && git reset --hard origin/master
|
||
npm install --no-audit --no-fund
|
||
|
||
# 若设置了 API_BASE_URL,则写入 api.config.json,供 build 复制到 dist/
|
||
if [ -n "$API_BASE_URL" ]; then
|
||
echo "[run.sh] 使用 API_BASE_URL=$API_BASE_URL"
|
||
node -e "require('fs').writeFileSync('api.config.json', JSON.stringify({ apiBase: process.env.API_BASE_URL }, null, 2))"
|
||
fi
|
||
|
||
node build.js
|
||
|
||
# 若设置了 DEPLOY_DIST(与 Nginx root 一致),将 dist/ 同步到该目录以便访问
|
||
if [ -n "$DEPLOY_DIST" ]; then
|
||
mkdir -p "$DEPLOY_DIST"
|
||
if command -v rsync >/dev/null 2>&1; then
|
||
rsync -a --delete dist/ "$DEPLOY_DIST/"
|
||
else
|
||
(cd dist && find . -mindepth 1 -maxdepth 1 -exec cp -r {} "$DEPLOY_DIST/" \;)
|
||
fi
|
||
echo "[run.sh] 已同步 dist/ 到 $DEPLOY_DIST"
|
||
fi
|
||
|
||
# 后台启动 API:优先 pm2,否则 nohup
|
||
if [ -n "$USE_PM2" ] && command -v pm2 >/dev/null 2>&1; then
|
||
echo "[run.sh] 使用 pm2 启动 API(端口 ${API_PORT})..."
|
||
(cd server && npm install --no-audit --no-fund --silent && pm2 delete view-airtep-api 2>/dev/null; true)
|
||
(cd server && pm2 start index.js --name view-airtep-api)
|
||
pm2 save 2>/dev/null || true
|
||
echo "[run.sh] API 已由 pm2 托管。查看: pm2 list / pm2 logs view-airtep-api"
|
||
elif command -v nohup >/dev/null 2>&1; then
|
||
echo "[run.sh] 使用 nohup 后台启动 API(端口 ${API_PORT})..."
|
||
mkdir -p logs
|
||
nohup bash start-api.sh >> logs/api.log 2>&1 &
|
||
echo "[run.sh] API 已在后台运行。查看日志: tail -f logs/api.log"
|
||
else
|
||
echo "[run.sh] 前台启动 API(Ctrl+C 会停止服务)..."
|
||
exec bash start-api.sh
|
||
fi
|
||
|
||
echo "[run.sh] 部署完成。前端静态在 dist/,API 端口 ${API_PORT}。检查: curl -s http://127.0.0.1:${API_PORT}/config" |