生产部署
拓扑
生产 .env 要点
至少:DEBUG=False、独立 SECRET_KEY、ALLOWED_HOSTS=portal.bucssa.org、CSRF_TRUSTED_ORIGINS=https://portal.bucssa.org、SECURE_SSL_REDIRECT=true、SITE_URL=https://portal.bucssa.org、Neon DB_* + DB_SSLMODE=require。再配 Google、Resend、R2。
证书申请/续期、Nginx 站点文件见 域名与 HTTPS。本机路径与 unit 见 基础设施概览。
本机落点
| 项 | 值 |
|---|---|
| 代码 | /root/CSSAPortal |
| systemd | cssaportal.service |
| 监听 | 127.0.0.1:8000(gunicorn,3 workers) |
| Nginx | /etc/nginx/sites-available/portal.bucssa.org |
| 发布脚本 | /root/deploy.sh |
日常发布(脚本会 checkout master、pull、migrate、collectstatic、systemctl restart cssaportal):
sudo /root/deploy.sh
不要把脚本里的注释或任何口令抄进仓库。首次初始化仍用下面的管理命令;之后发布走脚本即可。
初始化顺序
python manage.py migrate
python manage.py seed_departments
python manage.py setup_google_oauth
python manage.py create_admin your-email@gmail.com
python manage.py collectstatic --noinput
gunicorn 示例(应由 systemd ExecStart 调用,不要无托管地挂在 SSH 会话里):
gunicorn cssaportal.wsgi:application --bind 127.0.0.1:8000 --workers 3
Nginx 必须满足的行为
location /反代到 gunicorn- 转发
Host、X-Forwarded-For、X-Forwarded-Proto - 未使用 R2 时,为
/media/配置 alias 到MEDIA_ROOT
证书申请/续期属于服务器运维,不在本 Django 仓库。
Google 生产客户端
- Origin:
https://portal.bucssa.org - Callback:
https://portal.bucssa.org/accounts/google/login/callback/