Windows IIS 部署 Flask應用

以前一直都是在Liunx下部署,但無奈客戶機器是window機器。所以折騰了半天,終於部署成功,並記錄寫下了這篇關於windows部署flask應用的 文檔


環境準備python


安裝IIS

下載好了web platform 5.0,搜索2個插件web

  • cgi

搜索CGI

  • url重寫

URL重寫

安裝好這兩個工具之後,IIS基本就配置好了。而後就是python配置了apache


配置python環境

  • 安裝工具 wfastcgi
pip install wfastcgi

cmd運行命令wfastcgi-enable 前提python的環境已加入path中,我是在虛擬環境中配置flask

輸入圖片說明

輸入之後獲得了一個python運行地址跟一個cgi的運行程序後綴是pyc,windows

ps:這個pyc由於是python執行後的文件因此不須要去掉一個c就能夠了。 因此咱們最終獲得的路徑應該是下面這個api

"e:\test\venv\scripts\python.exe|e:\test\venv\lib\site-packages\wfastcgi.py"

若是提示這個權限問題,請使用帶管理員權限的cmd運行就能夠了app

我這個是在虛擬環境中

  • 配置web.config
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <handlers>
            <add name="car" path="car" verb="*" modules="FastCgiModule" scriptProcessor="這裏複製以前的運行命令的鏈接" resourceType="File" />
      <!-- scriptProcessor 的值來自命令行工具 wfastcgi-enable -->
      <add name="FlaskFastCGI" path="*" verb="*" modules="FastCgiModule" scriptProcessor="這裏複製以前的運行命令的鏈接" resourceType="Unspecified" requireAccess="Script" />
      
    </handlers>
    <security> 
        <!-- URL 重寫中的特殊字符,好比加號+等等 -->
        <requestFiltering allowDoubleEscaping="true"></requestFiltering> 
    </security> 
  </system.webServer>
 
  <appSettings>
    <!-- Required settings -->
    <!-- 在這裏指定Falsk app在模塊中的具體位置,個人主程序項目文件名叫manager.py,app是實例化的Flask應用 -->
     <!--所以值爲manager.app -->
    <add key="WSGI_HANDLER" value="manage.app" />   
    <add key="PYTHONPATH" value="~/" />
 
    <!-- Optional settings -->
    <!-- 須要先建立日誌目錄,不然報錯 -->
    <add key="WSGI_LOG" value="e:\\test\\web.log" />
    <add key="WSGI_RESTART_FILE_REGEX" value="" />
  </appSettings>
</configuration>

這樣一來 python環境就部署好了,最後部署IISpython2.7


部署IIS

  • 新建一個站點

IIS部署

  • 配置處理程序映射關係

輸入圖片說明

  • 右鍵選擇 添加模塊映射,而後輸入配置

輸入圖片說明

這裏的可執行文件就是以前命令wfastcgi-enable 生成的路徑 直接複製過來就能夠了 重啓IIS應用就配置成功了

若是是在windows10上部署的話,雙擊 處理程序映射 報錯不能在此路徑中使用此配置節。工具

若是在父級別上鎖定了該節, 那麼就在管理員權限下 就是administration用戶下 cmd:ui

%windir%\system32\inetsrv\appcmd unlock config -section:system.webServer/handlers 
 %windir%\system32\inetsrv\appcmd unlock config -section:system.webServer/modules

最後

網上也有一些說使用Apache2.2 + mod_wsgi 部署,我也部署過發現,核心的mod_wsgi這個模塊極其的難裝

而且apache ,python ,mod_wsgi ,操做系統 都很是具備要求。因此就放棄了這種安裝方式。直接使用IIS方便

若是這篇文章幫助到你了,請記得點個贊 。 而且歡迎轉發跟收藏 !

相關文章
相關標籤/搜索