如何在IIS服务器上部署FastAPI Web应用(不使用Docker容器)
在IIS服务器上部署FastAPI应用(无Docker版)
1. 安装前置依赖
- 先在服务器上安装Python,记得勾选「Add Python to PATH」,或者手动将Python路径添加到系统环境变量。
- 打开服务器管理器,添加IIS角色及以下组件:
- URL重写模块
- 安装ASP.NET Core Hosting Bundle(它包含IIS的AspNetCoreModuleV2,用于托管ASGI类型的应用)
- 验证安装:打开命令提示符,输入
python --version确认Python路径正常。
2. 准备FastAPI应用目录
- 在服务器上创建应用根目录,比如
C:\FastAPI_App - 进入该目录,创建并激活Python虚拟环境:
python -m venv venv venv\Scripts\activate - 安装FastAPI和ASGI服务器(这里用Uvicorn):
pip install fastapi uvicorn - 创建核心文件
main.py,示例代码如下:from fastapi import FastAPI app = FastAPI(title="IIS Deployed FastAPI") @app.get("/") async def root(): return {"status": "success", "message": "FastAPI running on IIS!"} - 本地测试运行:
访问uvicorn main:app --host 127.0.0.1 --port 8000http://127.0.0.1:8000和http://127.0.0.1:8000/docs,确认应用正常响应。
3. 配置IIS网站
- 打开IIS管理器,右键「网站」→「添加网站」:
- 网站名称:FastAPI_App
- 物理路径:选择刚才创建的
C:\FastAPI_App - 端口:设为80(或自定义端口),主机名按需填写
- 配置应用程序池:
- 找到对应网站的应用程序池,右键「高级设置」
- 将「.NET CLR版本」设为无托管代码
- 可选:将「启动模式」设为「AlwaysRunning」,避免应用闲置后自动停止
4. 创建IIS配置文件(Web.config)
在应用根目录C:\FastAPI_App下创建Web.config,内容如下:
<?xml version="1.0" encoding="utf-8"?> <configuration> <system.webServer> <handlers> <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" /> </handlers> <aspNetCore processPath="C:\FastAPI_App\venv\Scripts\python.exe" arguments="-m uvicorn main:app --host 127.0.0.1 --port 8000" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" /> </system.webServer> </configuration>
- 注意:修改
processPath为你实际的虚拟环境Python路径 - 手动创建
logs目录(mkdir C:\FastAPI_App\logs),用于存储运行日志,方便排查问题
5. 测试部署
- 在IIS管理器中启动刚创建的网站
- 访问网站的公网/本地URL(比如
http://localhost),验证返回的JSON结果 - 访问
http://localhost/docs,确认API文档页面正常加载
6. 常见问题排查
- 如果出现500错误:查看
logs目录下的stdout日志,检查Python路径、依赖是否安装完整、端口是否被占用 - 权限问题:确保应用程序池的身份有访问应用目录和虚拟环境的读写权限
- HTTPS配置:在IIS中绑定SSL证书,无需修改Uvicorn的启动命令(IIS会自动处理SSL反向代理到Uvicorn的HTTP端口)
内容的提问来源于stack exchange,提问作者Manish Shegokar
相关产品推荐
相关产品推荐

