FavoriteLoading
0

Windows系統下使用IIS部署搭建Flask網站

在 Windows 平臺?部署?基于 Python 的網站是一件非常折騰的事情,Linux/Unix 平臺下有很多選擇,本文記錄了 Flask 部署到 IIS 的主要步驟,希望對你有所幫助。

涉及工具和平臺

  • Windows 7 x64
  • Python 3.4+
  • Flask

完成 Hello Flask 網站

這是一個最簡單的 Flask 網站:

# hello.py
from flask import Flask
app=Flask(__name__)

@app.route('/',methods=['GET'])
defindex():
    return "Hello Flask!"

if __name__=='__main__':
    app.run(debug=True)

運行?python hello.py?后沒有錯誤說明你的 Python 環境一切正常,可以繼續后面的步驟。

安裝 IIS,啟用 CGI

在控制面板中找到?打開或者關閉 Windows 功能?,安裝 IIS 和 CGI,如下圖。

安裝 URL 重寫組件

IIS 需要安裝 URL 重寫組件,這個可以通過?Microsoft Web Platform Installer?來安裝。下載?Microsoft Web Platform Installer?后運行,搜索?url?,分別安裝。

注:據說 Windows10 上的 IIS 10 現在不支持 url 重寫?待驗證

安裝 wfastcgi

通過pip就可以安裝:
pip install wfastcgi
啟用 wfastcgi

剩下的事情就只有一些配置了。首先以管理員身份運行 wfastcgi-enable 來在IIS上啟用wfastcgi,這個命令位于 c:\python_dir\scripts ,也就是你需要確保此目錄在系統的PATH里,或者你需要cd到這個目錄后再執行。

# cd to python_dir\scripts if it is not in P
ATH
wfastcgi-enable

記住命令執行成功后返回的信息:

C:\Python34\Scripts> wfastcgi-enable
Applied configuration changes to section "system.webServer/fastCgi" for "MACHINE/WEBROOT/APPHOST" at configuration commit path "MACHINE/WEBROOT/APPHOST"
"C:\Python34\python.exe|C:\Python34\lib\site-packages\wfastcgi.py" can now be used as a FastCGI script processor
“C:\Python34\python.exe|C:\Python34\lib\site-packages\wfastcgi.py” 在下文的配置文件中需要使用。
Tips: 使用命令 wfastcgi-disable 可以將其移除。
創建 web.config 文件

下面是一個 web.config 文件的例子,你只需要修改對應部分就可以使用。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <handlers>
      <!-- scriptProcessor 的值來自命令行工具 wfastcgi-enable -->
      <addname="FlaskFastCGI"path="*"verb="*"modules="FastCgiModule"scriptProcessor="C:\Python34\python.exe|C:\Python34\lib\site-packages\wfastcgi.py"resourceType="Unspecified"requireAccess="Script"/>
    </handlers>
<security> 
<!-- URL 重寫中的特殊字符,比如加號+等等 -->
<requestFilteringallowDoubleEscaping="true"></requestFiltering> 
</security> 
  </system.webServer>

  <appSettings>
    <!-- Required settings -->
    <!-- 在這里指定Falsk app在模塊中的具體位置 -->
    <addkey="WSGI_HANDLER"value="hello.app"/>
    <addkey="PYTHONPATH"value="~/"/>

    <!-- Optional settings -->
    <!-- 需要先創建日志目錄,否則報錯 -->
    <addkey="WSGI_LOG"value="C:\logs\oboeqa_web.log"/>
    <addkey="WSGI_RESTART_FILE_REGEX"value=""/>
  </appSettings>
</configuration>

配置 IIS 目錄及權限

假設你的 Flask 程序將部署在 C:\website\hello 下面,那么你的目錄結構大致如此。
C:\WEBSITE
└───hello
hello.py
web.config
現在你需要讓IIS用戶擁有訪問和執行你的網站腳本的權限,進入 C:\website 目錄,執行下面兩條命令:

cd C:\website
icacls . /grant "NT AUTHORITY\IUSR:(OI)(CI)(RX)"
icacls . /grant "Builtin\IIS_IUSRS:(OI)(CI)(RX)"

創建并訪問你的網站

現在你離成功只差一步之遙,打開 IIS 管理面板,新建一個網站。

 

你只需要填上網站名稱,物理地址和相應的端口號,點擊確認。

打開瀏覽器,就可以訪問你配置好的網站。如果有錯誤,可以去檢查?web.config?中配置的日志文件。

 

簡單總結

寫完之后發現其實要完成的步驟并不是特別復雜,但是從摸索到實踐的過程確實不易。本文僅討論了部署的主要步驟,其實真正的生產環境你要考慮的問題可能更多,比如使用virtualenv 對網站進行隔離,安全問題,靜態文件解析等等。

最后的驚喜

據說部署Python 網站到 IIS 還有更簡單的辦法,那就是安裝宇宙最強的IDE -?Visual Studio 2015?(VS2017 暫不支持 Python 開發),個人開發者可以免授權使用社區版。在 VS 中你可以使用PTVS?來快捷開發?并部署?Python 程序,真正讓你一鍵無憂。

 

PTVS 支持了常見的 Python Web 框架,比如 Flask,Django,Bottle,Jade 等等,調試的時候只需要按 F5,部署右鍵選擇 publish,跟著向導一步兩步你就可以完成魔鬼的步伐

【聲明】:8090安全小組門戶(http://www.jvwkvg.tw)登載此文出于傳遞更多信息之目的,并不代表本站贊同其觀點和對其真實性負責,僅適于網絡安全技術愛好者學習研究使用,學習中請遵循國家相關法律法規。如有問題請聯系我們,聯系郵箱[email protected],我們會在最短的時間內進行處理。