成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

利用mod_wsgi部署Django應(yīng)用

一、mod_wsgi

WSGI,即Web Server Gateway Interface,Web服務(wù)器網(wǎng)關(guān)接口,是一個Web服務(wù)器的Python標(biāo)準(zhǔn),在PEP 333標(biāo)準(zhǔn)中定義,并被許多框架實現(xiàn)。Python是一門傳統(tǒng)的編程語言,所以WSGI提供了一種讓W(xué)eb服務(wù)器服務(wù)于Python應(yīng)用程序的方式,使得 Python應(yīng)用程序可以與Web服務(wù)器進行交互。
Apache是最流行的Web服務(wù)器之一,mod_wsgi是Apache的模塊之一,可用于把Python應(yīng)用程序托管到Apache服務(wù)器上。這種方法是部署Django應(yīng)用相對簡單的方法。

創(chuàng)新互聯(lián)長期為上千余家客戶提供的網(wǎng)站建設(shè)服務(wù),團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為北關(guān)企業(yè)提供專業(yè)的網(wǎng)站建設(shè)、網(wǎng)站制作,北關(guān)網(wǎng)站改版等技術(shù)服務(wù)。擁有10年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。

在Ubuntu 14.04版,默認(rèn)安裝中包含了Python。下面開始利用mod_wsgi部署Django應(yīng)用。

二、創(chuàng)建Django應(yīng)用程序

在本節(jié)中,我們要安裝所需的軟件包,并構(gòu)建一個Hello World的Django應(yīng)用程序,并通過mod_wsgi模塊提供服務(wù)。這里假設(shè)你已經(jīng)登錄到新創(chuàng)建的虛擬機。

1、創(chuàng)建一個Ubuntu虛擬機

創(chuàng)建一個操作系統(tǒng)為Ubuntu 14.04 x64的Linux虛擬機,物理機也可以。步驟略。

2、安裝Python包管理器

使用Ubuntu的包管理器apt-get,安裝Python包管理器。注意,使用前需先對Ubuntu的包管理器進行更新。

#sudoapt-getupdate

Pip是Python語言的包管理器,它可以幫助我們安裝、修改、卸載Python包。要安裝pip非常簡單,執(zhí)行命令:

#sudoapt-getinstallpython-pip

apt-get工具會自帶安裝pip的最新穩(wěn)定版。但是,如果你想安裝指定版本的pip,可以考慮從源碼安裝。
參考:https://pip.pypa.io/en/latest/installing.html
還可以使用easy_install來替代pip,它有相似的功能。

3、安裝Django

要從頭創(chuàng)建項目,需要先安裝Django軟件包。執(zhí)行命令:

#sudopipinstallDjango

要想指定Django的安裝版本,比如1.5.5版,可以這樣:

#sudopipinstallDjango==1.5.5

當(dāng)然,你仍然可以使用Ubuntu的包管理器apt-get來安裝Django,但這可能安裝的不是最新穩(wěn)定版的Django。

4、安裝其他依賴

如果要部署一個已有的你大爺項目,可以遞歸運行pip來安裝項目的依賴。通常,在項目的源碼目錄存在一個名為requirements.txt的配置文件,它包含了運行項目所需的依賴包:

#pipinstall-rrequirements.txt

如果項目還包含了其他的Python項目,那么可能會有不同版本的Python包會造成彼此干擾。解決辦法是使用virtualenv,它可以讓每個Python項目在自己的虛擬Python環(huán)境中運行,彼此間是隔離的。
這里有一個virtualenv的教程:https://www.digitalocean.com/community/tutorials/common-python-tools-using-virtualenv-installing-with-pip-and-managing-packages
如果正在開發(fā)Django應(yīng)用程序,你可能想創(chuàng)建或更新配置文件,可以執(zhí)行命令:

#pipfreeze>requirements.txt

pip freeze命令會打印出當(dāng)前環(huán)境中已經(jīng)安裝了的Python包,大于符號“>”會把命令的執(zhí)行結(jié)果輸出到指定的requirements.txt配置文件中。

5、創(chuàng)建Hello World應(yīng)用程序

要創(chuàng)建名為helloworld的Django應(yīng)用,運行命令:

#django-admin.pystartprojecthelloworld

要注意,會創(chuàng)建一個名為helloworld的新目錄。要運行此項目,可以這樣:

#cdhelloworld/ #django-admin.pystartapphelloapp

在瀏覽器中可以看到Hello World的輸出。下面,接著在項目中添加settings.py,找到INSTALLED_APPS處,添加以下內(nèi)容:

