Files
aijianhua/部署指南.md

369 lines
5.9 KiB
Markdown
Raw Normal View History

# 爱鉴花小程序 - 部署操作指南
## 📋 概述
本文档提供「爱鉴花」小程序项目的完整部署指南,涵盖开发、测试、生产环境的部署流程和运维操作。
## 🚀 环境准备
### 1. 系统要求
- **操作系统**: Ubuntu 20.04+ / CentOS 7+
- **Node.js**: 16.0.0+
- **MySQL**: 8.0+
- **Redis**: 6.0+
- **Nginx**: 1.18+
### 2. 依赖安装
#### 后端依赖
```bash
cd backend
npm 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
```
## 🏗️ 构建部署
### 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
```
## 📊 监控运维
### 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 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 <PID>
```
#### 服务无法启动
```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-01-15*
*文档版本: v1.0*