7.2 KiB
7.2 KiB
爱鉴花小程序 - 部署操作指南
📋 概述
本文档提供「爱鉴花」小程序项目的完整部署指南,涵盖开发、测试、生产环境的部署流程和运维操作。
🚀 环境准备
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
微信开发者工具
- 打开微信开发者工具
- 导入项目目录
mini_program - 配置AppID和项目设置
- 点击"上传"发布体验版
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
📞 支持联系
运维团队
- 值班电话: 138-0013-8000
- 技术支持: tech@aijianhua.com
- 紧急响应: emergency@aijianhua.com
监控平台
- 应用性能: NewRelic / Datadog
- 错误监控: Sentry
- 日志分析: ELK Stack
- 业务监控: Grafana
最后更新: 2024-03-15 文档版本: v1.0