feat(deploy): 更新后端 API 域名并添加部署指南

- 将后端 API域名从 https://api.jiebanke.com 改为 https://webapi.jiebanke.com
- 新增 CentOS 服务器部署指南和相关脚本
- 更新环境变量配置和 API 文档中的示例 URL
This commit is contained in:
2025-09-08 18:10:41 +08:00
parent 18fe719f94
commit 54d00846ac
13 changed files with 392 additions and 25 deletions

179
BACKEND_DEPLOYMENT_GUIDE.md Normal file
View File

@@ -0,0 +1,179 @@
# 后端部署指南 - CentOS服务器
## 📋 部署概述
本指南详细说明如何将jiebanke后端项目部署到CentOS服务器1.13.156.49)的 `/data/nodejs/jiebanke` 目录。
## 🎯 目标环境
- **服务器**: 1.13.156.49 (CentOS)
- **部署目录**: /data/nodejs/jiebanke
- **运行端口**: 3000
- **进程管理**: PM2
## 📁 部署文件说明
### 1. 服务器初始化脚本 (`init-server.sh`)
```bash
# 功能: 在目标服务器上初始化Node.js环境
# 包含: Node.js 18.x安装、PM2安装、目录创建、防火墙配置
# 用法: ./init-server.sh
```
### 2. 后端部署脚本 (`deploy-backend.sh`)
```bash
# 功能: 将本地后端代码部署到服务器并重启服务
# 包含: 依赖安装、文件同步、PM2重启
# 用法: ./deploy-backend.sh
```
### 3. PM2配置文件 (`backend/ecosystem.config.js`)
```javascript
# 功能: PM2进程管理配置
# 包含: 环境配置日志管理性能优化重启策略
```
## 🚀 部署步骤
### 步骤1: 服务器环境初始化
```bash
# 运行初始化脚本(只需执行一次)
./init-server.sh
```
**初始化脚本执行内容:**
- 更新系统包
- 安装Node.js 18.x
- 安装PM2进程管理器
- 创建项目目录结构
- 配置防火墙开放端口3000
### 步骤2: 后端代码部署
```bash
# 运行部署脚本(每次更新后执行)
./deploy-backend.sh
```
**部署脚本执行内容:**
1. 检查本地Node.js环境
2. 安装生产依赖 (`npm install --production`)
3. 使用rsync同步代码到服务器排除不必要的文件
4. 在服务器上安装依赖
5. 使用PM2重启应用服务
### 步骤3: 验证部署
```bash
# 检查服务状态
ssh root@1.13.156.49 "pm2 status"
# 查看应用日志
ssh root@1.13.156.49 "tail -f /data/nodejs/jiebanke/logs/out.log"
# 测试API接口
curl http://1.13.156.49:3000/api/v1/health
```
## 🔧 配置文件说明
### PM2配置 (`ecosystem.config.js`)
- **集群模式**: 使用所有CPU核心
- **内存限制**: 最大1GB内存自动重启
- **日志管理**: 日志文件存储在 `/data/nodejs/jiebanke/logs/`
- **环境配置**: 支持development/production/test环境
### 环境变量
部署前请确保服务器上有正确的 `.env` 文件,包含:
- 数据库连接配置
- JWT密钥
- Redis配置如使用
- 其他第三方服务配置
## 🛠️ 日常运维
### 查看服务状态
```bash
ssh root@1.13.156.49 "pm2 status"
ssh root@1.13.156.49 "pm2 logs jiebanke-backend"
```
### 重启服务
```bash
ssh root@1.13.156.49 "pm2 restart jiebanke-backend"
```
### 停止服务
```bash
ssh root@1.13.156.49 "pm2 stop jiebanke-backend"
```
### 查看系统资源
```bash
ssh root@1.13.156.49 "top"
ssh root@1.13.156.49 "df -h"
```
## 🚨 故障排除
### 常见问题
1. **端口占用**
```bash
ssh root@1.13.156.49 "lsof -i :3000"
ssh root@1.13.156.49 "kill -9 <PID>"
```
2. **权限问题**
```bash
ssh root@1.13.156.49 "chmod -R 755 /data/nodejs/jiebanke"
```
3. **依赖安装失败**
```bash
# 清除npm缓存
ssh root@1.13.156.49 "npm cache clean --force"
# 重新安装依赖
ssh root@1.13.156.49 "cd /data/nodejs/jiebanke && rm -rf node_modules && npm install"
```
### 日志分析
```bash
# 应用日志
ssh root@1.13.156.49 "tail -f /data/nodejs/jiebanke/logs/error.log"
# PM2日志
ssh root@1.13.156.49 "pm2 logs jiebanke-backend"
# 系统日志
ssh root@1.13.156.49 "journalctl -u pm2-root"
```
## 📊 监控与备份
### 应用监控
```bash
# 安装PM2监控插件
ssh root@1.13.156.49 "pm2 install pm2-logrotate"
ssh root@1.13.156.49 "pm2 set pm2-logrotate:max_size 10M"
ssh root@1.13.156.49 "pm2 set pm2-logrotate:retain 30"
```
### 数据备份
```bash
# 数据库备份
ssh root@1.13.156.49 "mysqldump -u root -p jiebandata > /backup/db-backup-$(date +%Y%m%d).sql"
# 代码备份
ssh root@1.13.156.49 "tar -czf /backup/code-backup-$(date +%Y%m%d).tar.gz /data/nodejs/jiebanke"
```
## 📞 支持信息
- **服务器地址**: 1.13.156.49
- **部署目录**: /data/nodejs/jiebanke
- **服务端口**: 3000
- **进程名称**: jiebanke-backend
- **日志目录**: /data/nodejs/jiebanke/logs/
---
*最后更新: 2024年* 📅

