diff --git a/BACKEND_DEPLOYMENT_GUIDE.md b/BACKEND_DEPLOYMENT_GUIDE.md new file mode 100644 index 0000000..ff11c82 --- /dev/null +++ b/BACKEND_DEPLOYMENT_GUIDE.md @@ -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 " +``` + +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年* 📅 \ No newline at end of file diff --git a/README.md b/README.md index 8c59e73..5812635 100644 --- a/README.md +++ b/README.md @@ -137,7 +137,7 @@ docker-compose ps ## 🌐 访问地址 -- **后端API**: https://api.jiebanke.com +- **后端API**: https://webapi.jiebanke.com - **后台管理**: https://admin.jiebanke.com - **官方网站**: https://www.jiebanke.com - **小程序**: 使用微信开发者工具打开 `mini-program/` 目录 diff --git a/admin-system/.env.development b/admin-system/.env.development index 174c4c2..1de6576 100644 --- a/admin-system/.env.development +++ b/admin-system/.env.development @@ -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 # 功能开关 diff --git a/admin-system/.env.production b/admin-system/.env.production index dcd14dc..f094ca8 100644 --- a/admin-system/.env.production +++ b/admin-system/.env.production @@ -1,11 +1,13 @@ # 生产环境配置 -VITE_APP_NAME=结伴客后台管理系统 -VITE_APP_VERSION=1.0.0 +NODE_ENV=production # API配置 -VITE_API_BASE_URL=https://api.jiebanke.com/api -VITE_API_TIMEOUT=10000 +VITE_API_BASE_URL=https://webapi.jiebanke.com/api/v1 +VITE_API_TIMEOUT=15000 # 功能开关 VITE_FEATURE_ANALYTICS=true -VITE_FEATURE_DEBUG=false \ No newline at end of file +VITE_FEATURE_DEBUG=false + +# 性能优化 +VITE_COMPRESSION=true \ No newline at end of file diff --git a/admin-system/DEPLOYMENT.md b/admin-system/DEPLOYMENT.md index 8c8d3fc..c1cda5e 100644 --- a/admin-system/DEPLOYMENT.md +++ b/admin-system/DEPLOYMENT.md @@ -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` ## 监控和日志 diff --git a/admin-system/README.md b/admin-system/README.md index 7bf9e41..5b0f9ba 100644 --- a/admin-system/README.md +++ b/admin-system/README.md @@ -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 ``` diff --git a/backend/README_DEVELOPMENT.md b/backend/README_DEVELOPMENT.md index 08c413f..2dce018 100644 --- a/backend/README_DEVELOPMENT.md +++ b/backend/README_DEVELOPMENT.md @@ -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. **谨慎操作**: 直接连接生产数据库,所有操作都会影响真实数据 diff --git a/backend/ecosystem.config.js b/backend/ecosystem.config.js new file mode 100644 index 0000000..dfd56fb --- /dev/null +++ b/backend/ecosystem.config.js @@ -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 + }] +}; \ No newline at end of file diff --git a/deploy-backend.sh b/deploy-backend.sh new file mode 100644 index 0000000..231b060 --- /dev/null +++ b/deploy-backend.sh @@ -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 上" \ No newline at end of file diff --git a/docs/API_DOCS.md b/docs/API_DOCS.md index 3dd943b..2101487 100644 --- a/docs/API_DOCS.md +++ b/docs/API_DOCS.md @@ -504,12 +504,12 @@ Authorization: Bearer ### 使用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 " ``` diff --git a/docs/DEPLOYMENT.md b/docs/DEPLOYMENT.md index faa167c..26eb5cd 100644 --- a/docs/DEPLOYMENT.md +++ b/docs/DEPLOYMENT.md @@ -80,7 +80,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 diff --git a/init-server.sh b/init-server.sh new file mode 100644 index 0000000..e42d4f3 --- /dev/null +++ b/init-server.sh @@ -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 进行部署" \ No newline at end of file diff --git a/up_website.sh b/up_website.sh index b0b32ce..77c9ae6 100644 --- a/up_website.sh +++ b/up_website.sh @@ -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" # 检查本地目录是否存在