在开拓模式下,Django自带了一个开拓处事器,它仅用于测试目标。一旦完成了Web应用的开拓,就应该陈设到真正的出产处事器上。假如开拓者还没陈设过真正的Web应用,那么可以参考本文。本文提供了操作mod_wsgi陈设Django应用的具体步调。
一、mod_wsgi
WSGI,即Web Server Gateway
Interface,Web处事器网关接口,是一个Web处事器的Python尺度,在PEP
333尺度中界说,并被很多框架实现。Python是一门传统的编程语言,所以WSGI提供了一种让Web处事器处事于Python应用措施的方法,使得Python应用措施可以与Web处事器举办交互。
Apache是最风行的Web处事器之一,mod_wsgi是Apache的模块之一,可用于把Python应用措施托管到Apache处事器上。这种要领是陈设Django应用相对简朴的要领。
在Ubuntu 14.04版,默认安装中包括了Python。下面开始操作mod_wsgi陈设Django应用。
二、建设Django应用措施在本节中,我们要安装所需的软件包,并构建一个Hello World的Django应用措施,并通过mod_wsgi模块提供处事。这里假设你已经登录到新建设的虚拟机。
1、建设一个Ubuntu虚拟机建设一个操纵系统为Ubuntu 14.04 x64的Linux虚拟机,物理机也可以。步调略。
2、安装Python包揽理器利用Ubuntu的包揽理器apt-get,安装Python包揽理器。留意,利用前需先对Ubuntu的包揽理器举办更新。
# sudo apt-get update
Pip是Python语言的包揽理器,它可以辅佐我们安装、修改、卸载Python包。要安装pip很是简朴,执行呼吁:
# sudo apt-get install python-pip
apt-get东西会自带安装pip的最新不变版。可是,台湾主机
台湾伺服器,假如你想安装指定版本的pip,可以思量从源码安装。
参考:https://pip.pypa.io/en/latest/installing.html
还可以利用easy_install来替代pip,它有相似的成果。
要从新建设项目,需要先安装Django软件包。执行呼吁:
# sudo pip install Django
要想指定Django的安装版本,好比1.5.5版,可以这样:
# sudo pip install Django==1.5.5
虽然,你仍然可以利用Ubuntu的包揽理器apt-get来安装Django,但这大概安装的不是最新不变版的Django。
4、安装其他依赖假如要陈设一个已有的项目,可以递归运行pip来安装项目标依赖。凡是,在项目标源码目次存在一个名为requirements.txt的设置文件,它包括了运行项目所需的依赖包:
# pip install -r requirements.txt
假如项目还包括了其他的Python项目,那么大概会有差异版本的Python包会造成互相滋扰。办理步伐是利用virtualenv,它可以让每个Python项目在本身的虚拟Python情况中运行,互相间是断绝的。
这里有一个virtualenv的教程:https://www.digitalocean.com/community/tutorials/common-python-tools-using-virtualenv-installing-with-pip-and-managing-packages
假如正在开拓Django应用措施,你大概想建设或更新设置文件,可以执行呼吁:
# pip freeze > requirements.txt
pip freeze呼吁会打印出当前情况中已经安装了的Python包,大于标记“>”会把呼吁的执行功效输出到指定的requirements.txt设置文件中。
5、建设Hello World应用措施要建设名为helloworld的Django应用,运行呼吁:
# django-admin.py startproject helloworld
要留意,会建设一个名为helloworld的新目次。要运行此项目,可以这样:
# cd helloworld/
# django-admin.py startapp helloapp
在欣赏器中可以看到Hello World的输出。下面,接着在项目中添加settings.py,找到INSTALLED_APPS处,添加以下内容:
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'helloapp'
)