fix:优化启动脚本
This commit is contained in:
@@ -1,8 +1,9 @@
|
|||||||
# 将 /api 请求转发到本机 Node 后端(端口与 start-api.sh 一致,默认 5599)
|
# 将 /api 请求转发到本机 Node 后端(端口与 start-api.sh 一致,默认 5599)
|
||||||
|
# 注意:proxy_pass 末尾加 /,这样 /api/config 会转发为 /config(后端路由无 /api 前缀)
|
||||||
# 把下面这段加入 server { ... } 内,建议放在 root 指令之后、其他 location 之前
|
# 把下面这段加入 server { ... } 内,建议放在 root 指令之后、其他 location 之前
|
||||||
|
|
||||||
location /api {
|
location /api {
|
||||||
proxy_pass http://127.0.0.1:5599;
|
proxy_pass http://127.0.0.1:5599/;
|
||||||
proxy_http_version 1.1;
|
proxy_http_version 1.1;
|
||||||
proxy_set_header Host $host;
|
proxy_set_header Host $host;
|
||||||
proxy_set_header X-Real-IP $remote_addr;
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ server {
|
|||||||
}
|
}
|
||||||
|
|
||||||
location /api {
|
location /api {
|
||||||
proxy_pass http://127.0.0.1:5599;
|
proxy_pass http://127.0.0.1:5599/;
|
||||||
proxy_http_version 1.1;
|
proxy_http_version 1.1;
|
||||||
proxy_set_header Host $host;
|
proxy_set_header Host $host;
|
||||||
proxy_set_header X-Real-IP $remote_addr;
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
|||||||
@@ -35,12 +35,12 @@
|
|||||||
2. 左侧选 **反向代理** → **添加反向代理**。
|
2. 左侧选 **反向代理** → **添加反向代理**。
|
||||||
3. 填写:
|
3. 填写:
|
||||||
- **代理名称**:随意,如 `api`
|
- **代理名称**:随意,如 `api`
|
||||||
- **目标 URL**:`http://127.0.0.1:5599`
|
- **目标 URL**:`http://127.0.0.1:5599/`(**末尾必须带 `/`**,这样 `/api/config` 会转成后端的 `/config`,因本后端路由无 `/api` 前缀)
|
||||||
- **代理目录**:`/api`(表示只把 `/api` 开头的请求转给后端)
|
- **代理目录**:`/api`(表示只把 `/api` 开头的请求转给后端)
|
||||||
- **发送域名**:默认 `$host` 即可
|
- **发送域名**:默认 `$host` 即可
|
||||||
4. 保存后,宝塔会自动改写 Nginx 配置并重载,无需手改配置文件。
|
4. 保存后,若宝塔生成的 `proxy_pass` 没有末尾 `/`,请到 **设置 → 配置文件** 中把 `proxy_pass http://127.0.0.1:5599;` 改为 `proxy_pass http://127.0.0.1:5599/;`,再重载 Nginx。
|
||||||
|
|
||||||
效果:访问 `http://你的域名/api/config` 时,Nginx 会转发到 `http://127.0.0.1:5599/api/config`。
|
效果:访问 `http://你的域名/api/config` 时,Nginx 会转发到 `http://127.0.0.1:5599/config`,后端才能正确返回。
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -103,7 +103,7 @@ export API_BASE_URL="http://你的域名或IP:5599"
|
|||||||
|
|
||||||
1. **前端**:浏览器访问 `http://你的域名`,应能打开全景页。
|
1. **前端**:浏览器访问 `http://你的域名`,应能打开全景页。
|
||||||
2. **API**:
|
2. **API**:
|
||||||
- 同机执行:`curl -s http://127.0.0.1:5599/api/config`,应返回 JSON。
|
- 同机执行:`curl -s http://127.0.0.1:5599/config`,应返回 JSON。
|
||||||
- 或访问:`http://你的域名/api/config`,应返回相同内容(说明反代生效)。
|
- 或访问:`http://你的域名/api/config`,应返回相同内容(说明反代生效)。
|
||||||
|
|
||||||
若 `/api/config` 报 502,多半是 5599 端口未启或未监听:用方式 A 再跑一次 `./run.sh`,或用方式 B 在宝塔 Node 项目中启动/重启。
|
若 `/api/config` 报 502,多半是 5599 端口未启或未监听:用方式 A 再跑一次 `./run.sh`,或用方式 B 在宝塔 Node 项目中启动/重启。
|
||||||
@@ -123,7 +123,7 @@ location / {
|
|||||||
}
|
}
|
||||||
|
|
||||||
location /api {
|
location /api {
|
||||||
proxy_pass http://127.0.0.1:5599;
|
proxy_pass http://127.0.0.1:5599/;
|
||||||
proxy_http_version 1.1;
|
proxy_http_version 1.1;
|
||||||
proxy_set_header Host $host;
|
proxy_set_header Host $host;
|
||||||
proxy_set_header X-Real-IP $remote_addr;
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
@@ -141,7 +141,7 @@ location /api {
|
|||||||
| 步骤 | 说明 |
|
| 步骤 | 说明 |
|
||||||
|------|------|
|
|------|------|
|
||||||
| 1. 网站根目录 | 指向 `项目根目录/dist` |
|
| 1. 网站根目录 | 指向 `项目根目录/dist` |
|
||||||
| 2. 反向代理 | 代理目录 `/api` → 目标 `http://127.0.0.1:5599` |
|
| 2. 反向代理 | 代理目录 `/api` → 目标 `http://127.0.0.1:5599/`(末尾带 `/`) |
|
||||||
| 3. 后端保活 | 用 `./run.sh`(或 `USE_PM2=1 ./run.sh`),或用宝塔 Node 项目托管 `server/index.js` 端口 5599 |
|
| 3. 后端保活 | 用 `./run.sh`(或 `USE_PM2=1 ./run.sh`),或用宝塔 Node 项目托管 `server/index.js` 端口 5599 |
|
||||||
|
|
||||||
按上述配置后,在宝塔中即可正常访问前端,且 `/api` 请求会由 Nginx 转发到本机 Node 服务并正常运行。
|
按上述配置后,在宝塔中即可正常访问前端,且 `/api` 请求会由 Nginx 转发到本机 Node 服务并正常运行。
|
||||||
|
|||||||
18
run.sh
18
run.sh
@@ -1,9 +1,12 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# 部署流程:拉代码 → 安装依赖 → 构建前端到 dist/ → 后台启动后端 API(5599)
|
# 部署流程:拉代码 → 安装依赖 → 构建前端到 dist/ →(可选)同步到 Nginx root → 后台启动 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
|
||||||
# 使用 pm2 保活(推荐):export USE_PM2=1 && ./run.sh
|
# 使用 pm2 保活(推荐):export USE_PM2=1 && ./run.sh
|
||||||
|
# 若项目在子目录、Nginx root 指向固定目录,构建后同步到该目录,例如:
|
||||||
|
# export DEPLOY_DIST=/www/wwwroot/view.airtep.com/dist
|
||||||
|
# ./run.sh
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
cd "$(dirname "$0")"
|
cd "$(dirname "$0")"
|
||||||
@@ -21,6 +24,17 @@ fi
|
|||||||
|
|
||||||
node build.js
|
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
|
# 后台启动 API:优先 pm2,否则 nohup
|
||||||
if [ -n "$USE_PM2" ] && command -v pm2 >/dev/null 2>&1; then
|
if [ -n "$USE_PM2" ] && command -v pm2 >/dev/null 2>&1; then
|
||||||
echo "[run.sh] 使用 pm2 启动 API(端口 ${API_PORT})..."
|
echo "[run.sh] 使用 pm2 启动 API(端口 ${API_PORT})..."
|
||||||
@@ -38,4 +52,4 @@ else
|
|||||||
exec bash start-api.sh
|
exec bash start-api.sh
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "[run.sh] 部署完成。前端静态在 dist/,API 端口 ${API_PORT}。检查: curl -s http://127.0.0.1:${API_PORT}/api/config"
|
echo "[run.sh] 部署完成。前端静态在 dist/,API 端口 ${API_PORT}。检查: curl -s http://127.0.0.1:${API_PORT}/config"
|
||||||
Reference in New Issue
Block a user