生产环境部署
本文档提供在生产环境中部署项目的详细步骤。
在生产环境中,使用 Nginx 作为反向代理,使用 Gunicorn 运行后端应用。
第一步:配置环境变量
在项目根目录下创建 .env 文件。生产环境至少需要数据库、Django 密钥、Host/CSRF/CORS、SM2、Redis 和 Celery 配置。
完整变量说明、默认值、构建阶段镜像源变量和示例 .env 请参阅环境变量。
text
POSTGRES_DB=myucspace
POSTGRES_USER=postgres
POSTGRES_PASSWORD=change_me_to_a_strong_password
POSTGRES_HOST=db
POSTGRES_PORT=5432
DJANGO_DEBUG=false
DJANGO_SECRET_KEY=change_me_to_a_long_random_secret
DJANGO_ALLOWED_HOSTS=example.com,localhost,127.0.0.1
CSRF_DOMAINS=https://example.com
CORS_ALLOWED_ORIGINS=https://example.com
SM2_PUBLIC_KEY=your_sm2_public_key
SM2_PRIVATE_KEY=your_sm2_private_key
REDIS_URL=redis://redis:6379/2
CELERY_BROKER_URL=redis://redis:6379/0
CELERY_RESULT_BACKEND=redis://redis:6379/1WARNING
出于安全考虑,请为所有密钥和密码使用强而唯一的值。建议在生产环境中使用密钥管理器或环境变量管理工具。
TIP
生产环境的 docker-compose.prod.yml 包含 redis、celery-worker 和 celery-beat 服务。
- Redis 配置了 AOF 持久化(
redis-server --appendonly yes),数据存储在/data/redis。 - Celery Beat 使用
django-celery-beat的DatabaseScheduler,调度数据存储在 MySQL 中。运行python manage.py migrate后,可通过 Django Admin 管理定时任务。
第二步:构建与运行
bash
# Build and run
sudo docker compose -f docker-compose.prod.yml up --build -d
# Check service status
sudo docker compose -f docker-compose.prod.yml ps
# View logs (if any issues occur)
sudo docker compose -f docker-compose.prod.yml logs -f第三步:初始化数据库并创建用户
bash
# Run database migrations
sudo docker compose -f docker-compose.prod.yml exec backend python manage.py migrate
# Create an administrator account
sudo docker compose -f docker-compose.prod.yml exec backend python manage.py createsuperuser第四步:配置 HTTPS(可选但推荐)
有关使用 Nginx 配置 HTTPS 的详细说明,请参阅 HTTPS 部署指南。
生产环境访问端点
| 服务 | URL |
|---|---|
| 前端 | http://localhost |
| 后端 API | http://localhost/api/v1/ |
| 管理后台 | http://localhost/django-admin/ |
国内镜像配置
如果拉取镜像失败,请使用以下命令配置 Docker 镜像加速器:
bash
sudo -i
bash <(curl -sSL https://linuxmirrors.cn/docker.sh)更多信息请参阅:Docker 安装与镜像加速切换。