docs: 更新项目文档,完善需求和技术细节
This commit is contained in:
371
docs/部署指南.md
Normal file
371
docs/部署指南.md
Normal file
@@ -0,0 +1,371 @@
|
||||
# 爱鉴花小程序 - 部署操作指南
|
||||
|
||||
## 📋 概述
|
||||
|
||||
本文档提供「爱鉴花」小程序项目的完整部署指南,涵盖开发、测试、生产环境的部署流程和运维操作。
|
||||
|
||||
## 🚀 环境准备
|
||||
|
||||
### 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
|
||||
```
|
||||
|
||||
**注意**: 数据库初始化脚本已移动到 `/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
|
||||
```
|
||||
|
||||
## 📊 监控运维
|
||||
|
||||
### 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-03-15*
|
||||
*文档版本: v1.0*
|
||||
Reference in New Issue
Block a user