Apache部署django項目
本文轉載自:http://www.cnblogs.com/fnng/p/4119712.html
我想這應該是很普遍的一篇文章,百度了一下確實有不少相關的文章,居然還在講用“mod_python” , 我也是醉了。在些過程中頗費了些力氣。在此記錄。
----------------------------------------------
在此之前,我們一直使用django的manage.py 的runserver 命令來運行django應用,但這只是我們的開發環境,當項目真正部署上線的時候這做就不可行了,必須將我們的項目部署到特定的web服務器上。
安裝apache
Apache是非常有名的web服務器軟件,如果想讓我們web項目運行幾乎離不開它。
Apache官方網站:http://httpd.apache.org/
根據自己的環境,選擇相應的版本進行下載。apache 官網沒有windows 64位版本,可以通過下面的鏈接進行下載:win7 64位:http://www.apachelounge.com/download/win64/
下載安裝完成,apahche的目錄結構如下:
修改conf/httpd.conf文件:
…… ServerRoot "D:/pydj/Apache24" …… Listen127.0.0.1:8089 #修改端口號 …… ServerName www.example.com:8089 …… DocumentRoot "D:/pydj/Apache24/htdocs" <Directory "D:/pydj/Apache24/htdocs"> …… ScriptAlias /cgi-bin/ "D:/pydj/Apache24/cgi-bin/" …… <Directory "D:/pydj/Apache24/cgi-bin"> AllowOverride None Options None Require all granted</Directory> ……
主要就是路徑和端口號的修改,如果你在啟動apache的httpd.exe程序時一閃就沒了,請檢查這些配置。
啟動bin/httpd.exe程序
通過瀏覽器訪問:http://127.0.0.1:8089/
現在可以說明apache工作是正常的了。
安裝mod_wsgi
The aim of mod_wsgi is to implement a simple to use Apache module which can host any Python application which supports the Python WSGI interface.
The module would be suitable for use in hosting high performance production web sites, as well as your average self managed personal sites running on
web hosting services.
(mod_wsgi的目的是實現一個簡單的使用Apache模塊可以舉辦任何Python應用程序支持Python的WSGI接口。該模塊將適用於主機的高性能生產的網站,以及一般的自我管理個人網站的網頁寄存服務運行。)直接google翻譯的,湊合的大概理解是幹啥用的。
mod_wsgi網站:http://code.google.com/p/modwsgi/
下載地址:http://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi
如win7 64位、python 2.7.6、apache(httpd-2.4.10)對應版本為:mod_wsgi-3.5.ap24.win-amd64-py2.7.zip
解壓之後將得到一個mod_wsgi.so 文件,將其拷貝到Apache24\modules\ 目錄下。
配置apache和django項目
因為你的目錄一定和我的一樣,所以,我再強調一下我的目錄:
apache 存放目錄:D:\pydj\Apache24
django項目目錄:D:\pydj\myweb
再次打apache的配制文件httpd.conf:
…… #添加mod_wsgi.so 模塊 LoadModule wsgi_module modules/mod_wsgi.so #指定myweb項目的wsgi.py配置文件路徑 WSGIScriptAlias / D:/pydj/myweb/myweb/wsgi.py #指定項目路徑 WSGIPythonPath D:/pydj/myweb <Directory D:/pydj/myweb/myweb> <Files wsgi.py> Require all granted </Files> </Directory>
上面的路徑,請根據自己的實際情況進行修改。
下面配置myweb/wsgi.py文件:
import os os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myweb.settings") from django.core.wsgi import get_wsgi_application application = get_wsgi_application()
在我們生成djnago項目時這些信息已經自動生成,其實我們不用對其做任何修改。
打開settings.py文件添加:
…… ALLOWED_HOSTS = [‘127.0.0.1‘, ‘localhost‘]
再次啟動Apache24/bin/httpd.exe程序
通過瀏覽器訪問:http://127.0.0.1:8089/
PS:這裏備註幾個我遇到的大坑!
1.Win7 64位的機器,Apache一定要使用64位的!!!!!!
2.新版本的mod_wsgi下載下來的是*.whl格式的文件,要用pip安裝,也是要64位的。這裏要註意,下載安裝完成後,裏面沒有mod_wsgi.so!!
這裏需要在Python文件夾中找到mod_wsgi.pyd文件,這個文件可以替代mod_wsgi.so文件。
把*.pyd的文件放到Apache的modules文件夾中,再在配置的時候把對應的mod_wsgi.so替換成mod_wsgi.pyd,啟動Apache就冇問題了!
Apache部署django項目