Files
aijianhua/docs/部署指南.md

7.2 KiB
Raw Permalink Blame History

爱鉴花小程序 - 部署操作指南

📋 概述

本文档提供「爱鉴花」小程序项目的完整部署指南,涵盖开发、测试、生产环境的部署流程和运维操作。

🚀 环境准备

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后端依赖

cd backend
npm install

Java后端依赖

# 进入Java后端目录
cd java_backend

# 安装Maven依赖
mvn clean install

前端依赖

cd mini_program
npm install

🔧 环境配置

1. 数据库配置

创建配置文件

# 复制环境变量模板
cp backend/.env.example backend/.env.development

# 编辑配置文件
vim backend/.env.development

环境变量配置示例

# 应用配置
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. 数据库初始化

# 验证数据库连接
cd backend
npm run db:check

# 完整数据库初始化
npm run db:init

注意: 数据库初始化脚本已移动到 /scripts/backend/ 目录,执行时会自动调用正确路径。

🏗️ 构建部署

1. 后端服务部署

开发环境启动

cd backend
npm run dev

生产环境构建

# 安装生产依赖
npm install --production

# 启动生产服务
npm start

PM2进程管理

# 安装PM2
npm install -g pm2

# 启动服务
pm2 start app.js --name aijianhua-backend

# 查看服务状态
pm2 status

# 设置开机自启
pm2 startup
pm2 save

2. 前端小程序部署

开发环境

cd mini_program
npm run dev:mp-weixin

生产构建

npm run build:mp-weixin

微信开发者工具

  1. 打开微信开发者工具
  2. 导入项目目录 mini_program
  3. 配置AppID和项目设置
  4. 点击"上传"发布体验版

3. 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";
    }
}

启用配置

# 检查配置语法
nginx -t

# 重新加载配置
nginx -s reload

4. 服务管理

PM2管理Node.js服务

# 安装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服务

# 创建服务文件
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. 日志管理

查看应用日志

# PM2日志
pm2 logs aijianhua-backend

# Nginx访问日志
tail -f /var/log/nginx/access.log

# Nginx错误日志
tail -f /var/log/nginx/error.log

日志轮转配置

# 安装logrotate
sudo apt-get install logrotate

# 创建日志轮转配置
sudo vim /etc/logrotate.d/aijianhua

2. 性能监控

系统监控

# 查看系统负载
top
htop

# 查看磁盘使用
df -h

# 查看内存使用
free -h

应用监控

# 查看Node.js进程
pm2 monit

# 查看数据库连接
mysql -u root -p -e "SHOW PROCESSLIST;"

3. 备份恢复

数据库备份

# 全量备份
mysqldump -u root -p ajhdata > backup_$(date +%Y%m%d).sql

# 压缩备份
gzip backup_$(date +%Y%m%d).sql

文件备份

# 备份重要文件
tar -czf backup_$(date +%Y%m%d).tar.gz /path/to/important/files

🔒 安全配置

1. 防火墙配置

# 启用防火墙
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证书配置

申请证书

# 使用Certbot申请SSL证书
sudo apt-get install certbot python3-certbot-nginx
sudo certbot --nginx -d api.aijianhua.com

自动续期

# 测试续期
sudo certbot renew --dry-run

# 设置定时任务
sudo crontab -e
# 添加0 12 * * * /usr/bin/certbot renew --quiet

3. 安全加固

数据库安全

-- 创建专用用户
CREATE USER 'aijianhua'@'localhost' IDENTIFIED BY 'strong_password';
GRANT SELECT, INSERT, UPDATE, DELETE ON ajhdata.* TO 'aijianhua'@'localhost';
FLUSH PRIVILEGES;

文件权限

# 设置正确的文件权限
chmod 600 /path/to/config/file
chmod 700 /path/to/executable

🚨 故障处理

1. 常见问题

端口冲突

# 查看端口占用
netstat -tlnp | grep :3000
lsof -i :3000

# 杀死进程
kill -9 <PID>

服务无法启动

# 查看错误详情
npm start 2>&1 | tee error.log

# 检查依赖
npm ls --depth=0

数据库连接失败

# 测试数据库连接
mysql -h 192.168.0.240 -P 3306 -u root -p

# 检查MySQL服务状态
sudo systemctl status mysql

2. 应急响应

服务重启

# 重启Node.js服务
pm2 restart aijianhua-backend

# 重启Nginx
sudo systemctl restart nginx

# 重启MySQL
sudo systemctl restart mysql

回滚部署

# 回滚到上一个版本
pm2 restart aijianhua-backend --update-env

📞 支持联系

运维团队

监控平台

  • 应用性能: NewRelic / Datadog
  • 错误监控: Sentry
  • 日志分析: ELK Stack
  • 业务监控: Grafana

最后更新: 2024-03-15 文档版本: v1.0