# 爱鉴花小程序 - 部署操作指南 ## 📋 概述 本文档提供「爱鉴花」小程序项目的完整部署指南,涵盖开发、测试、生产环境的部署流程和运维操作。 ## 🚀 环境准备 ### 1. 环境准备 #### 系统要求 - **操作系统**: Ubuntu 20.04+ / CentOS 7+ - **Node.js**: 16.0.0+ - **Java**: 8+ - **MySQL**: 8.0+ - **Redis**: 6.0+ - **Nginx**: 1.18+ ### 2. 依赖安装 #### Node.js后端依赖 ```bash cd backend npm install ``` #### Java后端依赖 ```bash # 进入Java后端目录 cd java_backend # 安装Maven依赖 mvn clean install ``` #### 前端依赖 ```bash cd mini_program npm install ``` ## 🔧 环境配置 ### 1. 数据库配置 #### 创建配置文件 ```bash # 复制环境变量模板 cp backend/.env.example backend/.env.development # 编辑配置文件 vim backend/.env.development ``` #### 环境变量配置示例 ```env # 应用配置 NODE_ENV=development PORT=3000 APP_NAME=爱鉴花小程序后端 # 数据库配置(开发环境使用SQLite,生产环境使用MySQL) DB_TYPE=sqlite # 开发环境使用sqlite,生产环境使用mysql DB_HOST=192.168.0.240 DB_PORT=3306 DB_USERNAME=root DB_PASSWORD=aiot$Aiot123 DB_DATABASE=ajhdata SQLITE_DB_PATH=./database.sqlite # SQLite数据库文件路径 # Redis配置 REDIS_HOST=127.0.0.1 REDIS_PORT=6379 REDIS_PASSWORD= # 腾讯云配置 TENCENT_CLOUD_SECRET_ID=your_secret_id TENCENT_CLOUD_SECRET_KEY=your_secret_key COS_BUCKET=your_bucket_name COS_REGION=ap-beijing # 微信小程序配置 WX_APPID=your_wechat_appid WX_APPSECRET=your_wechat_appsecret # JWT配置 JWT_SECRET=your_jwt_secret_key JWT_EXPIRE=7d ``` ### 2. 数据库初始化 ```bash # 验证数据库连接 cd backend npm run db:check # 完整数据库初始化 npm run db:init ``` **注意**: 数据库初始化脚本已移动到 `/scripts/backend/` 目录,执行时会自动调用正确路径。 ## 🏗️ 构建部署 ### 1. 后端服务部署 #### 开发环境启动 ```bash cd backend npm run dev ``` #### 生产环境构建 ```bash # 安装生产依赖 npm install --production # 启动生产服务 npm start ``` #### PM2进程管理 ```bash # 安装PM2 npm install -g pm2 # 启动服务 pm2 start app.js --name aijianhua-backend # 查看服务状态 pm2 status # 设置开机自启 pm2 startup pm2 save ``` ### 2. 前端小程序部署 #### 开发环境 ```bash cd mini_program npm run dev:mp-weixin ``` #### 生产构建 ```bash npm run build:mp-weixin ``` #### 微信开发者工具 1. 打开微信开发者工具 2. 导入项目目录 `mini_program` 3. 配置AppID和项目设置 4. 点击"上传"发布体验版 ### 3. Nginx配置 #### 创建Nginx配置文件 ```nginx server { listen 80; server_name api.aijianhua.com; # API反向代理 location /api/ { proxy_pass http://localhost: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 /static/ { alias /path/to/static/files/; expires 30d; } # 健康检查 location /health { access_log off; return 200 "healthy\n"; } } ``` #### 启用配置 ```bash # 检查配置语法 nginx -t # 重新加载配置 nginx -s reload ``` ### 4. 服务管理 #### PM2管理Node.js服务 ```bash # 安装PM2 npm install -g pm2 # 启动服务 pm2 start app.js --name aijianhua-backend # 查看服务状态 pm2 status # 重启服务 pm2 restart aijianhua-backend # 停止服务 pm2 stop aijianhua-backend # 设置开机自启 pm2 startup pm2 save ``` #### Systemd管理Java服务 ```bash # 创建服务文件 sudo nano /etc/systemd/system/aijianhua-java.service # 添加以下内容 [Unit] Description=爱鉴花Java后端服务 After=network.target [Service] Type=simple User=www-data WorkingDirectory=/path/to/aijianhua-java-backend ExecStart=/usr/bin/java -jar target/backend-1.0.0.jar Restart=always RestartSec=10 [Install] WantedBy=multi-user.target # 重新加载systemd sudo systemctl daemon-reload # 启动服务 sudo systemctl start aijianhua-java # 设置开机自启 sudo systemctl enable aijianhua-java # 查看服务状态 sudo systemctl status aijianhua-java ``` ## 📊 监控运维 ### 1. 日志管理 #### 查看应用日志 ```bash # PM2日志 pm2 logs aijianhua-backend # Nginx访问日志 tail -f /var/log/nginx/access.log # Nginx错误日志 tail -f /var/log/nginx/error.log ``` #### 日志轮转配置 ```bash # 安装logrotate sudo apt-get install logrotate # 创建日志轮转配置 sudo vim /etc/logrotate.d/aijianhua ``` ### 2. 性能监控 #### 系统监控 ```bash # 查看系统负载 top htop # 查看磁盘使用 df -h # 查看内存使用 free -h ``` #### 应用监控 ```bash # 查看Node.js进程 pm2 monit # 查看数据库连接 mysql -u root -p -e "SHOW PROCESSLIST;" ``` ### 3. 备份恢复 #### 数据库备份 ```bash # 全量备份 mysqldump -u root -p ajhdata > backup_$(date +%Y%m%d).sql # 压缩备份 gzip backup_$(date +%Y%m%d).sql ``` #### 文件备份 ```bash # 备份重要文件 tar -czf backup_$(date +%Y%m%d).tar.gz /path/to/important/files ``` ## 🔒 安全配置 ### 1. 防火墙配置 ```bash # 启用防火墙 sudo ufw enable # 开放必要端口 sudo ufw allow 22 # SSH sudo ufw allow 80 # HTTP sudo ufw allow 443 # HTTPS sudo ufw allow 3000 # Node.js sudo ufw allow 3200 # Java后端 # 查看防火墙状态 sudo ufw status ``` ### 2. SSL证书配置 #### 申请证书 ```bash # 使用Certbot申请SSL证书 sudo apt-get install certbot python3-certbot-nginx sudo certbot --nginx -d api.aijianhua.com ``` #### 自动续期 ```bash # 测试续期 sudo certbot renew --dry-run # 设置定时任务 sudo crontab -e # 添加:0 12 * * * /usr/bin/certbot renew --quiet ``` ### 3. 安全加固 #### 数据库安全 ```sql -- 创建专用用户 CREATE USER 'aijianhua'@'localhost' IDENTIFIED BY 'strong_password'; GRANT SELECT, INSERT, UPDATE, DELETE ON ajhdata.* TO 'aijianhua'@'localhost'; FLUSH PRIVILEGES; ``` #### 文件权限 ```bash # 设置正确的文件权限 chmod 600 /path/to/config/file chmod 700 /path/to/executable ``` ## 🚨 故障处理 ### 1. 常见问题 #### 端口冲突 ```bash # 查看端口占用 netstat -tlnp | grep :3000 lsof -i :3000 # 杀死进程 kill -9 ``` #### 服务无法启动 ```bash # 查看错误详情 npm start 2>&1 | tee error.log # 检查依赖 npm ls --depth=0 ``` #### 数据库连接失败 ```bash # 测试数据库连接 mysql -h 192.168.0.240 -P 3306 -u root -p # 检查MySQL服务状态 sudo systemctl status mysql ``` ### 2. 应急响应 #### 服务重启 ```bash # 重启Node.js服务 pm2 restart aijianhua-backend # 重启Nginx sudo systemctl restart nginx # 重启MySQL sudo systemctl restart mysql ``` #### 回滚部署 ```bash # 回滚到上一个版本 pm2 restart aijianhua-backend --update-env ``` ## 📞 支持联系 ### 运维团队 - **值班电话**: 138-0013-8000 - **技术支持**: tech@aijianhua.com - **紧急响应**: emergency@aijianhua.com ### 监控平台 - **应用性能**: NewRelic / Datadog - **错误监控**: Sentry - **日志分析**: ELK Stack - **业务监控**: Grafana --- *最后更新: 2024-03-15* *文档版本: v1.0*