前言
以前用Python運行的Web框架都是要運行在Linux下,加上WSGI服務器,比如Gunicorn+Flask,後來瞭解到了Apache,看看能不能基於Apache這個Web服務器下給Python提供Web環境。於是上網找了很多資料,現在總結如下。
這一篇是在Apache上部署Django。本文結合《Window10下Apache2.4的安裝和運行》使用。
開發環境
- Windows 10 x64
- Apache 2.4 x64
- Python 2.7.11 x64
- Django 1.9.6+
下載和安裝mod_wsgi
到
http://download.csdn.net/download/copter/9192361
下載mod_wsgi.so
由於沒有Python3.5的mod_wsgi.so,所以就用了Python2.7的。
選擇對應的mod_wsgi.so,拷貝到Apache24\modules下。
修改apache2.4的http.conf文件,在大約183行那裏
# 添加mod_wsgi.so 模塊
LoadModule wsgi_module modules/mod_wsgi.so
下面以一個Django項目爲例,添加到Apache中去。
添加Django項目
打開Apache24\conf下的httpd.conf文件,在末尾添加下面配置
# 指定靜態資源路徑
Alias /static "F:\Django\HelloWorld\static"
<Directory "F:\Django\HelloWorld\static">
Require all granted
</Directory>
# 指定項目的wsgi.py配置文件路徑
WSGIScriptAlias / F:\Django\HelloWorld\HelloWorld/wsgi.py
<Directory F:\Django\HelloWorld\HelloWorld>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
#指定項目路徑
WSGIPythonPath "F:\Django\HelloWorld"
#WSGIPythonPath "C:\Python27\Lib;C:\Python27\Lib\site-packages;C:\Python27\DLLs"
WSGIPythonHome "C:\Python27"
配置Django工程
配置django工程setting.py
ALLOWED_HOSTS = ['127.0.0.1', 'localhost']
啓動運行
之後重啓Apache,訪問http://127.0.0.1:8081/admin/
顯示上面頁面表示部署成功。
排錯
Apche 啓動的時候報錯會有log, Apache24\logs目錄 error信息,慢慢排錯。
注意事項
Apache2.2與2.4一些指令的區別
在Apache2.2
Order allow,deny
Allow from all
等價於在Apache2.4:
Require all granted
mod_wsgi.so for 2.7.6
前面安裝的mod_wsgi.so是爲2.7.6編譯的,使用2.7.6以上版本運行也沒問題,只是日誌記錄會出現警告
[Wed Apr 19 11:18:05.374319 2017] [:warn] [pid 3656:tid 76] mod_wsgi: Compiled for Python/2.7.6.
[Wed Apr 19 11:18:05.377322 2017] [:warn] [pid 3656:tid 76] mod_wsgi: Runtime using Python/2.7.11.