Django跟Flask在Linux底下都可以很方便地以FastCGI模式部署,貌似IIS下面不很好配置,而且IIS也缺少一個像PHPmanager一樣的全自動配置工具,在公司服務器上部署起來頗費周折,部署后總結起來過程倒也不復雜,主要是網上並沒有給出一個完整的方案,這里記錄一下方便大家使用
先來Django吧,在自己機器上簡單開一個測試用網站,這里我用“C:\myWebSite\djangoWeb”做測試
添加個Hello world首頁,測試下工作正常就行
用pip裝上wfastcgi模塊
重要的一步來了,去python下site-package目錄
把“wfastcgi.py”這個文件復制到網站根目錄
具體原因我后面會說明,現在去IIS里添加網站
這里一定要進入網站控制台內的“處理程序映射”,不要在IIS控制台直接進入,不然創建的FastCGI會對所有網站生效
右面點擊“添加模塊映射”,具體內容如下
可執行文件一欄輸入“python程序”和“wfastcgi.py”的位置,名稱隨意填寫,注意別忘了中間的“|”符號
填完后點開請求限制,把“僅當請求映射至以下內容時才調用處理程序勾掉”
確認添加后會彈出創建FastCGI應用程序對話框,點擊確認創建
這樣在處理程序映射里就能看到剛添加的FastCGI映射了
返回IIS控制台,進入“FastCGI設置”,可以看到剛剛添加的映射
雙擊打開,添加Django執行時候的環境變量
這里環境變量一共有三個:
WSGI_HANDLER 為 django.core.handlers.wsgi.WSGIHandler()
PYTHONPATH 為 網站根目錄
DJANGO_SETTINGS_MODULE 為 django settings文件位置
添加完成后重啟IIS或去應用程序池回收一下就好了
測試一下工作正常
至此Django已經部署已經完成
如果遇到出錯的情況請嘗試在settings中對“MIDDLEWARE_CLASSES”和“INSTALLED_APPS”內容逐個進行測試,個別會存在兼容問題
然后部署Flask吧,同樣先創建一個網站,將“wfastcgi.py”復制進來
Flask的初始化代碼很短,測試一下網站工作正常就行
同樣創建網站並添加映射,這里不再贅述
注意添加映射時候“wfastcgi.py”的文件路徑
添加完成后確認一下
返回IIS控制台,進入“FastCGI設置”,可以看到這里出現了兩個“FastCGI映射”,可以推測IIS對同一個執行程序的不同參數會創建不同的映射
我測試了一下,如果只是調用“site-package”目錄下的同一個“wfastcgi.py”文件,將無法對不同網站創建不同的FastCGI執行環境,這也就是為什么要將“wfastcgi.py”文件復制到網站目錄的原因
同樣打開添加環境變量
Flask部署時只需要兩個環境變量:
WSGI_HANDLER 對應Flask實例的位置,這里就是flaskWeb文件內的app
PYTHONPATH 為網站根目錄
配置完成后同樣重啟IIS或者回收對應的進程即可
測試成功,至此Flask也部署完畢
接下來說一下靜態文件的處理方式,同樣不需要太多設置,以Flask項目下的“static”文件夾為例
在IIS內找到這個文件夾的頁面,打開處理程序映射
可以看到這里的列表跟網站是一致的
將為網站創建的FastCGI映射刪除掉,static文件夾就可以直接訪問了,右側的“恢復為父項”可以恢復對此目錄的修改
為了測試我開啟了這個目錄的目錄瀏覽,放了一個jQuery進去
我的IE貌似有點問題,換用Chrome,jQuery文件也可以直接瀏覽
到這里靜態文件的問題也解決了,如果通過虛擬目錄訪問其他位置同樣操作即可