django-production使您的项目准备好投入生产
项目描述
django-production
为运行Django到生产环境(或任何其他部署环境)而设计的有见地的默认设置。
安装
pip install django-production
DJANGO_SETTINGS_MODULE=yourproject.settings django-production-apply
功能说明
当您安装此软件包时,它将安装以下依赖项
whitenoise
- 用于服务静态文件django-environ
- 用于从环境变量读取设置django-webserver[gunicorn]
- 通过manage.py
运行Web服务器django-alive
- 在/-/alive/
提供健康检查端点
运行 django-production-apply
将将 django-production
设置追加到您的项目设置文件,并将健康检查端点添加到您的项目的 urlpatterns
。您可以在 settings.py 中查看添加的设置。
您应将 django-production
添加到您的需求中,以保持必要的依赖项。或者,一旦应用了补丁,您可以将依赖项移动到您自己的需求文件中,并完全删除 django-production
。
生产环境运行
使用 python manage.py gunicorn
启动Web服务器。
将 WEB_CONCURRENCY
环境变量设置为要运行的gunicorn工作进程数。从CPU核心数的两倍开始。
必需的环境变量
DJANGO_ENV
- 设置为production
以启用生产设置SECRET_KEY
- 您项目的密钥
使用 DJANGO_ENV=production
时的可选环境变量
ALLOWED_HOSTS
- 允许的主机逗号分隔列表DEBUG
- 默认为False
,您可能不想更改它DATABASE_URL
- 数据库URL(参见 https://django-environ.readthedocs.io/en/latest/types.html#environ-env-db-url)CACHE_URL
或REDIS_URL
- 缓存URL(参见 https://django-environ.readthedocs.io/en/latest/types.html#environ-env-cache-url)SECURE_HSTS_INCLUDE_SUBDOMAINS
- 如果您的网站没有任何子域需要使用HTTP,请将此设置为True
在底层,django-production
使用 django-environ
的 FileAwareEnv
类来读取环境变量。这允许您将 _FILE
添加到任何环境变量中,以从文件中加载值。例如,DATABASE_URL_FILE=/var/run/secrets/DATABASE_URL
将从该文件加载数据库URL。
答案
您没有提出任何问题,但如果您有,可能会是以下之一
为什么你要写这个?
Django 对如何部署持中立态度。这使得新用户更难。即使是经验丰富的用户也可能从项目到项目复制这些内容。这旨在使项目准备部署变得容易。我还希望这能给我们一个机会,在社区中就这些设置达成共识,也许还可以将其中的某些内容纳入 Django 本身。
为什么你要写我的设置文件?你只需导入即可。
- 这使查看更改变得更容易。我认为设置文件应该尽可能简单。将设置放在那里使得调试更容易。
- 一刀切的方法在这里永远不会奏效。我正在追求大多数情况下都适用。一旦应用更改,用户可以自由地根据自己的喜好进行更改。这基本上就是
startproject
已经在做的事情。
我不同意你使用的设置/包。
这不是一个问题,但是好吧。请随时提交包含您的建议和理由的问题或拉取请求。我们感谢反馈和贡献。我们可能不会接受那些我们认为不符合该项目精神(记住,它是有观点的)的更改。如果您不确定,请不要犹豫,提出疑问。
发布新版本
- 更新
django_production/__init__.py
中的版本 - 更新
CHANGELOG.md
中的变更日志 - 提交更改
- 用版本号标记提交(
git tag -s v0.9.9 -m v0.9.9
) - 推送提交和标记(
git push && git push --tags
) - 使用
flit publish
发布到 PyPI
待办事项
- 处理常见对象存储的媒体设置
- 电子邮件设置,包括非SMTP后端如SES