[GCP] Windows Server 2012 VM Build Python Web Site on IIS

本節將在GCP的VM上,建置Python 語法的Flask架構Web 網站

而VM的作業系統是Windows Server 2012,所以要直接架在IIS上面

查了許多文章,一個一個了解功能的用途,做一個記錄

GCP VM規格:

機器類型:g1-small (1 個 vCPU,1.7 GB 記憶體)

機器所在區域:asia-east1-b

防火牆設定:允許HTTP、HTTPS

Storage:標準永久磁碟 50G *2 (備註:光裝windows server os 就要20G左右的空間,用30G免費的容量將有不足的情況)

作業系統:Windows Server 2012 R2 Datacenter

 

設定好遠端桌面的密碼後,遠端登入VM

安裝IIS與CGI

開啟Server Manager>Add roles and features

Server Roles中有Web Server(IIS) 打勾

繼續向下尋找到CGI 如下圖

Python 在windows 的環境下跑需要CGI應用程式去跑,IIS只支援FastCGI ,Flask是啟動WSGI應用程式跑

所以要轉換的話主要都是在Python裝wfastcgi package,並且設定在IIS的FastCGI的model裡面

Python Package Install and Setting IIS FastCGI

首先先裝wfastcgi

pip install wfastcgi

接著啟動他,正常來說,IIS的FastCGI就會新增好,但有時也會有例外

#切到安裝package的路徑
cd c:\python34\scripts

#啟動wfastcgi
wfastcgi-enable

筆者在此是下圖的結果

安裝好後,回到IIS上,開啟Handler Mappings

如果清單沒有Handler類型沒有FastCgiModule就新增一個Model Mapping

設定如下,重點是Executable,設定的方式要用輸入的:Python.exe的路徑(含python.exe)|wfastcgi.py的路徑(含wfastcgi.py)

Module:FastCgiModule

最後在IIS上的網站Handler Mappings長像會是下圖

IIS主要設定-FastCGI Settings

 除了針對網站做設定,最後還要針對整個Server設定FastCGI

讓IIS知道要去哪拿python.exe執行.py檔案

新增一個Full Path,主要放置python.exe路徑與wfastcgi.py路徑

重點是要設定環境變數,變數的key似乎是固定的,有下列二者

  1. WSGI_HANDLER:主要執行哪一個python 檔案名稱,在加上.app 即可
  2. PYTHONPATH:就是放python.exe的路徑(不含python.exe)

接著就可以直接檢視網站(這邊因為筆者設定Python Web Site走80 port,所以直接以localhost就可以檢視)

如果要改port

網頁default就是走80,port不能共用的情況下,會需要調整port

後記:

          1.有範例會說需要copy wfastcgi.py檔案到自已的網站下面

  • 但經上述的設定是設定package 安裝路徑所以當然就不用copy

          2. 有範例說要設定web.config

  • 因為上述設定直接給了環境變數,所以就沒另開一個web.config,而拿掉環境變數設定了web.config會在讀config時有問題,這個還沒解

參考資訊

IIS部署python Web(FLASK试例)

Django2:Web项目开发入门笔记(15)

Sample Code(Github):使用flask架構製作上傳圖檔辨識文字內容的網頁,辨識工具Tesseract-OCR