部署运维
配置
- 生产环境建议通过环境变量注入
DB_* / REDIS_* / JWT_SECRET_KEY等敏感项 - 确保
DJANGO_ALLOWED_HOSTS已配置(逗号分隔) - 生产环境建议固定:
DJANGO_SETTINGS_MODULE=config.settings.prod
生产部署
依赖服务
- MySQL(必需)
- Redis(7.x,必需)
- MinIO(可选,文件存储)
传统部署(Gunicorn + Nginx)
bash
# 创建并激活虚拟环境
python -m venv .venv
# 安装依赖(含 gunicorn)
pip install -r requirements.txt
pip install gunicorn
# 收集静态资源
python manage.py collectstatic --noinputbash
export DJANGO_SETTINGS_MODULE=config.settings.prod
export DJANGO_ALLOWED_HOSTS=your.domain.com
gunicorn config.wsgi:application -b 0.0.0.0:8000systemd 示例
ini
[Unit]
Description=youlai-django
After=network.target
[Service]
WorkingDirectory=/opt/youlai-django
Environment=DJANGO_SETTINGS_MODULE=config.settings.prod
Environment=DJANGO_ALLOWED_HOSTS=your.domain.com
ExecStart=/opt/youlai-django/.venv/bin/gunicorn config.wsgi:application -b 0.0.0.0:8000
Restart=always
[Install]
WantedBy=multi-user.targetNginx 反向代理示例:
nginx
server {
listen 80;
server_name your.domain.com;
client_max_body_size 20m;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}Docker / Compose
仓库自带 docker-compose.yml(MySQL/Redis/MinIO + Web),在 youlai-django 目录执行:
bash
docker compose up -d --build默认端口:
- Web:8000
- MySQL:3306
- Redis:6379
- MinIO:9000 / 9001
日志与监控问题排查
- 启动失败优先检查 MySQL/Redis 连通性与
.env配置 - 接口 404:确认是否带上
/api/v1前缀(见config/urls.py) - Swagger 访问不到:确认端口/反代路径是否正确
- 静态资源异常:执行
collectstatic并确保部署目录可写 - Swagger:
http://localhost:8000/api/docs/swagger/
