Files
Scoring-System/DEPLOY.md

4.9 KiB
Raw Blame History

创赢未来报名评分系统 - 生产环境部署指南

📋 部署前准备

系统要求

  • 操作系统: Ubuntu 20.04+ / CentOS 7+ / Debian 10+
  • 内存: 至少 2GB RAM
  • 磁盘: 至少 20GB 可用空间
  • Docker: 20.10+
  • Docker Compose: 2.0+

安装 Docker

# Ubuntu/Debian
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER

# 安装 Docker Compose
sudo apt-get install -y docker-compose-plugin
# 或
pip install docker-compose

🚀 快速部署

1. 拉取代码

git clone https://gitea.tangledup-ai.com/quant-speed-AI/Scoring-System.git
cd Scoring-System

2. 配置环境变量

# 复制环境变量模板
cp .env.example .env

# 编辑 .env 文件,填入您的实际配置
vim .env

必须配置的项目:

  • SECRET_KEY: Django 安全密钥(必须修改!)
  • DB_PASSWORD: 数据库密码
  • WECHAT_*: 微信支付相关配置(如需支付功能)
  • ALIYUN_*: 阿里云 OSS 和 AI 服务配置(如需语音转写和 AI 评估)

3. 执行部署脚本

# 给脚本添加执行权限
chmod +x deploy.sh

# 执行部署
./deploy.sh

🔧 手动部署(高级)

1. 构建镜像

docker-compose build --no-cache

2. 启动服务

# 后台启动
docker-compose up -d

# 查看日志
docker-compose logs -f

# 查看特定服务日志
docker-compose logs -f backend
docker-compose logs -f frontend

3. 执行数据库迁移

docker-compose exec backend python manage.py migrate
docker-compose exec backend python manage.py createsuperuser

4. 收集静态文件

docker-compose exec backend python manage.py collectstatic --noinput

🌐 Nginx 反向代理配置(推荐)

如果需要使用域名和 HTTPS在服务器上安装 Nginx

# /etc/nginx/sites-available/scoring-system
server {
    listen 80;
    server_name your-domain.com;
    
    location / {
        proxy_pass http://localhost:80;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

启用配置:

sudo ln -s /etc/nginx/sites-available/scoring-system /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

🔒 HTTPS 配置Let's Encrypt

# 安装 Certbot
sudo apt-get install -y certbot python3-certbot-nginx

# 申请证书
sudo certbot --nginx -d your-domain.com

# 自动续期
sudo certbot renew --dry-run

📊 常用命令

# 查看运行状态
docker-compose ps

# 停止服务
docker-compose down

# 重启服务
docker-compose restart

# 重启单个服务
docker-compose restart backend

# 进入容器
docker-compose exec backend bash
docker-compose exec frontend sh

# 查看容器日志
docker-compose logs -f --tail=100 backend

# 清理未使用的镜像
docker image prune -f

# 更新部署(拉取最新代码并重启)
git pull
./deploy.sh

🔍 故障排查

问题1: 端口被占用

# 检查端口占用
sudo netstat -tlnp | grep 8000
sudo netstat -tlnp | grep 80

# 修改 docker-compose.yml 中的端口映射

问题2: 数据库连接失败

# 检查数据库配置
docker-compose exec backend python manage.py dbshell

# 查看后端日志
docker-compose logs backend | grep -i error

问题3: 静态文件无法访问

# 重新收集静态文件
docker-compose exec backend python manage.py collectstatic --noinput

# 检查权限
ls -la backend/static/
ls -la backend/media/

问题4: 容器无法启动

# 查看详细日志
docker-compose logs --no-color

# 检查配置
docker-compose config

💾 数据备份

数据库备份

# 进入容器执行备份
docker-compose exec backend python manage.py dumpdata > backup_$(date +%Y%m%d).json

# 或使用 PostgreSQL 直接备份
docker exec scoring_system_db pg_dump -U postgres scoring_system > db_backup_$(date +%Y%m%d).sql

媒体文件备份

# 备份上传的文件
tar -czvf media_backup_$(date +%Y%m%d).tar.gz backend/media/

🔄 自动部署CI/CD

使用 Gitea Actions 或 Jenkins 实现自动部署:

# .gitea/workflows/deploy.yaml
name: Deploy to Production

on:
  push:
    branches: [main]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Deploy to Server
        uses: appleboy/ssh-action@master
        with:
          host: ${{ secrets.HOST }}
          username: ${{ secrets.USERNAME }}
          password: ${{ secrets.PASSWORD }}
          script: |
            cd ~/Scoring-System
            git pull
            ./deploy.sh

📞 技术支持


部署完成后访问地址: