跳转到内容
主菜单
主菜单
移至侧栏
隐藏
导航
首页
最近更改
随机页面
MediaWiki帮助
代码酷
搜索
搜索
中文(中国大陆)
外观
创建账号
登录
个人工具
创建账号
登录
未登录编辑者的页面
了解详情
贡献
讨论
编辑“︁
Django生产环境检查清单
”︁(章节)
页面
讨论
大陆简体
阅读
编辑
编辑源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
编辑
编辑源代码
查看历史
常规
链入页面
相关更改
特殊页面
页面信息
外观
移至侧栏
隐藏
您的更改会在有权核准的用户核准后向读者展示。
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
== 检查清单 == === 1. 关闭调试模式 === 在开发环境中,`DEBUG = True` 会显示详细的错误信息,但在生产环境中必须关闭以避免泄露敏感信息。 <syntaxhighlight lang="python"> # settings.py DEBUG = False # 确保在生产环境中设置为 False </syntaxhighlight> === 2. 设置正确的 `ALLOWED_HOSTS` === `ALLOWED_HOSTS` 是一个安全措施,用于限制Django应用可以服务的主机名。 <syntaxhighlight lang="python"> # settings.py ALLOWED_HOSTS = ['yourdomain.com', 'www.yourdomain.com'] # 替换为实际域名 </syntaxhighlight> === 3. 配置静态文件和媒体文件 === 在生产环境中,静态文件(CSS、JS)和媒体文件(用户上传的文件)应由Web服务器(如Nginx或Apache)直接处理,而不是Django。 <syntaxhighlight lang="python"> # settings.py STATIC_URL = '/static/' STATIC_ROOT = '/var/www/yourdomain.com/static/' # 静态文件收集路径 MEDIA_URL = '/media/' MEDIA_ROOT = '/var/www/yourdomain.com/media/' # 媒体文件存储路径 </syntaxhighlight> 运行以下命令收集静态文件: <syntaxhighlight lang="bash"> python manage.py collectstatic </syntaxhighlight> === 4. 使用生产级数据库 === 开发中常用的SQLite不适合生产环境。推荐使用PostgreSQL或MySQL。 <syntaxhighlight lang="python"> # settings.py DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': 'mydatabase', 'USER': 'mydatabaseuser', 'PASSWORD': 'mypassword', 'HOST': 'localhost', 'PORT': '5432', } } </syntaxhighlight> === 5. 启用HTTPS === 使用HTTPS加密数据传输,防止中间人攻击。可以通过Let's Encrypt免费获取SSL证书。 配置Django强制HTTPS: <syntaxhighlight lang="python"> # settings.py SECURE_SSL_REDIRECT = True # 强制所有请求使用HTTPS SESSION_COOKIE_SECURE = True # 仅通过HTTPS传输会话Cookie CSRF_COOKIE_SECURE = True # 仅通过HTTPS传输CSRF Cookie </syntaxhighlight> === 6. 配置安全的密钥 === `SECRET_KEY` 是Django的核心安全组件,必须保密且不应硬编码在代码中。推荐使用环境变量存储。 <syntaxhighlight lang="python"> # settings.py import os SECRET_KEY = os.environ.get('DJANGO_SECRET_KEY') </syntaxhighlight> === 7. 设置适当的日志记录 === 生产环境需要详细的日志记录以排查问题。 <syntaxhighlight lang="python"> # settings.py LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'handlers': { 'file': { 'level': 'ERROR', 'class': 'logging.FileHandler', 'filename': '/var/log/django/error.log', }, }, 'loggers': { 'django': { 'handlers': ['file'], 'level': 'ERROR', 'propagate': True, }, }, } </syntaxhighlight> === 8. 使用WSGI服务器 === 开发服务器(`runserver`)不适合生产环境。推荐使用Gunicorn或uWSGI。 安装Gunicorn: <syntaxhighlight lang="bash"> pip install gunicorn </syntaxhighlight> 启动Gunicorn: <syntaxhighlight lang="bash"> gunicorn --workers 3 myproject.wsgi:application </syntaxhighlight> === 9. 配置缓存 === 缓存可以显著提高性能。推荐使用Redis或Memcached。 <syntaxhighlight lang="python"> # settings.py CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.redis.RedisCache', 'LOCATION': 'redis://127.0.0.1:6379', } } </syntaxhighlight> === 10. 定期备份数据库 === 定期备份数据库以防止数据丢失。可以使用`pg_dump`(PostgreSQL)或`mysqldump`(MySQL)。 PostgreSQL备份示例: <syntaxhighlight lang="bash"> pg_dump -U mydatabaseuser -h localhost mydatabase > backup.sql </syntaxhighlight> === 11. 监控和性能优化 === 使用工具如Django Debug Toolbar(仅开发环境)、Sentry(错误监控)和Prometheus(性能监控)来优化应用。
摘要:
请注意,所有对代码酷的贡献均被视为依照知识共享署名-非商业性使用-相同方式共享发表(详情请见
代码酷:著作权
)。如果您不希望您的文字作品被随意编辑和分发传播,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)