0

0

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

心靈之曲

心靈之曲

发布时间:2025-09-30 14:27:13

|

454人浏览过

|

来源于php中文网

原创

在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 Files\Python312)。

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-app\logs。

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: 指定日志文件的路径。.\logs\uvicorn 表示在应用目录下的 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应用目录具有足够的读写权限。

玄鲸Timeline
玄鲸Timeline

一个AI驱动的历史时间线生成平台

下载
  • 打开管理员权限的命令提示符或PowerShell。

  • 执行以下命令授予权限(请根据您的Python安装路径调整):

    # 授予IIS_IUSRS组对Python安装目录及其子目录的读取和执行权限
    icacls "C:\Program Files\Python312" /grant "Builtin\IIS_IUSRS:(OI)(CI)(RX)"
    # 授予IUSR账户对Python安装目录及其子目录的读取和执行权限
    icacls "C:\Program Files\Python312" /grant "NT AUTHORITY\IUSR:(OI)(CI)(RX)"
    
    # 授予IIS_IUSRS组对FastAPI应用目录及其子目录的完全控制权限(包括日志写入)
    icacls "C:\python-app" /grant "Builtin\IIS_IUSRS:(OI)(CI)(F)"
    # 授予IUSR账户对FastAPI应用目录及其子目录的完全控制权限(包括日志写入)
    icacls "C:\python-app" /grant "NT AUTHORITY\IUSR:(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-app\logs 目录下的Uvicorn日志文件,它们会提供详细的错误信息。
  • 确保 web.config 中的 processPath 和 PYTHONPATH 路径正确无误。
  • 仔细检查文件系统权限是否已正确设置。

8. 生产环境优化

当应用稳定运行后,您可以进行一些优化:

  • 日志级别: 在 web.config 中,将 arguments 中的 --log-level info 修改为 --log-level error,以减少生产环境的日志量。
  • 安全性: 确保您的FastAPI应用代码遵循安全最佳实践,例如输入验证、错误处理等。
  • 性能: 根据负载调整 processesPerApplication 参数,以优化性能。

通过遵循上述步骤,您将能够在IIS 10上成功部署和运行Python FastAPI应用程序,利用IIS的强大功能来管理和托管您的Python Web服务。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
Python FastAPI异步API开发_Python怎么用FastAPI构建异步API
Python FastAPI异步API开发_Python怎么用FastAPI构建异步API

Python FastAPI 异步开发利用 async/await 关键字,通过定义异步视图函数、使用异步数据库库 (如 databases)、异步 HTTP 客户端 (如 httpx),并结合后台任务队列(如 Celery)和异步依赖项,实现高效的 I/O 密集型 API,显著提升吞吐量和响应速度,尤其适用于处理数据库查询、网络请求等耗时操作,无需阻塞主线程。

27

2025.12.22

scripterror怎么解决
scripterror怎么解决

scripterror的解决办法有检查语法、文件路径、检查网络连接、浏览器兼容性、使用try-catch语句、使用开发者工具进行调试、更新浏览器和JavaScript库或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

228

2023.10.18

500error怎么解决
500error怎么解决

500error的解决办法有检查服务器日志、检查代码、检查服务器配置、更新软件版本、重新启动服务、调试代码和寻求帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

297

2023.10.25

硬盘接口类型介绍
硬盘接口类型介绍

硬盘接口类型有IDE、SATA、SCSI、Fibre Channel、USB、eSATA、mSATA、PCIe等等。详细介绍:1、IDE接口是一种并行接口,主要用于连接硬盘和光驱等设备,它主要有两种类型:ATA和ATAPI,IDE接口已经逐渐被SATA接口;2、SATA接口是一种串行接口,相较于IDE接口,它具有更高的传输速度、更低的功耗和更小的体积;3、SCSI接口等等。

1133

2023.10.19

PHP接口编写教程
PHP接口编写教程

本专题整合了PHP接口编写教程,阅读专题下面的文章了解更多详细内容。

213

2025.10.17

php8.4实现接口限流的教程
php8.4实现接口限流的教程

PHP8.4本身不内置限流功能,需借助Redis(令牌桶)或Swoole(漏桶)实现;文件锁因I/O瓶颈、无跨机共享、秒级精度等缺陷不适用高并发场景。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1868

2025.12.29

java接口相关教程
java接口相关教程

本专题整合了java接口相关内容,阅读专题下面的文章了解更多详细内容。

20

2026.01.19

default gateway怎么配置
default gateway怎么配置

配置default gateway的步骤:1、了解网络环境;2、获取路由器IP地址;3、登录路由器管理界面;4、找到并配置WAN口设置;5、配置默认网关;6、保存设置并退出;7、检查网络连接是否正常。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

223

2023.12.07

C++ 设计模式与软件架构
C++ 设计模式与软件架构

本专题深入讲解 C++ 中的常见设计模式与架构优化,包括单例模式、工厂模式、观察者模式、策略模式、命令模式等,结合实际案例展示如何在 C++ 项目中应用这些模式提升代码可维护性与扩展性。通过案例分析,帮助开发者掌握 如何运用设计模式构建高质量的软件架构,提升系统的灵活性与可扩展性。

0

2026.01.30

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 22.4万人学习

Django 教程
Django 教程

共28课时 | 3.7万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号