Files
aijianhua/部署指南.md

369 lines
5.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 爱鉴花小程序 - 部署操作指南
## 📋 概述
本文档提供「爱鉴花」小程序项目的完整部署指南,涵盖开发、测试、生产环境的部署流程和运维操作。
## 🚀 环境准备
### 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*