Python Flask Hosting บนเซิร์ฟเวอร์ Windows 10 IIS

Nov 19 2020

ฉันต้องการโฮสต์ Python Rest API ของฉันบนเซิร์ฟเวอร์ Windows 10 IIS

ก่อนอื่นฉันพยายามโฮสต์แอปพลิเคชันตัวอย่าง แต่ไม่สามารถทำได้

my_app.py

from flask import Flask

app = Flask(__name__)

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

@app.route('/Hello')
def hello_world():
    return 'Hello World!'
    
if __name__ == '__main__':
    app.run()

web.config

<configuration>  
  <system.webServer>
    <handlers>
        <add name="Python FastCGI"
            path="*"
            verb="*"
            modules="FastCgiModule"
            scriptProcessor="C:\Program Files\Python39\python.exe|C:\Program Files\Python39\lib\site-packages\wfastcgi.py"
            resourceType="Unspecified"
            requireAccess="Script" />
    </handlers>
  </system.webServer>
  <appSettings>
    <add key="WSGI_HANDLER" value="my_app.app" /> <!-- {name_of_file}.{name_of_flask_app}-->
    <add key="PYTHONPATH" value="C:\inetpub\wwwroot\test" />
    <add key="WSGI_LOG" value="C:\inetpub\wwwroot\test\app.log" />
  </appSettings>
</configuration>  

ฉันได้ลองบทช่วยสอนด้านล่างแล้ว แต่มันไม่ได้ผลสำหรับฉัน

  1. https://medium.com/@rajesh.r6r/deploying-a-python-flask-rest-api-on-iis-d8d9ebf886e9

  2. https://www.youtube.com/watch?v=ma1UvzqF82Q&ab_channel=ShobhitWalia

ข้อผิดพลาด HTTP 500.0 - ข้อผิดพลาดภายในเซิร์ฟเวอร์: ดูข้อผิดพลาด scrennshot

ฉันต้องการความช่วยเหลือ .... ขอบคุณ

คำตอบ

DingPeng Nov 19 2020 at 15:12

หากคุณต้องการแอปพลิเคชัน IIS host python คุณต้องติดตั้ง python จากนั้นคุณต้องเพิ่มการแมปโมดูลใน IIS ขั้นตอนมีดังนี้

  1. ขั้นแรกให้ติดตั้ง python บนคอมพิวเตอร์ของคุณ

  2. เปิดใช้งาน CGI:

หลังจากติดตั้งสำเร็จคุณจะเห็น "ข้อ จำกัด ISAPI และ CGI" และการแมปตัวจัดการ:

  1. ป้อน "ข้อ จำกัด ISAPI และ CGI" เพิ่มข้อ จำกัด ISAPI หรือ CGI ใหม่:

  1. ป้อน "Handler Mappings" จากนั้นเพิ่ม Module Mapping (ต้องเพิ่ม% S% S มิฉะนั้นจะมีการรายงานข้อผิดพลาด):

ในที่สุดเราก็สามารถเข้าถึงแอปพลิเคชัน python ได้สำเร็จ:

อัพเดท:

คุณเห็น python ใน Handler Mappings หรือไม่

นี่คือ web.config ของฉัน:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
</configuration>

ไม่มีอะไรใน web.config การตั้งค่าทั้งหมดของฉันมีไว้สำหรับ IIS ทั้งหมด:

คลิก "Directory Browsing":

เปิดใช้งาน: