
在开始部署FastAPI应用之前,需要确保服务器环境已正确配置。
推荐安装Python 3.x 64位版本,并选择“为所有用户安装”以确保系统级别的可用性。
HTTP Platform Handler是IIS用于托管非.NET应用程序(如Python、Node.js等)的关键组件。
打开命令提示符(以管理员身份运行),安装FastAPI和Uvicorn。Uvicorn是一个ASGI服务器,用于运行FastAPI应用。
pip install fastapi uvicorn
在服务器上创建一个用于存放FastAPI应用代码的目录,例如 C:\python-app。同时,为日志文件创建一个子目录 C:\python-app\logs。
在 C:\python-app 目录下创建 main.py 文件,并添加以下FastAPI示例代码。请注意,为了与IIS中的应用程序别名匹配,示例中的路由路径包含了 /python。
from fastapi import FastAPI
app = FastAPI()
@app.get("/python") # 路由路径应与IIS中设置的应用程序别名一致
async def get_root():
return {"message": "Hello World from FastAPI on IIS!"}IIS的配置是部署FastAPI应用的核心环节,主要包括 web.config 文件、应用程序池和IIS应用程序设置。
在 C:\python-app 目录下创建 web.config 文件。这个文件告诉IIS如何处理传入的请求,并将它们转发给Uvicorn。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
<!-- 配置httpPlatformHandler来处理所有请求 -->
<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>
<!-- 将项目根目录添加到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>关键配置说明:
打开IIS管理器,创建一个新的应用程序池:
将FastAPI应用添加到IIS网站中:
不正确的权限是导致HTTP 500.19 错误(无法读取配置文件)或应用程序无法启动的常见原因。IIS应用程序池标识(通常是 IIS APPPOOL\PythonAppPool 或 NT AUTHORITY\IUSR 和 Builtin\IIS_IUSRS)需要对Python安装目录和FastAPI应用目录具有读取和执行权限,对日志目录具有写入权限。
打开命令提示符(以管理员身份运行),执行以下命令来授予必要的权限:
# 授予IIS匿名用户和IIS_IUSRS组对Python安装目录的读取和执行权限 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组对FastAPI应用目录的读取和执行权限 icacls "C:\python-app" /grant "NT AUTHORITY\IUSR:(OI)(CI)(RX)" icacls "C:\python-app" /grant "Builtin\IIS_IUSRS:(OI)(CI)(RX)" # 确保Uvicorn能够写入日志文件,对C:\python-app\logs目录授予修改权限 icacls "C:\python-app\logs" /grant "NT AUTHORITY\IUSR:(OI)(CI)(M)" icacls "C:\python-app\logs" /grant "Builtin\IIS_IUSRS:(OI)(CI)(M)"
注意:
完成所有配置后,即可测试您的FastAPI应用。
通过遵循本教程的步骤,您应该能够在IIS 10上成功部署和运行您的FastAPI应用程序。
以上就是在IIS 10上部署FastAPI应用:完整教程的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号