被解放的姜戈07 馬不停蹄


作者:Vamei 出處:http://www.cnblogs.com/vamei 歡迎轉載,也請保留這段聲明。謝謝! 

 

前面的文章研究了Django最主要的幾個方面:數據庫,模板,動態生成頁面等。但都是使用python manage.py runserver來運行服務器。這是一個實驗性的web服務器,不適用於正常的站點運行。我們需要一個可以穩定而持續的服務器。這個服務器負責監聽http端口,將收到的請求交給Django處理,將Django的回復發還給客戶端。

這樣的持續性服務器可以有很多選擇,比如apache, Nginx, lighttpd等。這里將使用最常見的apache服務器。服務器和Django之間通過Python的web服務接口WSGI連接,因此我們同樣需要apache下的mod_wsgi模塊。

下面的配置和說明,是在Ubuntu 13.10下進行的。在其它系統下將有所差別。

 

姜戈大喝一聲,掉轉馬頭狂奔。 

 

安裝

首先需要安裝apache2和mod_wsgi。在ubuntu下,我們可以使用apt-get安裝:

sudo apt-get install apache2 sudo apt-get install libapache2-mod-wsgi

 mod_wsgi也可以在google code下載,自行編譯安裝。

 

在apache的配置文件/etc/apache2/apache2.conf中增加下面的配置: 

# Django WSGIScriptAlias / /home/vamei/mysite/mysite/wsgi.py WSGIPythonPath /home/vamei/mysite <Directory /home/vamei/mysite/mysite>
<Files wsgi.py> Order deny,allow Require all granted </Files>
</Directory>

上面的配置中/home/ubuntu/mysite是Django項目所在的位置。而/home/ubuntu/mysite/mysite/wsgi.py是Django項目中z自動創建的文件。

可以看到,利用WSGIScriptAlias,我們實際上將URL /對應了wsgi接口程序。這樣,當我們訪問根URL時,訪問請求會經由WSGI接口,傳遞給Django項目mysite。

 

配置好后,重啟apache2

sudo /etc/init.d/apache2 restart

 

使用瀏覽器,可以檢查效果:

 

想起逝去的德國人,姜戈心中一痛。

 

靜態文件

Django的主要功能是動態的生成HTTP回復。很多媒體文件是靜態存儲的,如.js文件,.css文件和圖片文件。這些文件變動的頻率較小。我們希望靜態的提供這些文件,而不是動態的生成。這樣既可以減小服務器的負擔,也便於在瀏覽器緩存,提高用戶體驗。

 

我們可以在apache2.conf中添加如下配置:

Alias /media/ /home/vamei/media/ Alias /static/ /home/vamei/static/ <Directory /home/vamei/static/> Order deny,allow Require all granted </Directory>

<Directory /home/vamei/media/> Order deny,allow Require all granted </Directory> # Django WSGIScriptAlias / /home/vamei/mysite/mysite/wsgi.py WSGIPythonPath /home/vamei/mysite <Directory /home/vamei/mysite/mysite/ >
<Files wsgi.py> Order deny,allow Require all granted </Files>
</Directory>

這樣,/static/和/media/這兩個URL的訪問將引導向存有靜態文件的/home/vamei/static/和/home/vamei/media/,apache將直接向客戶提供這兩個文件夾中的靜態文件。而剩下的URL訪問,將導向WSGI接口,由Django動態處理。

 

在/home/vamei/static/中放入文件revenge.jpg,訪問http://localhost/static/revenge:

 

姜戈想到愛人身陷囹圄,憂傷頓時化為憤怒。 

 

其它

雲平台或者服務器的部署是一個大的課題,這里無法深入到所有的細節。幸運的是,在網上有豐富的資料。你可以根據自己的平台和問題,搜索相應的資料。

在Django的debug模式下,我們可以在app文件夾中建立static目錄,放入靜態文件。Django將自動搜索到其中的靜態文件。但這一方法有很大的安全隱患,只適用於開發。

 

馬蹄聲疾,電光火石之間,姜戈已經把護園家丁撂倒在地。

 

總結

apache + mod_wsgi

靜態文件

 

“你在外面等我,我要跟他們算總帳”,姜戈對愛人說。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM