部署django - Apache + mod_wsgi + windows
1、環境
<Files wsgi.py>
Order deny,allow
Require all granted
</Files>
</Directory>
- django 1.6.2
- python 3.3 32位
- apache 2.4.7 32位
- 一個可以使用的django project( https://github.com/liulixiang1988/python_study_case/tree/master/django)
2、安裝apache 32位
可以在這里下載(
http://www.apachelounge.com/download/),或者這里下載(
http://httpd.apache.org/download.cgi#apache24)
3、安裝mod_wsgi
注意,因為apache是32位的,所以mod_wsgi也應該選擇32位的。mod_wsgi的官網在這里(
https://code.google.com/p/modwsgi/)。但是因為沒有windows編譯版本(自己編譯幾乎都是以失敗告終),所幸在這里可以下載到編譯版本(
http://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi),我們選擇mod_wsgi-3.4.ap24.win32-py3.3.zip進行下載。
下載過mod_wsgi之后,解壓之后的文件為“mod_wsgi.so”文件。我們拷貝它到apache安裝目錄下面的modules文件夾。
光拷貝mod_wsgi.so文件是不行的,我們還需要修改apache的配置文件,讓apache知道mod_wsgi的存在。apache的配置文件在apache安裝目錄下的conf文件夾中的httpd.conf文件。使用記事本或者任何你喜歡的文本編輯器打開它,在文件的最后添加下面的內容並保存就可以了:
LoadModule wsgi_module modules/mod_wsgi/mod_wsgi.so
3、配置django project
第一步,你要有個django projec,如果你這是想嘗試一下如何部署而沒有項目的話,可以在到我的github上下載一個
https://github.com/liulixiang1988/python_study_case
django project的目錄結構如下:

第二步 修改wsgi.py文件
原以為wsgi.py不需要修改的,可是發現如果不將目錄所在的文件夾添加到系統路徑中,apache還是會報錯,因此在wsgi.py添加下面2行
import sys
sys.path.append('E:/git/python_dev/python_study_case/django/mydjangosite')
sys.path.append('E:/git/python_dev/python_study_case/django/mydjangosite')
其中append的參數就是你的project下的目錄
第三步 配置apache/conf/httpd.conf文件
打開httpd.conf文件,在后面添加下面內容
#添加映射,其中WSGIScriptAlias /是映射到根目錄,如果你需要映射到其他地址,可以改為WSGIScriptAlias /myproject (假設myproject是你想要的地址,那么你可以通過訪問localhost/myproject來訪問你的網站)
WSGIScriptAlias / E:/git/python_dev/python_study_case/django/mydjangosite/mydjangosite/wsgi.py
#指明應用路徑,如果你是使用virtualenv,那么還需要添加virtualenv的site-packages路徑,中間用":"分隔
#指明應用路徑,如果你是使用virtualenv,那么還需要添加virtualenv的site-packages路徑,中間用":"分隔
WSGIPythonPath E:/git/python_dev/python_study_case/django/mydjangosite:E:/git/python_dev/envs/django/Lib/site-packages
#添加wsgi的讀取權限
<Directory E:/git/python_dev/python_study_case/django/mydjangosite/mydjangosite>
<Files wsgi.py>
Order deny,allow
Require all granted
</Files>
</Directory>
#這里聲明靜態文靜的映射,這個/static是給django admin的靜態文件使用的
Alias /static "C:/Python33/Lib/site-packages/django/contrib/admin/static"
#這里是添加文件夾的讀取權限,注意apache2.3以上的讀寫設置與2.3以下版本有所不同
<Directory "C:/Python33/Lib/site-packages/django/contrib/admin/static/">
<IfVersion < 2.3 >
Order allow,deny
Allow from all
</IfVersion>
<IfVersion >= 2.3>
Require all granted
</IfVersion>
</Directory>
<Directory "C:/Python33/Lib/site-packages/django/contrib/admin/static/">
<IfVersion < 2.3 >
Order allow,deny
Allow from all
</IfVersion>
<IfVersion >= 2.3>
Require all granted
</IfVersion>
</Directory>
4、啟動apache
打開cmd,定位到apache安裝目錄下面的bin目錄,輸入httpd就可以啟動服務器了,此時你就可以在你的瀏覽器中訪問localhost了
5、需要改進的地方
因為工作中使用的是asp.net,對apache不熟,所以對虛擬主機的配置以及mod_wsgi的運行模式的理解還不是特別透徹,也是下一步需要學習的方向。
6、致謝與參考
首先感謝那些為提供這些優秀開源工程的程序員們;其次在學習如何部署的過程中,下面兩篇文章對我的幫助很大,在這里再次說聲謝謝!
7、最后
如果你覺得這篇文章對你比較有幫助,或者有什么問題,亦或你想給我介紹一份工作,歡迎給我留言或者email:liulixiang1988@gmail.com