亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

搜索

在IIS 10上部署FastAPI應(yīng)用:完整教程

碧海醫(yī)心
發(fā)布: 2025-09-30 12:13:03
原創(chuàng)
235人瀏覽過(guò)

在iis 10上部署fastapi應(yīng)用:完整教程

本教程詳細(xì)指導(dǎo)如何在Windows Server 2019上的IIS 10環(huán)境中部署Python FastAPI應(yīng)用程序。我們將涵蓋從Python和HTTP Platform Handler的安裝、FastAPI項(xiàng)目的構(gòu)建、IIS應(yīng)用程序池和網(wǎng)站配置、到關(guān)鍵的文件權(quán)限設(shè)置,確保您的FastAPI應(yīng)用通過(guò)Uvicorn作為ASGI服務(wù)器在IIS上穩(wěn)定運(yùn)行,并提供故障排除建議。

1. 環(huán)境準(zhǔn)備與先決條件

在開(kāi)始部署FastAPI應(yīng)用之前,需要確保服務(wù)器環(huán)境已正確配置。

1.1 安裝Python

推薦安裝Python 3.x 64位版本,并選擇“為所有用戶安裝”以確保系統(tǒng)級(jí)別的可用性。

  • 訪問(wèn)Python官方網(wǎng)站下載最新穩(wěn)定版Python 3.x 64位安裝程序。
  • 運(yùn)行安裝程序,勾選“Add Python to PATH”選項(xiàng),并選擇“Install Now”。

1.2 安裝Microsoft HTTP Platform Handler

HTTP Platform Handler是IIS用于托管非.NET應(yīng)用程序(如Python、Node.js等)的關(guān)鍵組件。

  • 訪問(wèn)IIS.NET下載頁(yè)面下載Microsoft HTTP Platform Handler 1.2 64位版本。
  • 運(yùn)行安裝程序完成安裝。

1.3 安裝Python庫(kù)

打開(kāi)命令提示符(以管理員身份運(yùn)行),安裝FastAPI和Uvicorn。Uvicorn是一個(gè)ASGI服務(wù)器,用于運(yùn)行FastAPI應(yīng)用。

pip install fastapi uvicorn
登錄后復(fù)制

2. FastAPI應(yīng)用程序構(gòu)建

2.1 創(chuàng)建項(xiàng)目目錄

在服務(wù)器上創(chuàng)建一個(gè)用于存放FastAPI應(yīng)用代碼的目錄,例如 C:\python-app。同時(shí),為日志文件創(chuàng)建一個(gè)子目錄 C:\python-app\logs。

2.2 編寫(xiě) main.py

在 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!"}
登錄后復(fù)制

3. IIS配置

IIS的配置是部署FastAPI應(yīng)用的核心環(huán)節(jié),主要包括 web.config 文件、應(yīng)用程序池和IIS應(yīng)用程序設(shè)置。

3.1 創(chuàng)建 web.config 文件

在 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>
登錄后復(fù)制

關(guān)鍵配置說(shuō)明:

碼上飛
碼上飛

碼上飛(CodeFlying) 是一款A(yù)I自動(dòng)化開(kāi)發(fā)平臺(tái),通過(guò)自然語(yǔ)言描述即可自動(dòng)生成完整應(yīng)用程序。

碼上飛138
查看詳情 碼上飛
  • processPath: 必須指向Uvicorn的可執(zhí)行文件路徑。根據(jù)您的Python安裝路徑,這通常位于 C:\Program Files\Python312\Scripts\uvicorn.exe(請(qǐng)根據(jù)實(shí)際Python版本調(diào)整路徑)。
  • arguments: 這是傳遞給Uvicorn的參數(shù)。
    • main:app: 指示Uvicorn加載 main.py 文件中的 app 實(shí)例。
    • --host 0.0.0.0: 監(jiān)聽(tīng)所有網(wǎng)絡(luò)接口。
    • --port %HTTP_PLATFORM_PORT%: Uvicorn將監(jiān)聽(tīng)I(yíng)IS通過(guò) HTTP_PLATFORM_PORT 環(huán)境變量分配的端口。
    • --log-level info: 設(shè)置日志級(jí)別,便于調(diào)試。部署穩(wěn)定后可改為 error。
  • stdoutLogEnabled="true" 和 stdoutLogFile=".\logs\uvicorn": 啟用標(biāo)準(zhǔn)輸出日志,并將其寫(xiě)入 C:\python-app\logs\uvicorn.log 文件。這是診斷啟動(dòng)問(wèn)題的重要手段。
  • environmentVariable name="PYTHONPATH" value="C:\python-app\": 將FastAPI項(xiàng)目的根目錄添加到Python的搜索路徑中,確保Uvicorn能夠找到 main.py。

3.2 創(chuàng)建IIS應(yīng)用程序池

打開(kāi)IIS管理器,創(chuàng)建一個(gè)新的應(yīng)用程序池:

  1. 在左側(cè)導(dǎo)航欄中右鍵點(diǎn)擊“應(yīng)用程序池”,選擇“添加應(yīng)用程序池”。
  2. 輸入名稱(chēng),例如 PythonAppPool。
  3. .NET CLR 版本 選擇“無(wú)托管代碼”。
  4. 托管管道模式 選擇“集成”。
  5. 點(diǎn)擊“確定”。
  6. 選中新創(chuàng)建的應(yīng)用程序池,點(diǎn)擊右側(cè)“高級(jí)設(shè)置”,確保“標(biāo)識(shí)”設(shè)置為 ApplicationPoolIdentity(這是默認(rèn)值,推薦使用)。

3.3 在IIS中添加應(yīng)用程序