View File

@@ -92,7 +92,7 @@ cp admin-system/.env.example admin-system/.env
## 🌐 访问地址
- **后端API**: https://api.jiebanke.com
- **后端API**: https://webapi.jiebanke.com
- **后台管理**: https://admin.jiebanke.com
- **官方网站**: https://www.jiebanke.com
- **小程序**: 使用微信开发者工具打开 `mini-program/` 目录

View File

@@ -2,7 +2,7 @@
NODE_ENV=development
# API配置
VITE_API_BASE_URL=https://api.jiebanke.com/api/v1
VITE_API_BASE_URL=https://webapi.jiebanke.com/api/v1
VITE_API_TIMEOUT=30000
# 功能开关

View File

@@ -2,7 +2,7 @@
NODE_ENV=production
# API配置
VITE_API_BASE_URL=https://api.jiebanke.com/api/v1
VITE_API_BASE_URL=https://webapi.jiebanke.com/api/v1
VITE_API_TIMEOUT=15000
# 功能开关

View File

@@ -86,14 +86,14 @@ docker-compose up mysql redis rabbitmq
**.env.development** (开发环境):
```
VITE_APP_TITLE=结伴客后台管理系统(开发)
VITE_API_BASE_URL=https://api.jiebanke.com/api/v1
VITE_API_BASE_URL=https://webapi.jiebanke.com/api/v1
VITE_APP_VERSION=dev
```
**.env.production** (生产环境):
```
VITE_APP_TITLE=结伴客后台管理系统
VITE_API_BASE_URL=https://api.jiebanke.com
VITE_API_BASE_URL=https://webapi.jiebanke.com
VITE_APP_VERSION=v1.0.0
```
@@ -131,7 +131,7 @@ environment:
系统提供健康检查端点:
- 前端: `https://admin.jiebanke.com/health`
- 后端: `https://api.jiebanke.com/health`
- 后端: `https://webapi.jiebanke.com/health`
## 监控和日志

View File

@@ -45,14 +45,14 @@ npm run preview
### 开发环境 (.env.development)
```env
NODE_ENV=development
VITE_API_BASE_URL=https://api.jiebanke.com/api/v1
VITE_API_BASE_URL=https://webapi.jiebanke.com/api/v1
VITE_FEATURE_DEBUG=true
```
### 生产环境 (.env.production)
```env
NODE_ENV=production
VITE_API_BASE_URL=https://api.jiebanke.com/api/v1
VITE_API_BASE_URL=https://webapi.jiebanke.com/api/v1
VITE_FEATURE_DEBUG=false
```

