refactor(backend): 更新数据库配置并迁移至MySQL,优化文档和技术栈描述
This commit is contained in:
459
DEPLOYMENT.md
Normal file
459
DEPLOYMENT.md
Normal file
@@ -0,0 +1,459 @@
|
||||
# 🚀 部署指南
|
||||
|
||||
## 📋 部署概述
|
||||
本文档详细描述了杰邦科项目的部署流程,包括开发环境、测试环境和生产环境的部署步骤。
|
||||
|
||||
## 🛠️ 环境要求
|
||||
|
||||
### 系统要求
|
||||
- **操作系统**: Ubuntu 20.04+ / CentOS 7+ / macOS 10.15+
|
||||
- **内存**: 最低 2GB,推荐 4GB+
|
||||
- **存储**: 最低 10GB 可用空间
|
||||
- **网络**: 稳定的互联网连接
|
||||
|
||||
### 软件要求
|
||||
- **Node.js**: 16.x 或 18.x
|
||||
- **MySQL**: 8.0+
|
||||
- **Redis**: 6.0+ (可选)
|
||||
- **Docker**: 20.10+ (可选)
|
||||
- **npm**: 8.x+
|
||||
|
||||
## 🏗️ 开发环境部署
|
||||
|
||||
### 1. 克隆项目
|
||||
```bash
|
||||
git clone <repository-url>
|
||||
cd jiebanke
|
||||
```
|
||||
|
||||
### 2. 安装依赖
|
||||
```bash
|
||||
# 安装后端依赖
|
||||
cd backend
|
||||
npm install
|
||||
|
||||
# 安装前端依赖
|
||||
cd ../admin-system
|
||||
npm install
|
||||
|
||||
cd ../mini-program
|
||||
npm install
|
||||
|
||||
cd ../website
|
||||
npm install
|
||||
```
|
||||
|
||||
### 3. 配置环境变量
|
||||
```bash
|
||||
# 复制环境变量模板
|
||||
cp backend/.env.example backend/.env
|
||||
|
||||
# 编辑环境变量
|
||||
vim backend/.env
|
||||
```
|
||||
|
||||
### 4. 启动数据库
|
||||
```bash
|
||||
# 使用Docker启动MySQL
|
||||
cd backend
|
||||
docker-compose up -d mysql
|
||||
|
||||
# 或者使用本地MySQL
|
||||
mysql -u root -p < scripts/init-database.sql
|
||||
```
|
||||
|
||||
### 5. 启动应用
|
||||
```bash
|
||||
# 启动后端服务
|
||||
cd backend
|
||||
npm run dev
|
||||
|
||||
# 启动后台管理系统 (新终端)
|
||||
cd admin-system
|
||||
npm run dev
|
||||
|
||||
# 启动官方网站 (新终端)
|
||||
cd website
|
||||
npm run dev
|
||||
```
|
||||
|
||||
### 6. 验证部署
|
||||
- 后端API: http://localhost:3000/api/v1/health
|
||||
- 后台管理: http://localhost:3001
|
||||
- 官方网站: http://localhost:3002
|
||||
|
||||
## 🧪 测试环境部署
|
||||
|
||||
### 1. 服务器准备
|
||||
```bash
|
||||
# 登录测试服务器
|
||||
ssh user@test-server
|
||||
|
||||
# 创建项目目录
|
||||
mkdir -p /opt/jiebanke
|
||||
cd /opt/jiebanke
|
||||
```
|
||||
|
||||
### 2. 部署脚本
|
||||
```bash
|
||||
#!/bin/bash
|
||||
# deploy-test.sh
|
||||
|
||||
# 拉取最新代码
|
||||
git pull origin develop
|
||||
|
||||
# 安装依赖
|
||||
cd backend && npm install --production
|
||||
cd ../admin-system && npm install --production && npm run build
|
||||
cd ../website && npm install --production && npm run build
|
||||
|
||||
# 重启服务
|
||||
pm2 restart all
|
||||
```
|
||||
|
||||
### 3. 环境配置
|
||||
```bash
|
||||
# 测试环境变量
|
||||
cat > /opt/jiebanke/backend/.env << EOF
|
||||
NODE_ENV=test
|
||||
DB_HOST=192.168.0.240
|
||||
DB_PORT=3306
|
||||
DB_USER=root
|
||||
DB_PASSWORD=aiotAiot123!
|
||||
DB_DATABASE=jiebandata_test
|
||||
JWT_SECRET=your-test-jwt-secret
|
||||
EOF
|
||||
```
|
||||
|
||||
### 4. 进程管理
|
||||
```bash
|
||||
# 使用PM2管理进程
|
||||
npm install -g pm2
|
||||
|
||||
# 启动服务
|
||||
pm2 start ecosystem.config.js --env test
|
||||
|
||||
# 查看状态
|
||||
pm2 status
|
||||
```
|
||||
|
||||
## 🚀 生产环境部署
|
||||
|
||||
### 1. 服务器准备
|
||||
```bash
|
||||
# 购买云服务器 (阿里云/腾讯云/AWS)
|
||||
# 配置安全组: 开放80, 443, 3000, 3306, 6379端口
|
||||
|
||||
# 服务器初始化
|
||||
apt update && apt upgrade -y
|
||||
apt install -y nginx mysql-server redis-server
|
||||
```
|
||||
|
||||
### 2. 数据库部署
|
||||
```bash
|
||||
# 安装MySQL
|
||||
apt install -y mysql-server
|
||||
|
||||
# 安全配置
|
||||
mysql_secure_installation
|
||||
|
||||
# 创建生产数据库
|
||||
mysql -u root -p -e "CREATE DATABASE jiebandata CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
|
||||
|
||||
# 导入数据
|
||||
mysql -u root -p jiebandata < scripts/prod-database.sql
|
||||
```
|
||||
|
||||
### 3. 应用部署
|
||||
```bash
|
||||
# 创建部署用户
|
||||
adduser deploy
|
||||
usermod -aG sudo deploy
|
||||
|
||||
# 项目目录
|
||||
mkdir -p /home/deploy/jiebanke
|
||||
chown deploy:deploy /home/deploy/jiebanke
|
||||
```
|
||||
|
||||
### 4. 自动化部署脚本
|
||||
```bash
|
||||
#!/bin/bash
|
||||
# deploy-prod.sh
|
||||
|
||||
set -e
|
||||
|
||||
# 变量配置
|
||||
APP_NAME="jiebanke"
|
||||
APP_DIR="/home/deploy/jiebanke"
|
||||
BRANCH="main"
|
||||
|
||||
echo "🚀 开始部署 $APP_NAME..."
|
||||
|
||||
# 拉取代码
|
||||
echo "📦 拉取最新代码..."
|
||||
cd $APP_DIR
|
||||
git fetch origin
|
||||
git checkout $BRANCH
|
||||
git reset --hard origin/$BRANCH
|
||||
|
||||
# 安装依赖
|
||||
echo "🔧 安装依赖..."
|
||||
cd backend && npm install --production
|
||||
cd ../admin-system && npm install --production && npm run build
|
||||
cd ../website && npm install --production && npm run build
|
||||
|
||||
# 数据库迁移
|
||||
echo "🗄️ 执行数据库迁移..."
|
||||
cd backend
|
||||
npm run db:migrate
|
||||
|
||||
# 重启服务
|
||||
echo "🔄 重启服务..."
|
||||
pm2 reload ecosystem.config.js --env production
|
||||
|
||||
# 清理
|
||||
echo "🧹 清理临时文件..."
|
||||
npm cache clean --force
|
||||
|
||||
echo "✅ 部署完成!"
|
||||
echo "🌐 应用地址: https://your-domain.com"
|
||||
```
|
||||
|
||||
### 5. Nginx 配置
|
||||
```nginx
|
||||
# /etc/nginx/sites-available/jiebanke
|
||||
server {
|
||||
listen 80;
|
||||
server_name your-domain.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 / {
|
||||
root /home/deploy/jiebanke/admin-system/dist;
|
||||
index index.html;
|
||||
try_files $uri $uri/ /index.html;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 6. SSL证书配置
|
||||
```bash
|
||||
# 安装Certbot
|
||||
apt install -y certbot python3-certbot-nginx
|
||||
|
||||
# 获取SSL证书
|
||||
certbot --nginx -d your-domain.com
|
||||
|
||||
# 自动续期
|
||||
certbot renew --dry-run
|
||||
```
|
||||
|
||||
## 📊 监控与日志
|
||||
|
||||
### 应用监控
|
||||
```bash
|
||||
# 安装PM2监控
|
||||
pm2 install pm2-logrotate
|
||||
pm2 set pm2-logrotate:max_size 10M
|
||||
pm2 set pm2-logrotate:retain 30
|
||||
|
||||
# 监控面板
|
||||
pm2 monitor
|
||||
```
|
||||
|
||||
### 日志管理
|
||||
```bash
|
||||
# 查看实时日志
|
||||
pm2 logs
|
||||
|
||||
# 查看特定应用日志
|
||||
pm2 logs backend
|
||||
|
||||
# 日志文件位置
|
||||
/root/.pm2/logs/
|
||||
/var/log/nginx/
|
||||
/var/log/mysql/
|
||||
```
|
||||
|
||||
### 性能监控
|
||||
```bash
|
||||
# 安装监控工具
|
||||
apt install -y htop iotop nmon
|
||||
|
||||
# 监控系统资源
|
||||
top
|
||||
htop
|
||||
|
||||
# 监控磁盘使用
|
||||
df -h
|
||||
```
|
||||
|
||||
## 🔒 安全配置
|
||||
|
||||
### 防火墙配置
|
||||
```bash
|
||||
# 配置UFW防火墙
|
||||
apt install -y ufw
|
||||
ufw allow ssh
|
||||
ufw allow http
|
||||
ufw allow https
|
||||
ufw enable
|
||||
```
|
||||
|
||||
### 数据库安全
|
||||
```bash
|
||||
# 修改MySQL默认端口
|
||||
vim /etc/mysql/mysql.conf.d/mysqld.cnf
|
||||
# port = 3307
|
||||
|
||||
# 创建应用专用用户
|
||||
mysql -u root -p -e "
|
||||
CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'strongpassword';
|
||||
GRANT SELECT, INSERT, UPDATE, DELETE ON jiebandata.* TO 'appuser'@'localhost';
|
||||
FLUSH PRIVILEGES;
|
||||
"
|
||||
```
|
||||
|
||||
### SSH安全
|
||||
```bash
|
||||
# 禁用root登录
|
||||
vim /etc/ssh/sshd_config
|
||||
# PermitRootLogin no
|
||||
|
||||
# 使用密钥认证
|
||||
# PasswordAuthentication no
|
||||
|
||||
# 重启SSH
|
||||
systemctl restart sshd
|
||||
```
|
||||
|
||||
## 📦 容器化部署
|
||||
|
||||
### Docker Compose
|
||||
```yaml
|
||||
# docker-compose.prod.yml
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
app:
|
||||
build: .
|
||||
ports:
|
||||
- "3000:3000"
|
||||
environment:
|
||||
- NODE_ENV=production
|
||||
- DB_HOST=mysql
|
||||
- DB_PORT=3306
|
||||
- DB_USER=root
|
||||
- DB_PASSWORD=rootpassword
|
||||
depends_on:
|
||||
- mysql
|
||||
|
||||
mysql:
|
||||
image: mysql:8.0
|
||||
environment:
|
||||
- MYSQL_ROOT_PASSWORD=rootpassword
|
||||
- MYSQL_DATABASE=jiebandata
|
||||
volumes:
|
||||
- mysql_data:/var/lib/mysql
|
||||
ports:
|
||||
- "3306:3306"
|
||||
|
||||
volumes:
|
||||
mysql_data:
|
||||
```
|
||||
|
||||
### Kubernetes部署
|
||||
```yaml
|
||||
# deployment.yaml
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: jiebanke-backend
|
||||
spec:
|
||||
replicas: 3
|
||||
template:
|
||||
spec:
|
||||
containers:
|
||||
- name: app
|
||||
image: jiebanke-backend:latest
|
||||
ports:
|
||||
- containerPort: 3000
|
||||
env:
|
||||
- name: NODE_ENV
|
||||
value: "production"
|
||||
```
|
||||
|
||||
## 🚨 故障排除
|
||||
|
||||
### 常见问题
|
||||
|
||||
1. **端口占用**
|
||||
```bash
|
||||
# 查找占用端口的进程
|
||||
lsof -i :3000
|
||||
|
||||
# 杀死进程
|
||||
kill -9 <PID>
|
||||
```
|
||||
|
||||
2. **权限问题**
|
||||
```bash
|
||||
# 修改文件权限
|
||||
chown -R deploy:deploy /home/deploy/jiebanke
|
||||
chmod -R 755 /home/deploy/jiebanke
|
||||
```
|
||||
|
||||
3. **数据库连接失败**
|
||||
```bash
|
||||
# 检查MySQL服务
|
||||
systemctl status mysql
|
||||
|
||||
# 检查防火墙
|
||||
ufw status
|
||||
```
|
||||
|
||||
### 日志分析
|
||||
```bash
|
||||
# 查看错误日志
|
||||
tail -f /var/log/nginx/error.log
|
||||
|
||||
# 查看应用日志
|
||||
tail -f /root/.pm2/logs/backend-error.log
|
||||
|
||||
# 数据库日志
|
||||
tail -f /var/log/mysql/error.log
|
||||
```
|
||||
|
||||
## 📞 支持与维护
|
||||
|
||||
### 紧急联系人
|
||||
- **运维团队**: ops@company.com
|
||||
- **开发团队**: dev@company.com
|
||||
- **值班电话**: +86-138-0013-8000
|
||||
|
||||
### 维护窗口
|
||||
- **常规维护**: 每周四凌晨 2:00-4:00
|
||||
- **紧急维护**: 随时响应
|
||||
- **系统监控**: 7x24小时
|
||||
|
||||
### 备份策略
|
||||
```bash
|
||||
# 数据库备份
|
||||
mysqldump -u root -p jiebandata > backup-$(date +%Y%m%d).sql
|
||||
|
||||
# 文件备份
|
||||
tar -czf backup-$(date +%Y%m%d).tar.gz /home/deploy/jiebanke
|
||||
|
||||
# 上传到云存储
|
||||
rclone copy backup-* remote:backups/
|
||||
```
|
||||
|
||||
---
|
||||
*最后更新: 2024年* 📅
|
||||
Reference in New Issue
Block a user