編譯環境:python
均是32位版本django
Microsoft Visual Studio 10.0瀏覽器
Microsoft SDKs v7.1服務器
Apache2.4app
Python3.4測試
mod_wsgi-4.5.0ui
要求: url
1 Apache和Python都是32位或者都是64位,spa
2 Apache和Python是相同版本的C++編譯器編譯的code
3 使用和上述相同版本的C++編譯器編譯mod_wsgi
必須同時知足才能成功
說明: VC9==VS2008或VC10==VS2010
Python 2.6 or 2.7 -- VC9
Python 3.3 or 3.4 -- VC10
編譯過程
解壓mod_wsgi-4.5.0.zip,進入win32目錄,有以下的mk文件
ap22py26-win32-VC9.mk ap22py27-win32-VC9.mk ap22py32-win32-VC9.mk ap24py26-win32-VC9.mk ap24py26-win64-VC9.mk ap24py27-win32-VC9.mk ap24py27-win64-VC9.mk ap24py32-win32-VC9.mk ap24py32-win64-VC9.mk ap24py33-win32-VC10.mk ap24py33-win64-VC10.mk ap24py34-win32-VC10.mk ap24py34-win64-VC10.mk
這裏咱們須要的是 ap24py34-win32-VC10.mk ,修改裏面的內容
APACHE_ROOTDIR = D:\IT\Apache24 #修改Apache和Python的根目錄位置 PYTHON_ROOTDIR = C:\Python34 PYTHON_VERSION = 34 include common-VC10.mk
CMD中設置臨時的環境變量
set path=C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin;C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE; set include=C:\Program Files\Microsoft SDKs\Windows\v7.1\Include;C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include; set lib=C:\Program Files\Microsoft SDKs\Windows\v7.1\Lib;C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib;
#注意path和=之間不能有空格,還有path最後一個IDE別少了,不然會找不到其目錄下的 mspdb100.dll
如今能夠在CMD中編譯了
cd /path/to/win32
nmake -f ap24py34-win32-VC10.mk install
等待編譯結束,會在win32目錄生成mod_wsgi.so,同時在Apache的modules目錄生成mod_wsgi-py34-VC10.so,兩個文件時同樣的。
安裝Django
pip install django==1.9 已經安裝過舊版本的也能夠升級到最新版本: pip install --upgrade django
測試使用:
在D:\WebRoot\DjangoProject目錄下CMD命令運行:
django-admin startproject mysite 建立工程
cd mysite
python3 manage.py runserver 運行服務器
瀏覽器127.0.0.1:8000出現It worked!說明OK
修改mysite/wsgi.py 該文件是Apache找到Django工程的接口
#!C:\Python34\python.exe #不然會報錯:wsgi.py is not executable; ensure interpreted scripts have "#!" or "'!" first line import os import sys #添加這三行,可解決 ImportError: No module named 'mysite' 錯誤 WSGIPythonPath /path/to/mysite.com無論用,還不知道爲啥。。。
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) sys.path.append(BASE_DIR)
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")
application = get_wsgi_application()
配置wsgi.py
LoadModule wsgi_module modules/mod_wsgi-py34-VC10.so #加載模塊 WSGIScriptAlias / "D:/WebRoot/DjangoProject/mysite/mysite/wsgi.py" # / 表示根路徑(base url),即輸入http://127.0.0.1/時會找到wsgi.py來進入django工程 <Directory "D:/WebRoot/DjangoProject/mysite/mysite"> 設置wsgi.py所在目錄的權限 setHandler wsgi-script Options ExecCGI </Directory>
Django官方文檔給的方法不知道爲啥會報錯: End of script output before headers: wsgi.py WSGIScriptAlias / /path/to/mysite.com/mysite/wsgi.py WSGIPythonPath /path/to/mysite.com <Directory /path/to/mysite.com/mysite> <Files wsgi.py> Require all granted </Files> </Directory>
啓動Apache服務
瀏覽器127.0.0.1顯示Django的It worked!說明Apache成功加載了django工程!