View File

@@ -130,25 +130,17 @@ API测试脚本会自动测试以下接口
### 生产环境
```javascript
{
host: '129.211.213.226',
port: 9527,
user: 'root',
password: 'Aiot123',
database: 'jiebandata',
host: 'nj-cdb-3pwh2kz1.sql.tencentcdb.com',
port: 20784,
user: 'jiebanke',
password: 'aiot741$12346',
database: 'jbkdata',
connectionLimit: 20
}
```
## ⚡ 生产环境连接说明
### 直接连接生产数据库
当前配置已设置为直接连接生产环境MySQL服务器
- **服务器地址**: 129.211.213.226
- **端口**: 9527
- **用户名**: root
- **密码**: Aiot123
- **数据库**: jiebandata
### 注意事项
1. **谨慎操作**: 直接连接生产数据库,所有操作都会影响真实数据

View File

@@ -0,0 +1,44 @@
module.exports = {
apps: [{
name: 'jiebanke-backend',
script: './src/server.js',
instances: 'max',
exec_mode: 'cluster',
env: {
NODE_ENV: 'development',
PORT: 3000,
WATCH: true
},
env_production: {
NODE_ENV: 'production',
PORT: 3000,
WATCH: false
},
env_test: {
NODE_ENV: 'test',
PORT: 3001,
WATCH: false
},
// 日志配置
log_file: '/data/nodejs/jiebanke/logs/combined.log',
out_file: '/data/nodejs/jiebanke/logs/out.log',
error_file: '/data/nodejs/jiebanke/logs/error.log',
// 性能配置
max_memory_restart: '1G',
kill_timeout: 3000,
wait_ready: true,
listen_timeout: 3000,
// 监控配置
watch: false,
ignore_watch: [
'node_modules',
'logs',
'.git',
'uploads'
],
// 重启策略
autorestart: true,
max_restarts: 10,
restart_delay: 4000
}]
};

78
deploy-backend.sh Normal file
View File

@@ -0,0 +1,78 @@
#!/bin/bash
# 后端部署脚本 - 部署到CentOS服务器
# 目标服务器: 1.13.156.49
# 目标目录: /data/nodejs/jiebanke
# 配置参数
LOCAL_DIR="/Users/ainongkeji/code/vue/jiebanke/backend"
REMOTE_USER="root"
REMOTE_HOST="1.13.156.49"
REMOTE_DIR="/data/nodejs/jiebanke"
# 检查本地目录是否存在
if [ ! -d "$LOCAL_DIR" ]; then
echo "错误:本地目录 $LOCAL_DIR 不存在!"
exit 1
fi
# 检查Node.js环境
if ! command -v node &> /dev/null; then
echo "错误本地Node.js环境未安装"
exit 1
fi
# 安装生产依赖
cd "$LOCAL_DIR"
echo "安装生产依赖..."
npm install --production
# 使用 rsync 上传文件到服务器
echo "开始上传后端文件到远程服务器..."
rsync -avz --progress --delete \
--exclude 'node_modules' \
--exclude '.git' \
--exclude '.env' \
--exclude 'logs' \
--exclude 'uploads' \
--include 'ecosystem.config.js' \
"$LOCAL_DIR/" "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/"
# 在服务器上执行部署后命令
echo "在远程服务器上执行部署命令..."
ssh "$REMOTE_USER@$REMOTE_HOST" << EOF
cd "$REMOTE_DIR"
# 安装生产依赖
echo "在服务器上安装依赖..."
npm install --production
# 使用PM2重启应用
if command -v pm2 &> /dev/null; then
echo "使用PM2重启应用..."
if [ -f "ecosystem.config.js" ]; then
pm2 reload ecosystem.config.js --env production
pm2 save
else
pm2 restart jiebanke-backend || pm2 start src/server.js --name "jiebanke-backend" --env production
fi
else
echo "PM2未安装使用node直接启动..."
pkill -f "node.*server.js" || true
NODE_ENV=production nohup node src/server.js > server.log 2>&1 &
fi
# 检查服务状态
echo "检查服务状态..."
sleep 3
if command -v pm2 &> /dev/null; then
pm2 status
else
ps aux | grep "node.*server.js" | grep -v grep
fi
EOF
echo "后端部署完成!"
echo "服务器地址: $REMOTE_HOST"
echo "部署目录: $REMOTE_DIR"
echo "应用应该运行在端口 3000 上"