INSTALLED_APPS=( \'django.contrib.auth\', \'django.contrib.contenttypes\', \'django.contrib.sessions\', \'django.contrib.sites\', \'django.contrib.messages\', \'django.contrib.staticfiles\', \'helloapp\' )

接著,在urls.py中添加URL路由模式,內(nèi)容如下:

urlpatterns=patterns(\'\', #Examples: #url(r\'^$\',\'helloworld.views.home\',name=\'home\'), url(r\'^\',\'helloapp.views.home_view\'), )

它會指示Django在views.py中尋找home_view函數(shù)。因此,修改views.py的內(nèi)容如下:

fromdjango.httpimportHttpResponse defhome_view(request): returnHttpResponse(\'HelloWorld\')

下面,我們可以運行開發(fā)服務(wù)器了:

#pythonmanage.pyrunserver

在GitHub上有本項目的源碼:https://github.com/sdaityari/django-hello-world

三、使用Apache和mod_wsgi模塊運行Django應(yīng)用

Django項目的目錄結(jié)構(gòu)后面有說明,下面需要安裝并配置Apache服務(wù)器。

1、安裝Apache2

使用apt-get命令完成Apache2的安裝。

#sudoapt-getinstallapache22、安裝mod_wsgi模塊

仍然可以使用apt-get命令安裝mod_wsgi模塊。

#sudoapt-getinstalllibapache2-mod-wsgi

要注意,如果使用的是Python3,那么命令應(yīng)該是這樣的:

#sudoapt-getinstalllibapache2-mod-wsgi-py3

詳細(xì)的安裝過程可以參考:
https://www.digitalocean.com/community/tutorials/installing-mod_wsgi-on-ubuntu-12-04

3、修改目錄結(jié)構(gòu)

要使得Django應(yīng)用程序能通過mod_wsgi模塊提供服務(wù),我們還需要編寫WSGI腳本,用此腳本來完成Apache服務(wù)器和Django應(yīng)用之間的連接。Django應(yīng)用的目錄結(jié)構(gòu)如下所示:

mysite/ manage.py mysite/ __init__.py settings.py urls.py myapp/ models.py views.py

我們需要做一點修改,讓mysite目錄包含三個文件:

mysite/ manage.py mysite/ __init__.py settings.py urls.py apache/ __init__.py override.py wsgi.py myapp/ models.py views.py

這樣的話,邏輯非比較清晰。

注意,如果使用了如Git之類的源碼控制工具,那么可以把apache目錄添加到忽略列表。

4、創(chuàng)建WSGI腳本

空文件init.py會告訴Python,把此目錄當(dāng)成是包來對待。override.py會導(dǎo)入所有的設(shè)置,并覆蓋任何用于生產(chǎn)狀態(tài)的設(shè)置。
比如生產(chǎn)狀態(tài)的數(shù)據(jù)庫設(shè)置和Debug設(shè)置可能會與開發(fā)狀態(tài)有所不同,要在源碼中區(qū)別開來,需要這樣:

#override.py frommysite.settingsimport* DEBUG=True ALLOWED_HOSTS=[\'www.mydomain.com\',\'mydomain.com\']

最后,wsgi.py文件包含了WSGI的設(shè)置。假定根目錄是/home/myuser/:

#wsgi.py importos,sys #CalculatethepathbasedonthelocationoftheWSGIscript. apache_configuration=os.path.dirname(__file__) project=os.path.dirname(apache_configuration) workspace=os.path.dirname(project) sys.path.append(workspace) sys.path.append(project) #Addthepathto3rdpartydjangoapplicationandtodjangoitself. sys.path.append(\'/home/myuser\') os.environ[\'DJANGO_SETTINGS_MODULE\']=\'mysite.apache.override\' importdjango.core.handlers.wsgi application=django.core.handlers.wsgi.WSGIHandler()

還需要為Apache服務(wù)器的默認(rèn)用戶www-data分配根目錄的所有權(quán),以便于Apache服務(wù)器有權(quán)限訪問此目錄:

#sudochownwww-data:www-dataapache/5、配置Apache

要配置Apache使用剛才的WSGI腳本,需要編輯配置文件:

#sudovi/etc/apache2/sites-enabled/000-default.conf

添加以下內(nèi)容:

<VirtualHost*:80> WSGIScriptAlias/mypath//home/myuser/mysite/apache/wsgi.py <Directory/home/myuser/mysite/apache/> Requireallgranted </Directory> </VirtualHost>

第一行為Django Web目錄添加一個mypath別名, 這樣項目就可以通過URL:http://www.mydomain.com/mypath/進行訪問。
如果想直接使用域名訪問,比如:http://www.mydomain.com/,那么可以直接指向Django應(yīng)用。代碼塊表示訪問指定的目錄有所有權(quán)限。

如果想自定義robots.txt和圖標(biāo),可以添加下面的內(nèi)容:

Alias/robots.txt/home/myuser/mysite/robots.txt Alias/favicon.ico/home/myuser/mysite/favicon.ico

要提供靜態(tài)文件和媒體文件服務(wù),還需要分別這樣配置:

Alias/media//home/myuser/mysite/media/ Alias/static//home/myuser/mysite/static/ <Directory/path/to/mysite.com/static> Requireallgranted </Directory> <Directory/path/to/mysite.com/media> Requireallgranted </Directory>

最后,保存配置文件并重啟Apache:

#sudoserviceapache2restart

注意Apache的版本:對于Apache 2.4之前的版本,上面的配置略有不同。

當(dāng)前文章:利用mod_wsgi部署Django應(yīng)用
鏈接地址:http://jinyejixie.com/article10/cghjgo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)、動態(tài)網(wǎng)站、用戶體驗、全網(wǎng)營銷推廣App開發(fā)、網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司