Skip to content

生产环境部署

本文档提供在生产环境中部署项目的详细步骤。

在生产环境中,使用 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/1

WARNING

出于安全考虑,请为所有密钥和密码使用强而唯一的值。建议在生产环境中使用密钥管理器或环境变量管理工具。

TIP

生产环境的 docker-compose.prod.yml 包含 rediscelery-workercelery-beat 服务。

  • Redis 配置了 AOF 持久化(redis-server --appendonly yes),数据存储在 /data/redis
  • Celery Beat 使用 django-celery-beatDatabaseScheduler,调度数据存储在 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
后端 APIhttp://localhost/api/v1/
管理后台http://localhost/django-admin/

国内镜像配置

如果拉取镜像失败,请使用以下命令配置 Docker 镜像加速器:

bash
sudo -i
bash <(curl -sSL https://linuxmirrors.cn/docker.sh)

更多信息请参阅:Docker 安装与镜像加速切换