# 🚀 部署指南 ## 📋 部署概述 本文档详细描述了结伴客项目的部署流程,包括开发环境、测试环境和生产环境的部署步骤。 ## 🛠️ 环境要求 ### 系统要求 - **操作系统**: Ubuntu 20.04+ / CentOS 7+ / macOS 10.15+ - **内存**: 最低 2GB,推荐 4GB+ - **存储**: 最低 10GB 可用空间 - **网络**: 稳定的互联网连接 ### 软件要求 - **Node.js**: 16.x 或 18.x - **MySQL**: 8.0+ - **Redis**: 6.0+ (可选) - **Docker**: 20.10+ (可选) - **npm**: 8.x+ ## 🏗️ 开发环境部署 ### 1. 克隆项目 ```bash git clone cd jiebanke ``` ### 2. 安装依赖 ```bash # 安装后端依赖 cd backend npm install # 安装前端依赖 cd ../admin-system npm install cd ../mini-program npm install cd ../website npm install ``` ### 3. 配置环境变量 ```bash # 复制环境变量模板 cp backend/.env.example backend/.env # 编辑环境变量 vim backend/.env ``` ### 4. 启动数据库 ```bash # 使用Docker启动MySQL cd backend docker-compose up -d mysql # 或者使用本地MySQL mysql -u root -p < scripts/init-database.sql ``` ### 5. 启动应用 ```bash # 启动后端服务 cd backend npm run dev # 启动后台管理系统 (新终端) cd admin-system npm run dev # 启动官方网站 (新终端) cd website npm run dev ``` ### 6. 验证部署 - 后端API: https://webapi.jiebanke.com/api/v1/health - 后台管理: https://admin.jiebanke.com - 官方网站: https://www.jiebanke.com ## 🧪 测试环境部署 ### 1. 服务器准备 ```bash # 登录测试服务器 ssh user@test-server # 创建项目目录 mkdir -p /opt/jiebanke cd /opt/jiebanke ``` ### 2. 部署脚本 ```bash #!/bin/bash # deploy-test.sh # 拉取最新代码 git pull origin develop # 安装依赖 cd backend && npm install --production cd ../admin-system && npm install --production && npm run build cd ../website && npm install --production && npm run build # 重启服务 pm2 restart all ``` ### 3. 环境配置 ```bash # 测试环境变量 cat > /opt/jiebanke/backend/.env << EOF NODE_ENV=test DB_HOST=192.168.0.240 DB_PORT=3306 DB_USER=root DB_PASSWORD=aiotAiot123! DB_DATABASE=jiebandata_test JWT_SECRET=your-test-jwt-secret EOF ``` ### 4. 进程管理 ```bash # 使用PM2管理进程 npm install -g pm2 # 启动服务 pm2 start ecosystem.config.js --env test # 查看状态 pm2 status ``` ## 🚀 生产环境部署 ### 1. 服务器准备 ```bash # 购买云服务器 (阿里云/腾讯云/AWS) # 配置安全组: 开放80, 443, 3000, 3306, 6379端口 # 服务器初始化 apt update && apt upgrade -y apt install -y nginx mysql-server redis-server ``` ### 2. 数据库部署 ```bash # 安装MySQL apt install -y mysql-server # 安全配置 mysql_secure_installation # 创建生产数据库 mysql -u root -p -e "CREATE DATABASE jiebandata CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;" # 导入数据 mysql -u root -p jiebandata < scripts/prod-database.sql ``` ### 3. 应用部署 ```bash # 创建部署用户 adduser deploy usermod -aG sudo deploy # 项目目录 mkdir -p /home/deploy/jiebanke chown deploy:deploy /home/deploy/jiebanke ``` ### 4. 自动化部署脚本 ```bash #!/bin/bash # deploy-prod.sh set -e # 变量配置 APP_NAME="jiebanke" APP_DIR="/home/deploy/jiebanke" BRANCH="main" echo "🚀 开始部署 $APP_NAME..." # 拉取代码 echo "📦 拉取最新代码..." cd $APP_DIR git fetch origin git checkout $BRANCH git reset --hard origin/$BRANCH # 安装依赖 echo "🔧 安装依赖..." cd backend && npm install --production cd ../admin-system && npm install --production && npm run build cd ../website && npm install --production && npm run build # 数据库迁移 echo "🗄️ 执行数据库迁移..." cd backend npm run db:migrate # 重启服务 echo "🔄 重启服务..." pm2 reload ecosystem.config.js --env production # 清理 echo "🧹 清理临时文件..." npm cache clean --force echo "✅ 部署完成!" echo "🌐 应用地址: https://your-domain.com" ``` ### 5. Nginx 配置 ```nginx # /etc/nginx/sites-available/jiebanke server { listen 80; server_name your-domain.com; # 反向代理到后端API location /api { proxy_pass http://backend-service:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } # 静态资源服务 location / { root /home/deploy/jiebanke/admin-system/dist; index index.html; try_files $uri $uri/ /index.html; } } ``` ### 6. SSL证书配置 ```bash # 安装Certbot apt install -y certbot python3-certbot-nginx # 获取SSL证书 certbot --nginx -d your-domain.com # 自动续期 certbot renew --dry-run ``` ## 📊 监控与日志 ### 应用监控 ```bash # 安装PM2监控 pm2 install pm2-logrotate pm2 set pm2-logrotate:max_size 10M pm2 set pm2-logrotate:retain 30 # 监控面板 pm2 monitor ``` ### 日志管理 ```bash # 查看实时日志 pm2 logs # 查看特定应用日志 pm2 logs backend # 日志文件位置 /root/.pm2/logs/ /var/log/nginx/ /var/log/mysql/ ``` ### 性能监控 ```bash # 安装监控工具 apt install -y htop iotop nmon # 监控系统资源 top htop # 监控磁盘使用 df -h ``` ## 🔒 安全配置 ### 防火墙配置 ```bash # 配置UFW防火墙 apt install -y ufw ufw allow ssh ufw allow http ufw allow https ufw enable ``` ### 数据库安全 ```bash # 修改MySQL默认端口 vim /etc/mysql/mysql.conf.d/mysqld.cnf # port = 3307 # 创建应用专用用户 mysql -u root -p -e " CREATE USER 'appuser'@'%' IDENTIFIED BY 'strongpassword'; GRANT SELECT, INSERT, UPDATE, DELETE ON jiebandata.* TO 'appuser'@'%'; FLUSH PRIVILEGES; " ``` ### SSH安全 ```bash # 禁用root登录 vim /etc/ssh/sshd_config # PermitRootLogin no # 使用密钥认证 # PasswordAuthentication no # 重启SSH systemctl restart sshd ``` ## 📦 容器化部署 ### Docker Compose ```yaml # docker-compose.prod.yml version: '3.8' services: app: build: . ports: - "3000:3000" environment: - NODE_ENV=production - DB_HOST=mysql - DB_PORT=3306 - DB_USER=root - DB_PASSWORD=rootpassword depends_on: - mysql mysql: image: mysql:8.0 environment: - MYSQL_ROOT_PASSWORD=rootpassword - MYSQL_DATABASE=jiebandata volumes: - mysql_data:/var/lib/mysql ports: - "3306:3306" volumes: mysql_data: ``` ### Kubernetes部署 ```yaml # deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: jiebanke-backend spec: replicas: 3 template: spec: containers: - name: app image: jiebanke-backend:latest ports: - containerPort: 3000 env: - name: NODE_ENV value: "production" ``` ## 🚨 故障排除 ### 常见问题 1. **端口占用** ```bash # 查找占用端口的进程 lsof -i :3000 # 杀死进程 kill -9 ``` 2. **权限问题** ```bash # 修改文件权限 chown -R deploy:deploy /home/deploy/jiebanke chmod -R 755 /home/deploy/jiebanke ``` 3. **数据库连接失败** ```bash # 检查MySQL服务 systemctl status mysql # 检查防火墙 ufw status ``` ### 日志分析 ```bash # 查看错误日志 tail -f /var/log/nginx/error.log # 查看应用日志 tail -f /root/.pm2/logs/backend-error.log # 数据库日志 tail -f /var/log/mysql/error.log ``` ## 📞 支持与维护 ### 紧急联系人 - **运维团队**: ops@jiebanke.com - **开发团队**: dev@jiebanke.com - **值班电话**: +86-138-0013-8000 ### 维护窗口 - **常规维护**: 每周四凌晨 2:00-4:00 - **紧急维护**: 随时响应 - **系统监控**: 7x24小时 ### 备份策略 ```bash # 数据库备份 mysqldump -u root -p jiebandata > backup-$(date +%Y%m%d).sql # 文件备份 tar -czf backup-$(date +%Y%m%d).tar.gz /home/deploy/jiebanke # 上传到云存储 rclone copy backup-* remote:backups/ ``` --- *最后更新: 2024年* 📅