- 将后端 API域名从 https://api.jiebanke.com 改为 https://webapi.jiebanke.com - 新增 CentOS 服务器部署指南和相关脚本 - 更新环境变量配置和 API 文档中的示例 URL
7.8 KiB
7.8 KiB
🚀 部署指南
📋 部署概述
本文档详细描述了结伴客项目的部署流程,包括开发环境、测试环境和生产环境的部署步骤。
🛠️ 环境要求
系统要求
- 操作系统: 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. 克隆项目
git clone <repository-url>
cd jiebanke
2. 安装依赖
# 安装后端依赖
cd backend
npm install
# 安装前端依赖
cd ../admin-system
npm install
cd ../mini-program
npm install
cd ../website
npm install
3. 配置环境变量
# 复制环境变量模板
cp backend/.env.example backend/.env
# 编辑环境变量
vim backend/.env
4. 启动数据库
# 使用Docker启动MySQL
cd backend
docker-compose up -d mysql
# 或者使用本地MySQL
mysql -u root -p < scripts/init-database.sql
5. 启动应用
# 启动后端服务
cd backend
npm run dev
# 启动后台管理系统 (新终端)
cd admin-system
npm run dev
# 启动官方网站 (新终端)
cd website
npm run dev
6. 验证部署
- 后端API: https://webapi.jiebanke.com/api/v1/health
- 后台管理: https://admin.jiebanke.com
- 官方网站: https://www.jiebanke.com
🧪 测试环境部署
1. 服务器准备
# 登录测试服务器
ssh user@test-server
# 创建项目目录
mkdir -p /opt/jiebanke
cd /opt/jiebanke
2. 部署脚本
#!/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. 环境配置
# 测试环境变量
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. 进程管理
# 使用PM2管理进程
npm install -g pm2
# 启动服务
pm2 start ecosystem.config.js --env test
# 查看状态
pm2 status
🚀 生产环境部署
1. 服务器准备
# 购买云服务器 (阿里云/腾讯云/AWS)
# 配置安全组: 开放80, 443, 3000, 3306, 6379端口
# 服务器初始化
apt update && apt upgrade -y
apt install -y nginx mysql-server redis-server
2. 数据库部署
# 安装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. 应用部署
# 创建部署用户
adduser deploy
usermod -aG sudo deploy
# 项目目录
mkdir -p /home/deploy/jiebanke
chown deploy:deploy /home/deploy/jiebanke
4. 自动化部署脚本
#!/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 配置
# /etc/nginx/sites-available/jiebanke
server {
listen 80;
server_name your-domain.com;
# 反向代理到后端API
location /api {
proxy_pass http://backend-service: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证书配置
# 安装Certbot
apt install -y certbot python3-certbot-nginx
# 获取SSL证书
certbot --nginx -d your-domain.com
# 自动续期
certbot renew --dry-run
📊 监控与日志
应用监控
# 安装PM2监控
pm2 install pm2-logrotate
pm2 set pm2-logrotate:max_size 10M
pm2 set pm2-logrotate:retain 30
# 监控面板
pm2 monitor
日志管理
# 查看实时日志
pm2 logs
# 查看特定应用日志
pm2 logs backend
# 日志文件位置
/root/.pm2/logs/
/var/log/nginx/
/var/log/mysql/
性能监控
# 安装监控工具
apt install -y htop iotop nmon
# 监控系统资源
top
htop
# 监控磁盘使用
df -h
🔒 安全配置
防火墙配置
# 配置UFW防火墙
apt install -y ufw
ufw allow ssh
ufw allow http
ufw allow https
ufw enable
数据库安全
# 修改MySQL默认端口
vim /etc/mysql/mysql.conf.d/mysqld.cnf
# port = 3307
# 创建应用专用用户
mysql -u root -p -e "
CREATE USER 'appuser'@'%' IDENTIFIED BY 'strongpassword';
GRANT SELECT, INSERT, UPDATE, DELETE ON jiebandata.* TO 'appuser'@'%';
FLUSH PRIVILEGES;
"
SSH安全
# 禁用root登录
vim /etc/ssh/sshd_config
# PermitRootLogin no
# 使用密钥认证
# PasswordAuthentication no
# 重启SSH
systemctl restart sshd
📦 容器化部署
Docker Compose
# 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部署
# 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"
🚨 故障排除
常见问题
- 端口占用
# 查找占用端口的进程
lsof -i :3000
# 杀死进程
kill -9 <PID>
- 权限问题
# 修改文件权限
chown -R deploy:deploy /home/deploy/jiebanke
chmod -R 755 /home/deploy/jiebanke
- 数据库连接失败
# 检查MySQL服务
systemctl status mysql
# 检查防火墙
ufw status
日志分析
# 查看错误日志
tail -f /var/log/nginx/error.log
# 查看应用日志
tail -f /root/.pm2/logs/backend-error.log
# 数据库日志
tail -f /var/log/mysql/error.log
📞 支持与维护
紧急联系人
- 运维团队: ops@jiebanke.com
- 开发团队: dev@jiebanke.com
- 值班电话: +86-138-0013-8000
维护窗口
- 常规维护: 每周四凌晨 2:00-4:00
- 紧急维护: 随时响应
- 系统监控: 7x24小时
备份策略
# 数据库备份
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年 📅