Files
Scoring-System/DEPLOY.md
爽哒哒 e3a620b395
All checks were successful
Deploy to Server / deploy (push) Successful in 19s
chore: 优化 Docker 配置,添加生产环境部署脚本和文档
2026-03-18 22:48:36 +08:00

250 lines
4.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.
# 创赢未来报名评分系统 - 生产环境部署指南
## 📋 部署前准备
### 系统要求
- **操作系统**: Ubuntu 20.04+ / CentOS 7+ / Debian 10+
- **内存**: 至少 2GB RAM
- **磁盘**: 至少 20GB 可用空间
- **Docker**: 20.10+
- **Docker Compose**: 2.0+
### 安装 Docker
```bash
# 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. 拉取代码
```bash
git clone https://gitea.tangledup-ai.com/quant-speed-AI/Scoring-System.git
cd Scoring-System
```
### 2. 配置环境变量
```bash
# 复制环境变量模板
cp .env.example .env
# 编辑 .env 文件,填入您的实际配置
vim .env
```
**必须配置的项目:**
- `SECRET_KEY`: Django 安全密钥(必须修改!)
- `DB_PASSWORD`: 数据库密码
- `WECHAT_*`: 微信支付相关配置(如需支付功能)
- `ALIYUN_*`: 阿里云 OSS 和 AI 服务配置(如需语音转写和 AI 评估)
### 3. 执行部署脚本
```bash
# 给脚本添加执行权限
chmod +x deploy.sh
# 执行部署
./deploy.sh
```
## 🔧 手动部署(高级)
### 1. 构建镜像
```bash
docker-compose build --no-cache
```
### 2. 启动服务
```bash
# 后台启动
docker-compose up -d
# 查看日志
docker-compose logs -f
# 查看特定服务日志
docker-compose logs -f backend
docker-compose logs -f frontend
```
### 3. 执行数据库迁移
```bash
docker-compose exec backend python manage.py migrate
docker-compose exec backend python manage.py createsuperuser
```
### 4. 收集静态文件
```bash
docker-compose exec backend python manage.py collectstatic --noinput
```
## 🌐 Nginx 反向代理配置(推荐)
如果需要使用域名和 HTTPS在服务器上安装 Nginx
```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;
}
}
```
启用配置:
```bash
sudo ln -s /etc/nginx/sites-available/scoring-system /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
```
## 🔒 HTTPS 配置Let's Encrypt
```bash
# 安装 Certbot
sudo apt-get install -y certbot python3-certbot-nginx
# 申请证书
sudo certbot --nginx -d your-domain.com
# 自动续期
sudo certbot renew --dry-run
```
## 📊 常用命令
```bash
# 查看运行状态
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: 端口被占用
```bash
# 检查端口占用
sudo netstat -tlnp | grep 8000
sudo netstat -tlnp | grep 80
# 修改 docker-compose.yml 中的端口映射
```
### 问题2: 数据库连接失败
```bash
# 检查数据库配置
docker-compose exec backend python manage.py dbshell
# 查看后端日志
docker-compose logs backend | grep -i error
```
### 问题3: 静态文件无法访问
```bash
# 重新收集静态文件
docker-compose exec backend python manage.py collectstatic --noinput
# 检查权限
ls -la backend/static/
ls -la backend/media/
```
### 问题4: 容器无法启动
```bash
# 查看详细日志
docker-compose logs --no-color
# 检查配置
docker-compose config
```
## 💾 数据备份
### 数据库备份
```bash
# 进入容器执行备份
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
```
### 媒体文件备份
```bash
# 备份上传的文件
tar -czvf media_backup_$(date +%Y%m%d).tar.gz backend/media/
```
## 🔄 自动部署CI/CD
使用 Gitea Actions 或 Jenkins 实现自动部署:
```yaml
# .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
```
## 📞 技术支持
- **项目仓库**: https://gitea.tangledup-ai.com/quant-speed-AI/Scoring-System
- **问题反馈**: 在仓库提交 Issue
---
**部署完成后访问地址:**
- 🌐 前端页面: http://your-server-ip/
- 🔧 后台管理: http://your-server-ip:8000/admin/
- 📚 API 文档: http://your-server-ip:8000/api/docs/