程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2023-06(2)

Django部署准备工作

发布于2019-08-22 15:53     阅读(1350)     评论(0)     点赞(14)     收藏(4)


Django 的runserver只为开发环境提供了单进程的django服务器,这不能用于生产环境上。将我们的Django程序部署到产品服务器运行之前,我们可能还要关注下面提到的一些地方。

 

1.关闭Debug模式

使用django-admin.py startproject 生成的项目,默认settings.py中的DEBUG是开户的,这在正式环境可能会带来以下问题:

  1. 所有的数据库查询将被保存在内存中, 以 django.db.connection.queries 的形式. 你可以想象,这个吃内存!
  2. 任何404错误都将呈现django的特殊的404页面,而不是普通的404页面。 这个页面包含潜在的敏感信息,但是不应暴露在公共互联网。
  3. 你的应用中任何未捕获的异常,从基本的python语法错误到数据库错误以及模板语法错误都会返回漂亮的Django错误页面。 这个页面包含了比404错误页面更多的敏感信息,所以这个页面绝对不要公开暴露。

简单的说,把DEBUG设置成True 相当于告诉Django你的网站只会被可信任的开发人员使用。 Internet里充满了不可信赖的事物,当你准备部署你的应用时,首要的事情就是把DEBUG设置为False 。

 

2.关闭模板的Debug模式

类似地,你应该在生产环境中把TEMPLATE_DEBUG设置为False ,如果这个设为True ,为了在那个好看的错误页面上显示足够的东西,Django的模版系统就会为每一个模版保存一些额外的信息。

 

3.实现404/500模板

如果DEBUG 设置为True ,Django会显示那个自带的404错误页面。否则他会显示一个在你的模版根目录中名字叫404.html的模版 所以,当你准备部署你的应用时,你会需要创建这个模版并在里面放一些有意义的“页面未找到”的信息。

类似地,500也是一样的。

 

4.设置错误警报

当Django网站运行中出现了异常,我们会希望去了解以便于修正它。 默认情况下,Django在你的代码引发未处理的异常时,发送一封Email至开发者团队。但你需要去做两件事来设置这种行为。
首先,改变你的ADMINS设置用来引入关注者的E-mail地址:

ADMINS=(
'devloper1', 'devloper1@example.com',
'devloper1', 'devloper2@example.com',
)

第二,确保你的服务器配置为发送电子邮件。 设置好postfix或sendmail等与Django设置相关的邮件服务器,你需要将 EMAIL_HOST设置为你的邮件服务器的正确的主机名. 默认模式下是设置为’localhost’。

 

5.设置连接中断警报

如果你安装有CommonMiddleware,你就具有了设置这个选项的能力:有人在访问你的Django网站的一个非空的链接而导致一个404错误的发生和连接中断的情况,你将收到一封邮件。

如果你想激活这个特性,设置SEND_BROKEN_LINK_EMAILS 为True(默认为False),并设置你的MANAGERS为关注者的邮件地址,这些邮件地址将会收到报告连接中断错误的邮件。

MANAGERS=(
'devloper1', 'devloper1@example.com',
'devloper1', 'devloper2@example.com',
)


6.不同环境的settings配置

从上面提到的一些信息(不仅仅是上面一些信息)我们可以看出,在开发环境、测试环境和正式环境我们可能需要不同的配置,怎样避免在不同的环境产生的代码不一致呢。

  1. 设置成两个全面的,彼此独立的配置文件
  2. 设置一个基本的配置文件(比如,为了开发)和第二个(为了产品)配置文件,第二个配置文件仅仅从基本的那个配置文件导入配置,并对需要定义的进行复写.
  3. 使用一个单独的配置文件,此配置文件包含一个Python的逻辑判断根据上下文环境改变设置。

这里只拿第三种方式举个小例子:

复制代码
# settings.py
import socket

if socket.gethostname() == 'my‐laptop':
DEBUG = TEMPLATE_DEBUG = True
else:
DEBUG = TEMPLATE_DEBUG = False
# ...
复制代码

我们需要记住,DJANGO_SETTINGS_MODULE环境变量指定了我们应用程序的入口,它指定的settings里的URLConf完成核心控制器功能。

Django真正的部署方案(后续学习分享):

  • apache+mod_python
  • apache+mod_wsgi
  • fastCGI+flup+manage.py 
  • apache+fastCGI+mod_rewrite
  • fastCGI+lighttpd+mod_fastcgi

 



所属网站分类: 技术文章 > 博客

作者:小胖子爱吃土豆

链接:https://www.pythonheidong.com/blog/article/52630/3dd0320a70c3372a0a10/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

14 0
收藏该文
已收藏

评论内容:(最多支持255个字符)