1. 程式人生 > 實用技巧 >上線部署系列==2、Windows+django+Apache+mod_wsgi

上線部署系列==2、Windows+django+Apache+mod_wsgi

環境準備

本文將介紹如何在Windows系統上部署Django web專案,本次部署基於下面的架構:

Windows10 64位 + Python3.6 + Django1.11 + Apache2.4 + mod_wsgi

在本文中,我著重介紹在部署Django過程中關於mod_wsgi的安裝和在Apache httpd.conf中的關鍵配置內容,其餘部分的安裝和配置,可參考本站相關連結內容自行解決。

各位先莫慌,總體而言,在Windows下部署Django比在Linux下部署要簡單得多!相信我,跟著我寫的來,分分鐘搞定。走起,Now!

Python虛擬環境

本節略。詳見本站連結,戳這裡>>

Python虛擬環境安裝

Apache安裝與配置

本節略。詳見本站連結,戳這裡>>Apache安裝Apache配置。對於Django,無需配置虛擬目錄。

安裝mod_wsgi和獲取其配置資訊

進入Python擴充套件庫官網下載mod_wsgi模組:http://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi

下載好了,現在進入Python虛擬環境,執行如下命令進行安裝(用pip安裝)和獲取其配置資訊(輸入:mod_wsgi-express module-config),後面的配置中會用到這些配置資訊。

Django與Apache的配置

首先記得修改:

Define SRVROOT "C:/Program Files/Apache24"    # 修改Apache實際絕對安裝目錄
Listen 8080                        # 監聽埠
ServerName www.wcwnina.com:8080            # 可訪問的主機,域名。需要在Windows的hosts檔案中做IP對映

然後在 httpd.conf 配置檔案末尾新增以下內容:

##--------------- Django專案部署配置 ---------------##
# 宣告專案根目錄變數
Define DjangoRoot "D:/EduOnline/eduonline"

# 新增"mod_wsgi.so"模組,這三行都是命令"mod_wsgi-express module-config"顯示出來的
LoadFile "C:/Program Files/Python36/python36.dll"
LoadModule wsgi_module "d:/eduonline/vpy-eduonline/lib/site-packages/mod_wsgi/server/mod_wsgi.cp36-win_amd64.pyd"
WSGIPythonHome "d:/eduonline/vpy-eduonline"

# 指定專案的"wsgi.py"配置檔案路徑
WSGIScriptAlias / "${DjangoRoot}/eduonline/wsgi.py"

# 指定Django專案根目錄,並配置訪問許可權。WSGIPythonPath取代DocumentRoot配置,或者保留DocumentRoot一致
WSGIPythonPath "${DjangoRoot}"
<Directory "${DjangoRoot}">
    Require all granted
</Directory>

# 專案靜態檔案配置 
Alias /static "${DjangoRoot}/static"
<Directory "${DjangoRoot}/static">
    AllowOverride None
    Options None
    Require all granted
</Directory>

# 專案media檔案配置, 使用者上傳圖片等媒體檔案
Alias /media "${DjangoRoot}/media"
<Directory "${DjangoRoot}/media">
    AllowOverride None  
    Options None  
    Require all granted  
</Directory>

然後進入Django專案的settings.py檔案下進行配置。

# 上線時必須將DEBUG設為False
DEBUG = False

# 可指定主機,若元素為'*',表示所有同一區域網內的網路均可被訪問
ALLOWED_HOSTS = ['*']

重啟Apache服務

修改完配置後,只需重啟Apache服務即可,此時會連著wsgi服務一併重啟,因為httpd.conf配置中載入了mod_wsgi模組。

CMD重啟Apache命令:

httpd -k restart -n apache         # apache為Windows託管服務名
或:
net stop apache 然後 net start apache # Windows服務管理命令,沒有restart

測試效果

訪問測試:在瀏覽器位址列輸入"www.wcwnina.com:8080"或"localhost:8080"回車就可以進入Django專案網站了!其中www.wcwnina.com為httpd.conf中配置的主機域名ServerName。

效果: