部署清单


本文整理自网络,侵删。

部署清单

互联网是一个敌对的环境。在部署Django项目之前,您应该花一些时间在考虑安全性,性能和操作的情况下检查设置。

Django包含许多安全功能。有些是内置的,并且始终启用。其他选项是可选的,因为它们并不总是合适的,或者因为它们不方便开发。例如,强制HTTPS可能不适用于所有网站,并且对于本地开发而言是不切实际的。

性能优化是另一种权衡取舍的方法。例如,缓存在生产中很有用,而对于本地开发则没有用。错误报告的需求也大不相同。

以下清单包括以下设置:

  • 必须正确设置Django以提供预期的安全级别;
  • 预期在每种环境中都会有所不同;
  • 启用可选的安全功能;
  • 实现性能优化;
  • 提供错误报告。

其中许多设置都是敏感的,应视为机密。如果要发布项目的源代码,通常的做法是发布合适的设置进行开发,并使用私有设置模块进行生产。

运行manage.py check --deploy

使用该选件可以自动执行以下所述的某些检查。确保按照选件文档中的说明针对生产设置文件运行它。

check --deploy

关键设置

SECRET_KEY

密钥必须是一个较大的随机值,并且必须保密。

确保生产中使用的密钥不在其他任何地方使用,并避免将其提交给源代码管理。这减少了攻击者可以从中获取密钥的向量的数量。

可以考虑从环境变量加载密钥,而不是在设置模块中对密钥进行硬编码:

import os
SECRET_KEY = os.environ['SECRET_KEY']

或来自文件:

with open('/etc/secret_key.txt') as f:
    SECRET_KEY = f.read().strip()

DEBUG

您绝不能在生产中启用调试。

当然,您正在使用开发您的项目,因为这将启用方便的功能,例如浏览器中的完整追溯。DEBUG = True

但是,对于生产环境而言,这是一个非常糟糕的主意,因为它会泄露有关项目的大量信息:源代码的摘录,局部变量,设置,使用的库等。

特定于环境的设置

ALLOWED_HOSTS

那时,如果没有合适的值,Django根本无法工作。DEBUG = FalseALLOWED_HOSTS

需要此设置来保护您的站点免受某些CSRF攻击。如果使用通配符,则必须对HostHTTP标头执行自己的验证,否则,请确保您不容易受到此类攻击。

您还应该配置位于Django前面的Web服务器以验证主机。它应该以静态错误页面响应或忽略对不正确主机的请求,而不是将请求转发给Django。这样,您将避免在Django日志(或电子邮件(如果您以这种方式配置了错误报告)中)出现虚假错误。例如,在nginx上,您可以设置默认服务器以在无法识别的主机上返回“ 444 No Response”:

server {
    listen 80 default_server;
    return 444;
}

CACHES

如果您使用缓存,则连接参数在开发和生产中可能会有所不同。Django默认对每个进程进行本地内存缓存,这可能是不希望的。

缓存服务器通常具有弱认证。确保它们仅接受来自您的应用程序服务器的连接。

DATABASES

数据库连接参数在开发和生产中可能有所不同。

数据库密码非常敏感。您应该像保护他们一样 SECRET_KEY。

为了获得最大的安全性,请确保数据库服务器仅接受来自应用程序服务器的连接。

如果您尚未为数据库设置备份,请立即执行!

EMAIL_BACKEND和相关设置

如果您的站点发送电子邮件,则需要正确设置这些值。

阅读剩余部分

相关阅读 >>

Django 创建第一个项目

基于类的视图

Django 的性能与优化

部署静态文章

错误报告

使用wsgi进行部署

Django 使用表单模板

Django 处理http请求

Django的缓存框架

使用基于类的视图进行表单处理

更多相关阅读请进入《Django》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...