在IIS 10上部署FastAPI应用:详细教程

在IIS 10上部署FastAPI应用:详细教程

本教程详细指导如何在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 FastAPI

app = 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应用目录具有足够的读写权限。

AppMall应用商店

AI应用商店,提供即时交付、按需付费的人工智能应用服务

56

查看详情

  • 打开管理员权限的命令提示符或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应用:详细教程的详细内容,更多请关注昆居客【www.kunjuke.com】。

相关推荐:

日本目标到 2040 年部署 1000 万台 AI 机器人,应对整体劳动力短缺

7 月 6 日消息,日本经济产业省当地时间 6 月 30 日公布了《人工智能机器人战略》修订版,目标到 2040 年在 18 个领域部署 1000 万台 AI 机器人,以在人口老龄化、出生率持续低下的背景下应对整体劳动力短缺。日本经产省提到,该国目标在世界范围内构建和发展能充分利用其优势的物理 AI 和机器人数据基础架构。图源:Pexels而在驱动 AI 机器人的模型方面,日本经产省未来 5 年将...

华擎推出 ASRock Claw Quickset 桌面工具,可简化本地 AI 环境部署

7 月 2 日消息,华擎昨日宣布推出 Windows 桌面工具 ASRock Claw Quickset。其专为简化本地 AI 环境部署而设计,能自动完成 OpenClaw、AI 模型及各项必要软件组件的安装与设定。华擎表示,本地执行 AI 正愈发受到用户关注,但要想自行配置本地 AI 环境,往往得安装多项软件、处理依赖关系,还得挑选兼容的 AI 模型,对不少人来说仍是一道门槛。ASRock Cl...

《幻鸟之森》下载安装教程介绍

《幻鸟之森》是一款陪伴你工作、学习和休息的桌面放置养成游戏。你可以在屏幕一侧观察、照料并引导神秘小鸟成长,看它们从雏鸟逐渐进化为幻想中的奇妙生物。无需频繁切换窗口,也能在日常间隙收获一份轻松与陪伴~幻鸟之森怎么下载安装Steam平台需要先安装Steam平台,之后注册一个账号登录,然后搜索“幻鸟之森”进入商店购买页面。点击添加至购物车,然后付钱购买,最后再次进入商店购买页面点击马上开玩选择文件下载位...

《超级变色龙》下载安装教程介绍

把自己涂满颜色,融入背景吧!《Meccha Chameleon》是一款全新感觉的捉迷藏游戏,玩家需要在自己纯白的身体上绘图以拟态成关卡中的样子。躲藏地点、姿势,以及最重要的“画功”是生存的关键。用连变色龙都自愧不如的技术欺骗追捕者的眼睛,在时限内逃出生天吧!您还可以轻松享受随机匹配或观众参与型直播。超级变色龙怎么下载安装Steam平台需要先安装Steam平台,之后注册一个账号登录,然后搜索“超级变...

《喵咪争霸》下载安装教程介绍

《喵咪争霸》是一款可爱画风的即时战斗休闲卡牌游戏。能力各异、萌态万千的猫咪卡牌,每一张都可能是破局的关键。研究不同的卡组与道具搭配,突破重重关卡,成为这片大陆的最强大佬吧!喵咪争霸怎么下载安装Steam平台需要先安装Steam平台,之后注册一个账号登录,然后搜索“喵咪争霸”进入商店购买页面。点击添加至购物车,然后付钱购买,最后再次进入商店购买页面点击马上开玩选择文件下载位置即可开始下载。可以去St...

《小闹花园》下载安装教程介绍

《小闹花园》是一款在桌面挂机养花的游戏。你可以随缘地为种子浇水、施肥,随缘地收一收可爱的花朵和果实,最后爽爽地杀一杀讨厌的虫子,放心,它们不会弄脏你的桌面!小闹花园怎么下载安装Steam平台需要先安装Steam平台,之后注册一个账号登录,然后搜索“小闹花园”进入商店购买页面。点击添加至购物车,然后付钱购买,最后再次进入商店购买页面点击马上开玩选择文件下载位置即可开始下载。可以去Steam平台下载,...

三角洲行动S10体验服安装教程

《三角洲行动》是一款设定在2035年的第一人称特战干员战术射击游戏。就在最近三角洲行动终于更新了s10赛季,那么有不少小伙伴好奇S10体验服怎么安装,下面就来告诉大家。三角洲行动S10体验服安装教程。 三角洲行动S10体验服安装教程 一、安装前必备准备 1、 确认资格生效 安装前务必先确认账号已获得测试资格,否则即使下载客户端也无法登录: 官网查询:登录 df.qq.com,点击右上角「测试资格查...

《SAND:Raiders of Sophie》新手建船教程分享

《SAND:Raiders of Sophie》中的建造船只是游戏里非常重要的事情,而想要顺利造船的话也需要一些技巧,首先是选择合适的底座,底座可以选择比较大的,形状比较规整的,这样受到冲击的面积也不会太大。 SAND新手怎么造船 本文内容来源于互联网,如有侵权请联系删除。