在開拓模式下,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'
)