View File

@@ -504,12 +504,12 @@ Authorization: Bearer <token>
### 使用curl测试
```bash
# 微信用户登录
curl -X POST https://api.jiebanke.com/api/v1/auth/wechat-login \
curl -X POST https://webapi.jiebanke.com/api/v1/auth/wechat-login \
-H "Content-Type: application/json" \
-d '{"code":"wxlogincode123","userInfo":{"nickName":"测试用户","avatarUrl":"https://avatar.url","gender":1}}'
# 获取旅行计划列表
curl -X GET https://api.jiebanke.com/api/v1/travel/plans \
curl -X GET https://webapi.jiebanke.com/api/v1/travel/plans \
-H "Authorization: Bearer <token>"
```

View File

@@ -78,7 +78,7 @@ npm run dev
```
### 6. 验证部署
- 后端API: https://api.jiebanke.com/api/v1/health
- 后端API: https://webapi.jiebanke.com/api/v1/health
- 后台管理: https://admin.jiebanke.com
- 官方网站: https://www.jiebanke.com

74
init-server.sh Normal file
View File

@@ -0,0 +1,74 @@
#!/bin/bash
# 服务器初始化脚本 - CentOS 7+
# 目标服务器: 1.13.156.49
# 目标目录: /data/nodejs/jiebanke
# 配置参数
REMOTE_USER="root"
REMOTE_HOST="1.13.156.49"
REMOTE_DIR="/data/nodejs/jiebanke"
# 在服务器上执行初始化命令
echo "开始在服务器 $REMOTE_HOST 上初始化环境..."
ssh "$REMOTE_USER@$REMOTE_HOST" << 'EOF'
set -e
# 更新系统
echo "更新系统包..."
yum update -y
# 安装必要的工具
echo "安装必要工具..."
yum install -y wget curl git vim
# 安装Node.js 18.x
echo "安装Node.js 18.x..."
if ! command -v node &> /dev/null; then
curl -fsSL https://rpm.nodesource.com/setup_18.x | bash -
yum install -y nodejs
fi
# 安装PM2进程管理器
echo "安装PM2..."
npm install -g pm2
# 安装MySQL客户端可选
echo "安装MySQL客户端..."
yum install -y mysql
# 创建项目目录
echo "创建项目目录..."
mkdir -p /data/nodejs/jiebanke
chmod 755 /data/nodejs/jiebanke
# 创建日志目录
mkdir -p /data/nodejs/jiebanke/logs
chmod 755 /data/nodejs/jiebanke/logs
# 创建上传文件目录
mkdir -p /data/nodejs/jiebanke/uploads
chmod 755 /data/nodejs/jiebanke/uploads
# 检查安装结果
echo "=== 安装结果检查 ==="
echo "Node.js版本: $(node --version)"
echo "npm版本: $(npm --version)"
echo "PM2版本: $(pm2 --version 2>/dev/null || echo '未安装')"
echo "项目目录: /data/nodejs/jiebanke"
echo "目录权限: $(ls -ld /data/nodejs/jiebanke)"
# 配置防火墙(如果需要)
echo "配置防火墙..."
if command -v firewall-cmd &> /dev/null; then
firewall-cmd --permanent --add-port=3000/tcp
firewall-cmd --reload
echo "端口3000已开放"
fi
echo "服务器初始化完成!"
EOF
echo "服务器初始化脚本执行完成!"
echo "接下来可以运行 deploy-backend.sh 进行部署"

View File

@@ -3,7 +3,7 @@
# 配置参数
LOCAL_DIR="/Users/ainongkeji/code/vue/jiebanke/website"
REMOTE_USER="root"
REMOTE_HOST="119.45.104.14"
REMOTE_HOST="1.13.156.49"
REMOTE_DIR="/data/php/jiebanke/www"
# 检查本地目录是否存在