django “如何”系列6:如何部署django
django满满的快捷方法是的web开发者活的更轻松,但是,如果你不能部署你的站点的话,这是一点用都没有的。不违初衷,部署的简化也是django的一大目标。你可以有几个方法轻松的部署django
由于每一种方法(设置大方法下面的小方法)都可以自成一节,所以就不详细说了,本节仅仅是给大家做一个全面的概述
- 使用WSGI部署
- 使用FastCGI, SCGI, or AJP部署
- 使用mod_python (不建议使用)部署(在django1.5中将被移除)
使用WSGI部署
django首要的部署凭平台是WSGI-web服务器网关接口-django的startproject管理命令设置了一个简单的WSGI配置,你可以根据你的项目要求进行调整,使用任意的wsgi兼容的web服务器,django包含了如何使用下面的wsgi服务器的说明。
- 使用Apache and mod_wsgi
- 使用Gunicorn
- 使用uWSGI
在介绍这三种之前,我们先来看一下一些基本的内容
application对象
用wsgi部署的一个关键概念是指定一个重要的可调用的application对象,这个对象是web服务器和你的代码交流的媒介吧,也就是在你的服务器可以访问的python模块里面定义一个叫application的对象。
django1.4中,使用startproject创建的项目会在projectname/目录下创建一个wsgi.py文件,这个文件的初始化内容大概是下面这样的:
import os os.environ.setdefault("DJANGO_SETTINGS_MODULE", "biyesheji.settings") # This application object is used by any WSGI server configured to use this # file. This includes Django's development server, if the WSGI_APPLICATION # setting points here. from django.core.wsgi import get_wsgi_application application = get_wsgi_application() # Apply WSGI middleware here. # from helloworld.wsgi import HelloWorldApplication # application = HelloWorldApplication(application)
如果你没有显式的设置DJANGO_SETTINGS_MODOUL环境变量,os.environ.setdefault仅仅是设置了要使用的默认配置模块
如果你要使用wsgi中间件的话,可以参考最后两行的格式
如何使用Apache和mod_wsgi部署django
使用Apache和mod_wsgi是一个经得起考验的部署django到实际应用中的方法,mod_wsgi是一个可以承载任何python wsgi应用的Apache模块,包括django。django可以与支持mod_wsgi的任意版本的Apache服务器合作工作。官方的mod_wsgi文档是非常奇妙的,不过怎么去了解使用mod_wsgi是你的事情了,哈哈,下面是介绍和使用mod_wsgi的链接
http://code.google.com/p/modwsgi/
http://code.google.com/p/modwsgi/wiki/InstallationInstructions
后面我们会专门讲解
使用Gunicorn部署django
Gunicorn(Green Unicorn)是一个为Unix开发的纯python的wsgi,没有其他的依赖并且很容易安装是使用。有两个在django中使用Gunicorn的方法,一个是使得Gunicorn把django当做另外一个wsgi应用来看待,第二种是使用django和Gunicorn的特殊融合。具体可以参考Gunicorn的文档
http://gunicorn.org/
使用uWSGI保护署django
uWSGI是一个纯C语言开发的快速,自修复和开发者/系统管理员友好的应用程序容器服务器
uWSGI操控一个客户端/服务器的模型,你的web服务器通过和django-uwsgi工作进程交流去服务动态的内容。uWSGI也有几种方法去配置进程,详细自己去看uWSGI的文档或者等我写后面的章节
http://projects.unbit.it/uwsgi/
使用FastCGI, SCGI或者 AJP部署
尽管WSGI是部署django完美的部署平台,但很多人却在使用共享主机(该协议下FastCGI, SCGI, or AJP是唯一可行的选择)。使用他们的前提是安装flup模块,一个专门的python库。
使用mod_python部署
django1.5以后将会移除这个模块,所以建议你使用mod_wsgi或者其他可用的服务器。
鉴于篇幅问题,这节主要跟大家介绍部署django的大体方法和分类,具体的部署以后我会通过例子来跟大家讲解