fix: 优化启动脚本
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -10,3 +10,4 @@ node_modules/
|
|||||||
dist/
|
dist/
|
||||||
data/
|
data/
|
||||||
server/data/
|
server/data/
|
||||||
|
logs/
|
||||||
|
|||||||
29
check-service.sh
Normal file
29
check-service.sh
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# 检查本项目的 Node 服务是否启动(默认 API 端口 5599)
|
||||||
|
# 用法: ./check-service.sh [端口],不传端口则用 5599
|
||||||
|
|
||||||
|
PORT="${1:-5599}"
|
||||||
|
echo "检查端口 ${PORT} 是否在监听..."
|
||||||
|
if command -v ss >/dev/null 2>&1; then
|
||||||
|
ss -tlnp | grep -E ":$PORT\s" || true
|
||||||
|
elif command -v netstat >/dev/null 2>&1; then
|
||||||
|
netstat -tlnp 2>/dev/null | grep -E ":$PORT\s" || true
|
||||||
|
fi
|
||||||
|
if ! ss -tlnp 2>/dev/null | grep -q ":$PORT "; then
|
||||||
|
if ! netstat -tlnp 2>/dev/null | grep -q ":$PORT "; then
|
||||||
|
echo "端口 ${PORT} 未在监听,服务可能未启动。"
|
||||||
|
echo "启动方式: ./start-api.sh 或 ./run.sh"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
echo "--- 测试 API ---"
|
||||||
|
if command -v curl >/dev/null 2>&1; then
|
||||||
|
resp=$(curl -s -o /dev/null -w "%{http_code}" "http://127.0.0.1:${PORT}/api/config" 2>/dev/null)
|
||||||
|
if [ "$resp" = "200" ]; then
|
||||||
|
echo "GET /api/config 返回 200,服务正常。"
|
||||||
|
else
|
||||||
|
echo "GET /api/config 返回 ${resp},请检查服务。"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "未安装 curl,仅检查了端口监听。"
|
||||||
|
fi
|
||||||
11
docs/nginx-api反向代理.conf
Normal file
11
docs/nginx-api反向代理.conf
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
# 将 /api 请求转发到本机 Node 后端(端口与 start-api.sh 一致,默认 5599)
|
||||||
|
# 把下面这段加入 server { ... } 内,建议放在 root 指令之后、其他 location 之前
|
||||||
|
|
||||||
|
location /api {
|
||||||
|
proxy_pass http://127.0.0.1:5599;
|
||||||
|
proxy_http_version 1.1;
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
proxy_set_header X-Forwarded-Proto $scheme;
|
||||||
|
}
|
||||||
26
run.sh
26
run.sh
@@ -1,12 +1,14 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# 部署流程:拉代码 → 安装依赖 → 构建前端到 dist/ → 启动后端 API(5599)
|
# 部署流程:拉代码 → 安装依赖 → 构建前端到 dist/ → 后台启动后端 API(5599)
|
||||||
# 若 Nginx 未反代 /api,请先设置 API_BASE_URL 再执行,例如:
|
# 若 Nginx 未反代 /api,请先设置 API_BASE_URL 再执行,例如:
|
||||||
# export API_BASE_URL="http://你的域名或IP:5599"
|
# export API_BASE_URL="http://你的域名或IP:5599"
|
||||||
# ./run.sh
|
# ./run.sh
|
||||||
# 若 Nginx 已将 /api 反代到本机 5599,可留空 api.config.json(apiBase 为空即可)。
|
# 使用 pm2 保活(推荐):export USE_PM2=1 && ./run.sh
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
cd "$(dirname "$0")"
|
cd "$(dirname "$0")"
|
||||||
|
API_PORT="${PORT:-5599}"
|
||||||
|
export PORT="$API_PORT"
|
||||||
|
|
||||||
git fetch origin && git reset --hard origin/master
|
git fetch origin && git reset --hard origin/master
|
||||||
npm install --no-audit --no-fund
|
npm install --no-audit --no-fund
|
||||||
@@ -18,4 +20,22 @@ if [ -n "$API_BASE_URL" ]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
node build.js
|
node build.js
|
||||||
bash start-api.sh
|
|
||||||
|
# 后台启动 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}/api/config"
|
||||||
Reference in New Issue
Block a user