將FastAPI應(yīng)用添加到IIS網(wǎng)站中:

  1. 在左側(cè)導(dǎo)航欄中展開(kāi)“站點(diǎn)” -> “Default Web Site”(或您希望部署的任何網(wǎng)站)。
  2. 右鍵點(diǎn)擊該網(wǎng)站,選擇“添加應(yīng)用程序”。
  3. 別名 (Alias): 輸入 python。這將是您訪問(wèn)應(yīng)用的URL路徑(例如 http://localhost/python)。
  4. 應(yīng)用程序池: 選擇您剛剛創(chuàng)建的 PythonAppPool。
  5. 物理路徑: 瀏覽到您的FastAPI項(xiàng)目目錄,即 C:\python-app。
  6. 點(diǎn)擊“確定”。

4. 文件系統(tǒng)權(quán)限設(shè)置

不正確的權(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)"
登錄后復(fù)制

注意:

  • 請(qǐng)根據(jù)您的Python實(shí)際安裝路徑調(diào)整 C:\Program Files\Python312。
  • NT AUTHORITY\IUSR 是IIS匿名用戶的內(nèi)置賬戶。
  • Builtin\IIS_IUSRS 是IIS工作進(jìn)程使用的組。
  • (OI)(CI) 表示對(duì)象繼承和容器繼承,確保子文件夾和文件也繼承這些權(quán)限。
  • (RX) 表示讀取和執(zhí)行權(quán)限。
  • (M) 表示修改權(quán)限(包括寫(xiě)入),對(duì)于日志目錄是必需的。

5. 測(cè)試與驗(yàn)證

完成所有配置后,即可測(cè)試您的FastAPI應(yīng)用。

  1. 訪問(wèn)URL: 打開(kāi)瀏覽器,訪問(wèn) http://localhost/python(如果部署在Default Web Site下,且別名為 python)。
  2. 預(yù)期結(jié)果: 如果一切正常,您應(yīng)該會(huì)看到一個(gè)JSON響應(yīng):{"message": "Hello World from FastAPI on IIS!"}。
  3. 檢查日志: 如果遇到問(wèn)題,請(qǐng)檢查 C:\python-app\logs 目錄下的 uvicorn.log 文件。這個(gè)日志文件會(huì)記錄Uvicorn的啟動(dòng)信息和運(yùn)行時(shí)錯(cuò)誤,是診斷問(wèn)題的關(guān)鍵。

6. 故障排除與最佳實(shí)踐

  • HTTP Error 500.19 - Internal Server Error (Error Code 0x80070003):
    • 這通常表示IIS無(wú)法讀取 web.config 文件或其依賴(lài)項(xiàng)。最常見(jiàn)的原因是文件權(quán)限不足。請(qǐng)仔細(xì)檢查第4節(jié)中的 icacls 命令是否正確執(zhí)行,確保 NT AUTHORITY\IUSR 和 Builtin\IIS_IUSRS 對(duì) C:\python-app 目錄及其子文件具有讀取權(quán)限。
    • 另一個(gè)可能原因是 web.config 文件格式錯(cuò)誤。使用XML編輯器檢查其語(yǔ)法。
  • 應(yīng)用程序啟動(dòng)失敗,瀏覽器顯示空白或通用錯(cuò)誤頁(yè):
    • 檢查 C:\python-app\logs\uvicorn.log 文件。它會(huì)顯示Uvicorn啟動(dòng)時(shí)的詳細(xì)錯(cuò)誤信息,例如模塊找不到、Python語(yǔ)法錯(cuò)誤、端口沖突等。
    • 確保 web.config 中的 processPath 指向正確的 uvicorn.exe 路徑。
    • 確認(rèn) PYTHONPATH 環(huán)境變量設(shè)置正確,指向您的FastAPI項(xiàng)目根目錄。
  • Python版本和架構(gòu): 推薦使用64位Python,并確保HTTP Platform Handler也安裝了64位版本,以避免潛在的兼容性問(wèn)題。
  • Uvicorn參數(shù): main:app 中的 main 對(duì)應(yīng) main.py 文件名(不含.py),app 對(duì)應(yīng) FastAPI() 實(shí)例的變量名。如果您的文件或?qū)嵗煌?,?qǐng)相應(yīng)修改。
  • 日志級(jí)別: 在生產(chǎn)環(huán)境中,將 web.config 中 arguments 參數(shù)的 --log-level 設(shè)置為 error 或 critical,以減少日志輸出量。

通過(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)文章!

最佳 Windows 性能的頂級(jí)免費(fèi)優(yōu)化軟件
最佳 Windows 性能的頂級(jí)免費(fèi)優(yōu)化軟件

每個(gè)人都需要一臺(tái)速度更快、更穩(wěn)定的 PC。隨著時(shí)間的推移,垃圾文件、舊注冊(cè)表數(shù)據(jù)和不必要的后臺(tái)進(jìn)程會(huì)占用資源并降低性能。幸運(yùn)的是,許多工具可以讓 Windows 保持平穩(wěn)運(yùn)行。

下載
來(lái)源:php中文網(wǎng)
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請(qǐng)聯(lián)系admin@php.cn
最新問(wèn)題
開(kāi)源免費(fèi)商場(chǎng)系統(tǒng)廣告
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板
關(guān)于我們 免責(zé)申明 意見(jiàn)反饋 講師合作 廣告合作 最新更新
php中文網(wǎng):公益在線php培訓(xùn),幫助PHP學(xué)習(xí)者快速成長(zhǎng)!
關(guān)注服務(wù)號(hào) 技術(shù)交流群
PHP中文網(wǎng)訂閱號(hào)
每天精選資源文章推送
PHP中文網(wǎng)APP
隨時(shí)隨地碎片化學(xué)習(xí)
PHP中文網(wǎng)抖音號(hào)
發(fā)現(xiàn)有趣的

Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號(hào)