Windows編譯安裝mod_wsgi,配合使用Django+Apahce

編譯環境: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工程!

相關文章
相關標籤/搜索