教程基於 Windows 10專業版 + Python3.6 + IIS + wfastcgi 之上部署Django2.2的,同樣適用於Windows server2012服務器和Windows7及以上的Windows操作系統。
環境准備
1.Python及其虛擬環境
Django依賴於Python解釋器環境。安裝步驟略。可參考https://www.cnblogs.com/wcwnina/p/9069783.html(根據實際情況,也可以不裝虛擬環境)。
2.安裝IIS服務器(含CGI)
打開【控制面板】->【程序和功能】,點開左側的【啟用或關閉Windows功能】,啟用IIS,一定要包含CGI。
在瀏覽器地址輸入localhost訪問IIS測試,如果出現以下頁面,表示安裝成功。
3.拷貝項目文件、安裝依賴庫
首先,部署生產環境要關閉調試模式,修改settings文件:
DEBUG = False # 關閉調試 ALLOWED_HOSTS = ['127.0.0.1'] # 指定能訪問網站的主機IP
建議在服務器中新建文件夾,將上傳的項目文件和虛擬環境放在同一文件夾里。進入虛擬環境,批量安裝所有依賴庫:
pip install -r requirements.txt # 注意是requirements.txt的完整路徑或相對路徑
留意:執行以上命令的前提是,已使用命令 "pip freeze > requirements.txt" 把項目環境的依賴庫信息導出到 requirements.txt 文件里了。
如果使用的是Mysql數據庫,請自行安裝Mysql和導入數據,這里就不說明。
4.安裝wfastcgi應用服務器
進入虛擬環境,pip安裝之,如圖。
啟動wfastcgi:
wfastcgi-enable // 停止服務:wfastcgi-disable
如上圖,啟動成功之后,它會把Python路徑和wfastcgi的路徑顯示出來,我們需要把這個路徑復制出來,保存好,后邊用得着!
e:\djblog\vpy_myblog\scripts\python.exe|e:\djblog\vpy_myblog\lib\site-packages\wfastcgi.py
注意:上面的路徑,是由Python解釋器的路徑和“|”以及“wfastcgi.py”文件路徑組成。
配置IIS服務器
通過【控制面板】->【管理工具】打開IIS管理器。
1.添加網站
2.web配置文件
在項目根目錄下新建 "web.config" 配置文件,復制粘貼以下內容。
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <handlers> <add name="Python FastCGI" path="*" verb="*" modules="FastCgiModule" scriptProcessor="<Path to Python>\python.exe|<Path to Python>\lib\site-packages\wfastcgi.py" resourceType="Unspecified" requireAccess="Script"/> </handlers> </system.webServer> <appSettings> <add key="WSGI_HANDLER" value="django.core.wsgi.get_wsgi_application()" /> <add key="PYTHONPATH" value="<Path to Django App>" /> <add key="DJANGO_SETTINGS_MODULE" value="<Django App>.settings" /> </appSettings> </configuration>
修改配置文件:
3.添加靜態文件虛擬目錄
右鍵添加虛擬目錄,如圖。
添加虛擬目錄時,別名與你的settings里設置的一致,比如"static",物理路徑就是靜態資源的實際目錄。
在 static 目錄下新建一個 "web.config" 文件,然后復制下面的內容,無需修改,保存即可。
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <!-- this configuration overrides the FastCGI handler to let IIS serve the static files --> <handlers> <clear/> <add name="StaticFile" path="*" verb="*" modules="StaticFileModule" resourceType="File" requireAccess="Read" /> </handlers> </system.webServer> </configuration>
至此,部署大功告成!!重啟IIS,在瀏覽器里輸入http://127.0.0.1,就能訪問網站了。
常見問題
1.如果訪問IIS出現如下錯誤
(解析1)檢查.Net Framework是否正確安裝,如圖。
(解析2)出現這樣的情況是因為IIS7之后的版本都采用了更安全的 web.config 管理機制,默認情況下會鎖住配置項不允許更改。我們把它解鎖了就OK。
打開CMD,在里面依次輸入下面兩個命令:
%windir%\system32\inetsrv\appcmd unlock config -section:system.webServer/handlers %windir%\system32\inetsrv\appcmd unlock config -section:system.webServer/modules
2.有時候訪問頁面,或者單獨訪問網站后台出現400錯誤
這個時候可能是因為沒有給網站權限的原因。我們打開IIS,找到網站,右鍵,編輯權限,給IIS用戶添加修改和寫入權限。就能正常訪問。
3.靜態文件顯示異常
在settings.py里添加STATIC_ROOT配置,指定收集靜態文件路徑,如:
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
進入虛擬環境,輸入以下命令進行收集靜態文件:
python manage.py collectstatic
收集完成之后,刷新頁面,顯示正常。
至此,轉載請注明出處。