
本教程详细指导如何在Windows Server 2019及IIS 10环境下,利用HTTP Platform Handler部署Python FastAPI应用程序。内容涵盖Python、HTTP Platform Handler的安装,FastAPI应用的代码准备与 web.config 配置,IIS应用程序池及权限设置,最终实现FastAPI应用的稳定运行与访问。
1. 环境准备与必要软件安装
在开始部署之前,确保您的windows server 2019已安装iis 10。
1.1 安装Python 64位版本
强烈建议安装Python 64位版本,并选择“为所有用户安装”,以便系统服务账户能够访问。
访问 Python官方网站 下载最新的Python 3.x 64位安装包。运行安装程序,勾选“Add Python to PATH”选项,并选择“Install Now”或自定义安装路径(例如 C:Program FilesPython312)。
1.2 安装Microsoft HTTP Platform Handler
HTTP Platform Handler是IIS与外部进程(如Python应用)通信的关键组件。
访问 IIS.net 下载适用于您系统的HTTP Platform Handler 1.2 x64版本。运行安装程序完成安装。
1.3 安装FastAPI和Uvicorn
FastAPI是一个现代、高性能的Python Web框架,Uvicorn是其推荐的ASGI服务器。
打开管理员权限的命令提示符或PowerShell。执行以下命令安装FastAPI和Uvicorn:
pip install fastapi uvicorn
2. FastAPI应用程序目录与代码准备
2.1 创建应用目录和日志目录
在C盘根目录创建应用程序主目录,例如 C:python-app。在 C:python-app 内部创建日志目录,例如 C:python-applogs。
2.2 创建FastAPI应用代码 (main.py)
在 C:python-app 目录下创建 main.py 文件,并添加以下示例代码:
from fastapi import FastAPIapp = FastAPI()@app.get("/python") # 注意:此路由路径应与IIS中配置的应用程序别名一致async def get_root(): return {"message": "Hello World from FastAPI on IIS"}
重要提示: @app.get(“/python”) 中的 /python 路径应与您稍后在IIS中为该应用设置的别名保持一致,否则可能会导致路由不匹配。
3. 配置IIS web.config 文件
在 C:python-app 目录下创建 web.config 文件,用于指导IIS如何启动和管理Python应用。
<!-- -->
配置项说明:
processPath: 指定启动Python应用的执行文件路径。这里应指向Uvicorn的可执行文件(通常位于Python安装目录的 Scripts 文件夹下)。请根据您的Python安装路径进行调整。arguments: 传递给Uvicorn的参数。main:app 指示Uvicorn加载 main.py 文件中的 app 实例。–host 0.0.0.0 允许从任何网络接口访问,–port %HTTP_PLATFORM_PORT% 接收IIS分配的端口。–log-level info 设置日志级别。stdoutLogEnabled: 启用标准输出日志。stdoutLogFile: 指定日志文件的路径。.logsuvicorn 表示在应用目录下的 logs 文件夹中生成 uvicorn 开头的日志文件。startupTimeLimit: 应用启动的最大等待时间(秒)。processesPerApplication: 每个应用程序池允许的最大进程数。environmentVariables: 环境变量设置。PYTHONPATH 必须指向您的应用目录 (C:python-app),以便Uvicorn能够找到 main.py。
4. 配置IIS应用程序池
为了隔离和管理FastAPI应用,需要创建一个独立的应用程序池。
打开IIS管理器。在“应用程序池”右键菜单中选择“添加应用程序池”。名称: PythonAppPool (或您喜欢的任何名称)。托管管道模式: 集成。“.NET CLR 版本”: 无托管代码。点击“确定”。选中新建的 PythonAppPool,点击右侧的“高级设置…”。“标识”: 保持默认的 ApplicationPoolIdentity。这是IIS内置的账户,具有最小权限,是推荐的做法。
5. 文件系统权限设置
IIS的应用程序池标识(ApplicationPoolIdentity,代表 IUSR 和 IIS_IUSRS 组)需要对Python安装目录和FastAPI应用目录具有足够的读写权限。
码上飞
码上飞(CodeFlying) 是一款AI自动化开发平台,通过自然语言描述即可自动生成完整应用程序。
138 查看详情
打开管理员权限的命令提示符或PowerShell。
执行以下命令授予权限(请根据您的Python安装路径调整):
# 授予IIS_IUSRS组对Python安装目录及其子目录的读取和执行权限icacls "C:Program FilesPython312" /grant "BuiltinIIS_IUSRS:(OI)(CI)(RX)"# 授予IUSR账户对Python安装目录及其子目录的读取和执行权限icacls "C:Program FilesPython312" /grant "NT AUTHORITYIUSR:(OI)(CI)(RX)"# 授予IIS_IUSRS组对FastAPI应用目录及其子目录的完全控制权限(包括日志写入)icacls "C:python-app" /grant "BuiltinIIS_IUSRS:(OI)(CI)(F)"# 授予IUSR账户对FastAPI应用目录及其子目录的完全控制权限(包括日志写入)icacls "C:python-app" /grant "NT AUTHORITYIUSR:(OI)(CI)(F)"
(OI)(CI) 表示对象继承和容器继承,使权限应用于子文件夹和文件。(RX) 表示读取和执行权限。(F) 表示完全控制权限,这对于应用写入日志文件是必需的。
6. 在IIS中添加应用程序
将FastAPI应用添加到IIS站点。
打开IIS管理器。展开“站点” -> “Default Web Site”(或您自定义的站点)。右键点击“Default Web Site”,选择“添加应用程序…”。别名: python (此别名应与 main.py 中 @app.get(“/python”) 的路由路径匹配)。应用程序池: 选择之前创建的 PythonAppPool。物理路径: C:python-app。点击“确定”。
7. 测试与验证
现在,您的FastAPI应用应该已在IIS上运行。
打开浏览器,访问 http://localhost/python (如果您在本地服务器上测试) 或 http://您的服务器IP/python。如果一切配置正确,您将看到浏览器显示 {“message”: “Hello World from FastAPI on IIS”}。
故障排除:
如果遇到HTTP 500错误,请检查 C:python-applogs 目录下的Uvicorn日志文件,它们会提供详细的错误信息。确保 web.config 中的 processPath 和 PYTHONPATH 路径正确无误。仔细检查文件系统权限是否已正确设置。
8. 生产环境优化
当应用稳定运行后,您可以进行一些优化:
日志级别: 在 web.config 中,将 arguments 中的 –log-level info 修改为 –log-level error,以减少生产环境的日志量。安全性: 确保您的FastAPI应用代码遵循安全最佳实践,例如输入验证、错误处理等。性能: 根据负载调整 processesPerApplication 参数,以优化性能。
通过遵循上述步骤,您将能够在IIS 10上成功部署和运行Python FastAPI应用程序,利用IIS的强大功能来管理和托管您的Python Web服务。
以上就是在IIS 10上部署FastAPI应用:详细教程的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/619194.html
微信扫一扫
支付宝扫一扫