IIS部署FLASK網站

在 Windows 平臺部署基於 Python 的網站是一件很是折騰的事情,Linux/Unix 平臺下有不少選擇,本文記錄了 Flask 部署到 IIS 的主要步驟,但願對你有所幫助。css

涉及工具和平臺

  • Windows 7 x64python

  • Python 3.4+git

  • Flaskgithub

完成 Hello Flask 網站

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

# hello.py from flask import Flask app=Flask(__name__) @app.route('/',methods=['GET']) def index(): return "Hello Flask!" if __name__=='__main__': app.run(debug=True)

運行python hello.py後沒有錯誤說明你的 Python 環境一切正常,能夠繼續後面的步驟。sql

安裝 IIS,啓用 CGI

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

iis+cgi

安裝 URL 重寫組件

IIS 須要安裝 URL 重寫組件,這個能夠經過Microsoft Web Platform Installer來安裝。下載Microsoft Web Platform Installer後運行,搜索url,分別安裝。flask

wpi-url

注:聽說 Windows10 上的 IIS 10 如今不支持 url 重寫?待驗證segmentfault

安裝 wfastcgi

經過pip就能夠安裝:api

pip install wfastcgi

啓用 wfastcgi

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

# cd to python_dir\scripts if it is not in PATH 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:Python34python.exe|C:Python34libsite-packageswfastcgi.py" 在下文的配置文件中須要使用。

Tips: 使用命令 wfastcgi-disable 能夠將其移除。

建立 web.config 文件

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

<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <handlers> <!-- scriptProcessor 的值來自命令行工具 wfastcgi-enable --> <add name="FlaskFastCGI" path="*" verb="*" modules="FastCgiModule" scriptProcessor="C:\Python34\python.exe|C:\Python34\lib\site-packages\wfastcgi.py" resourceType="Unspecified" requireAccess="Script" /> </handlers> <security> <!-- URL 重寫中的特殊字符,好比加號+等等 --> <requestFiltering allowDoubleEscaping="true"></requestFiltering> </security> </system.webServer> <appSettings> <!-- Required settings --> <!-- 在這裏指定Falsk app在模塊中的具體位置 --> <add key="WSGI_HANDLER" value="hello.app" /> <add key="PYTHONPATH" value="~/" /> <!-- Optional settings --> <!-- 須要先建立日誌目錄,不然報錯 --> <add key="WSGI_LOG" value="C:\logs\oboeqa_web.log" /> <add key="WSGI_RESTART_FILE_REGEX" value="" /> </appSettings> </configuration>

配置 IIS 目錄及權限

假設你的 Flask 程序將部署在 C:websitehello 下面,那麼你的目錄結構大體如此。

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 管理面板,新建一個網站。

iis-add-web-site

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

iis-website-config

打開瀏覽器,就能夠訪問你配置好的網站。若是有錯誤,能夠去檢查 web.config 中配置的日誌文件。

iis-web-site-ok

簡單總結

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

最後的驚喜

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

ptvs-web

PTVS 支持了常見的 Python Web 框架,好比 Flask,Django,Bottle,Jade 等等,調試的時候只須要按 F5,部署右鍵選擇 publish,跟着嚮導一步兩步你就能夠完成魔鬼的步伐。

link: http://www.javashuo.com/article/p-ypbzjgib-ex.html

IIS調用COM組件時的權限問題

解決方案:

在DCOM組件服務中給MICROSOFT.EXCEL組件 賦予ASP.NET的操做權限,具體步驟: (1)打開開始菜單的運行對話框,輸入dcomcnfg命令,肯定,這時會彈出組件服務窗口 (2)展開計算機-〉個人電腦-〉DCOM配置,找到Microsoft Excel應用程序節點 (3)單擊右鍵-〉屬性,選中「安全」選項,在下面三個項目都選擇「自定義」,並單擊編輯按鈕 (4)在啓動權限對話框中點擊添加按鈕,添加相應的用戶(注意:若是是WIN2000,XP,則添加「機器名/ASPNET」用戶,我這裏是以WIN2003爲例, WIN2003是添加「NETWORK Service」用戶),並賦予最大權限 (5) 選擇」身份標識」,再選擇」交互式用戶」便可上文中是設置EXCEL組件,你須要在你的dcomcnfg中找到你使用的com組件原文:https://blog.csdn.net/BleuRever/article/details/50783133

相關文章
相關標籤/搜索