iT邦幫忙

1

Python Flask 無法成功部署在IIS ,出現不明的FastCGI錯誤

  • 分享至 

  • xImage

背景

未來想將原本發佈在 Heroku 的 Line Bot 佈署在 IIS 上
於是想先從簡單的 Flask application 佈署至 IIS 上

問題

嘗試瀏覽網頁出現 HTTP Error 500 - Internal Server Error (發生不明的FastCGI錯誤)
以下為錯誤附圖
https://img.onl/FcAktM

嘗試過的步驟

  • 安裝python(用pip)
  • 安裝wFastCGI(已從IIS管理員確定有FastCGI設定選項)
  • 開啟或關閉Windows功能,IIS 勾選 CGI
  • 建立站台(實體路徑同Python app資料夾,埠號81)
  • Python app 資料夾置於C:\inetpub\wwwroot\Flask_IIS (已提供 IIS_IUSRS 修改權限)
  • 建立web.config設定檔

Python 檔程式碼 (my_app.py)

from flask import Flask

app = Flask(__name__)

@app.route('/')
def index():
	return 'Hello IIS from Flask framework.'

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

Web.Config 檔內容

<configuration>  
  <system.webServer>
    <handlers>
        <add name="Python FastCGI" path="*" verb="*" modules="FastCgiModule" scriptProcessor="C:\Users\steve\anaconda3\python.exe|C:\Users\steve\anaconda3\lib\site-packages\wfastcgi.py" resourceType="Unspecified" requireAccess="Script" />
    </handlers>
  </system.webServer>
  <appSettings>
    <add key="WSGI_HANDLER" value="my_app.app" /> 
    <add key="PYTHONPATH" value="C:\inetpub\wwwroot\Flask_IIS" />
	<add key="WSGI_LOG" value="C:\inetpub\wwwroot\Flask_IIS\app.log" />
  </appSettings>
</configuration>  

不知道有沒有人遇過相同的問題?
還是我漏了什麼步驟?
再麻煩大家幫我解惑!謝謝!

看更多先前的討論...收起先前的討論...
froce iT邦大師 1 級 ‧ 2022-04-19 08:11:11 檢舉
1. 我個人比較建議不要用IIS...
2. 真的要用,我建議用reverse proxy透過 waitress 來做(透過WSGI非fastCGI)。
https://docs.pylonsproject.org/projects/waitress/en/latest/

3. IIS 也可以當reverse proxy,但我個人還是不太建議就是了。
ddx iT邦研究生 5 級 ‧ 2022-04-19 08:32:57 檢舉
C:\Users\steve\anaconda3\python.exe
C:\Users\steve\anaconda3\lib\site-packages\wfastcgi.py
這兩個你有給權限嗎?
edwang iT邦新手 4 級 ‧ 2022-04-19 17:50:50 檢舉
回覆 froce大:
想請問一下選擇waitress的原因是什麼?
就我在網路上查詢的結果,很多都採用以下這個模式
Client - Web Server(Nginx) - WSGI Server (Gunicorn) - Web App (Flask)。
所以如果說使用Waitress的話是,是取代上面Nginx的意思嗎? 透過Waitress去做reverse proxy?
原本會想使用IIS最主要是考量已經有現成的。可以與其他的專案統一管理
edwang iT邦新手 4 級 ‧ 2022-04-19 17:53:25 檢舉
回覆ddx大:
請問你的意思是說兩個檔都各新增IIS_IUSRS的使用者並給權限嗎?
edwang iT邦新手 4 級 ‧ 2022-04-28 16:14:37 檢舉
在上網查了很多資料後...
終於找到問題點解法
HTTP 500.0 錯誤,錯誤代碼 0x8007010b
參考了這篇
https://blog.csdn.net/xl502689459/article/details/88413677

解決方法:
將應用程式集區,應用程式的識別改為LocalSystem即可
(原本預設為ApplicationPoolIdentity)。
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友回答

立即登入回答