在開(kāi)始部署FastAPI應(yīng)用之前,需要確保服務(wù)器環(huán)境已正確配置。
推薦安裝Python 3.x 64位版本,并選擇“為所有用戶安裝”以確保系統(tǒng)級(jí)別的可用性。
HTTP Platform Handler是IIS用于托管非.NET應(yīng)用程序(如Python、Node.js等)的關(guān)鍵組件。
打開(kāi)命令提示符(以管理員身份運(yùn)行),安裝FastAPI和Uvicorn。Uvicorn是一個(gè)ASGI服務(wù)器,用于運(yùn)行FastAPI應(yīng)用。
pip install fastapi uvicorn
在服務(wù)器上創(chuàng)建一個(gè)用于存放FastAPI應(yīng)用代碼的目錄,例如 C:\python-app。同時(shí),為日志文件創(chuàng)建一個(gè)子目錄 C:\python-app\logs。
在 C:\python-app 目錄下創(chuàng)建 main.py 文件,并添加以下FastAPI示例代碼。請(qǐng)注意,為了與IIS中的應(yīng)用程序別名匹配,示例中的路由路徑包含了 /python。
from fastapi import FastAPI app = FastAPI() @app.get("/python") # 路由路徑應(yīng)與IIS中設(shè)置的應(yīng)用程序別名一致 async def get_root(): return {"message": "Hello World from FastAPI on IIS!"}
IIS的配置是部署FastAPI應(yīng)用的核心環(huán)節(jié),主要包括 web.config 文件、應(yīng)用程序池和IIS應(yīng)用程序設(shè)置。
在 C:\python-app 目錄下創(chuàng)建 web.config 文件。這個(gè)文件告訴IIS如何處理傳入的請(qǐng)求,并將它們轉(zhuǎn)發(fā)給Uvicorn。
<?xml version="1.0" encoding="utf-8"?> <configuration> <system.webServer> <handlers> <!-- 配置httpPlatformHandler來(lái)處理所有請(qǐng)求 --> <add name="httpPlatformHandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified" /> </handlers> <httpPlatform processPath="C:\Program Files\Python312\Scripts\uvicorn.exe" arguments="main:app --host 0.0.0.0 --port %HTTP_PLATFORM_PORT% --log-level info" stdoutLogEnabled="true" stdoutLogFile=".\logs\uvicorn" startupTimeLimit="60" processesPerApplication="16"> <environmentVariables> <!-- 將項(xiàng)目根目錄添加到PYTHONPATH,確保Uvicorn能找到main.py --> <environmentVariable name="PYTHONPATH" value="C:\python-app\" /> <!-- 確保Uvicorn能獲取到IIS分配的端口 --> <environmentVariable name="HTTP_PLATFORM_PORT" value="%HTTP_PLATFORM_PORT%" /> </environmentVariables> </httpPlatform> </system.webServer> </configuration>
關(guān)鍵配置說(shuō)明:
碼上飛(CodeFlying) 是一款A(yù)I自動(dòng)化開(kāi)發(fā)平臺(tái),通過(guò)自然語(yǔ)言描述即可自動(dòng)生成完整應(yīng)用程序。
打開(kāi)IIS管理器,創(chuàng)建一個(gè)新的應(yīng)用程序池:
將FastAPI應(yīng)用添加到IIS網(wǎng)站中:
不正確的權(quán)限是導(dǎo)致HTTP 500.19 錯(cuò)誤(無(wú)法讀取配置文件)或應(yīng)用程序無(wú)法啟動(dòng)的常見(jiàn)原因。IIS應(yīng)用程序池標(biāo)識(shí)(通常是 IIS APPPOOL\PythonAppPool 或 NT AUTHORITY\IUSR 和 Builtin\IIS_IUSRS)需要對(duì)Python安裝目錄和FastAPI應(yīng)用目錄具有讀取和執(zhí)行權(quán)限,對(duì)日志目錄具有寫(xiě)入權(quán)限。
打開(kāi)命令提示符(以管理員身份運(yùn)行),執(zhí)行以下命令來(lái)授予必要的權(quán)限:
# 授予IIS匿名用戶和IIS_IUSRS組對(duì)Python安裝目錄的讀取和執(zhí)行權(quán)限 icacls "C:\Program Files\Python312" /grant "NT AUTHORITY\IUSR:(OI)(CI)(RX)" icacls "C:\Program Files\Python312" /grant "Builtin\IIS_IUSRS:(OI)(CI)(RX)" # 授予IIS匿名用戶和IIS_IUSRS組對(duì)FastAPI應(yīng)用目錄的讀取和執(zhí)行權(quán)限 icacls "C:\python-app" /grant "NT AUTHORITY\IUSR:(OI)(CI)(RX)" icacls "C:\python-app" /grant "Builtin\IIS_IUSRS:(OI)(CI)(RX)" # 確保Uvicorn能夠?qū)懭肴罩疚募瑢?duì)C:\python-app\logs目錄授予修改權(quán)限 icacls "C:\python-app\logs" /grant "NT AUTHORITY\IUSR:(OI)(CI)(M)" icacls "C:\python-app\logs" /grant "Builtin\IIS_IUSRS:(OI)(CI)(M)"
注意:
完成所有配置后,即可測(cè)試您的FastAPI應(yīng)用。
通過(guò)遵循本教程的步驟,您應(yīng)該能夠在IIS 10上成功部署和運(yùn)行您的FastAPI應(yīng)用程序。
以上就是在IIS 10上部署FastAPI應(yīng)用:完整教程的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注php中文網(wǎng)其它相關(guān)文章!
每個(gè)人都需要一臺(tái)速度更快、更穩(wěn)定的 PC。隨著時(shí)間的推移,垃圾文件、舊注冊(cè)表數(shù)據(jù)和不必要的后臺(tái)進(jìn)程會(huì)占用資源并降低性能。幸運(yùn)的是,許多工具可以讓 Windows 保持平穩(wěn)運(yùn)行。
微信掃碼
關(guān)注PHP中文網(wǎng)服務(wù)號(hào)
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號(hào)