在 IIS 上架設 django
·
[Jack Shih]
在 IIS 上執行 python 跟是一回事,在 IIS 上架設 django 又是另外一回事。而網路上的資源又更少了一點,經過各種搜尋後在這裡記下一些筆記。
執行環境如下,每一項都會可能因為版本不同而有些許不同。這也是網路資源較難使上力的原因,因為解決方式的版本跟所用的版本可能不同而不適用。
- windows server 2012 R2
- iis 8.5
- python 3.6
- django 1.11.3
強者版
步驟 1 -> 2 -> 11 -> 12 -> 13
詳細版
- 安裝 wfastcgi
pip install wfastcgi
- 啟用 wfastcgi
wfastcgi-enable
- 安裝 django
pip install Django==1.11.3
機器首頁 -> IIS -> FastCGI 設定
這應該要有 python.exe,如果沒有點選右側新增應用程式
。- 完整路徑為python執行檔位置如:
<python安裝路徑>\python.exe
引數為 wfastcgi.py 如:<python安裝路徑>\lib\site-packages\wfastcgi.py
- 新增網站
網站設定頁面中 -> IIS -> 處理常式對應 -> 新增模組對應
- 要求路徑:
*
,模組:FastCgiModule
,執行檔:<python安裝路徑>\python.exe|<python安裝路徑>\lib\site-packages\wfastcgi.py`
,名稱:Django Handler
(或是隨意) - 要求限制 -> 取消勾選
只有當要求對應到下列項目時才啟動處理常式
- IIS manager 可能會問你是否要建立 fastcgi 應用程式,選否 (選是應該也是可以)
- 看一下網站資料夾下面有無
web.config
,參考下面的範例,如果前面有照著做應該只要加入 appSettings 即可。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="Django Handler"
path="*"
verb="*"
modules="FastCgiModule"
scriptProcessor="<python安裝路徑>python.exe|<python安裝路徑>\Lib\site-packages\wfastcgi.py"
resourceType="Unspecified" />
</handlers>
</system.webServer>
<appSettings>
<add key="WSGI_HANDLER" value="django.core.wsgi.get_wsgi_application()" />
<add key="PYTHONPATH" value="<網站資料夾路徑>" />
<add key="DJANGO_SETTINGS_MODULE" value="<Django App>.settings" />
</appSettings>
</configuration>
- 在 網站資料夾 跟 python資料夾 中給予
IUSR
跟IIS_USRS
權限 - 用瀏覽器測試看看是否成功
心得
原理不難,設定也還好,主要的問題都出在權限,這也是大部分教學比較少提到的。當然不要在 iis 上跑這些東西才是最佳解。
常用指令
# django 開新專案
django-admin startproject mysite
# django 測試伺服器
python manage.py runserver
常見問題
0x8007010b 錯誤
檢查 python 目錄中的權限是否正確 IUSR 及 IIS_USRS
找不到指令 (pip 或 python)
環境變數沒有設定
控制台 -> 系統及安全性 -> 系統 -> 進階系統設定 -> 環境變數 -> 系統變數
- path 末端加入
;<python安裝路徑>;<python安裝路徑>\Scripts