win 环境部署 FastAPI 应用为服务

0、环境

1)win 10/11 或 win server

2)python 3.11.9

3)nssm 2.24

1、导出项目依赖

1)默认使用 poetry 进行依赖管理。执行 poetry export -f requirements.txt --without-hashes > requirements.txt

requirements.txt 文件第一行可更改安装源,首选 https://mirrors.aliyun.com/pypi/simple/

2、安装依赖

1)在服务端自定义安装 python 3.11.9,路径尽量简单,便于查找选择;

2)执行 pip install -r requirements.txt,安装依赖到全局

3、使用 nssm

官网下载地址:https://nssm.cc/download

1)使用 cmd 或 powershell 进入 nssm\win64 目录

2)执行配置。cmd 执行nssm install;powershell 执行 .\nssm install

3)在弹出对话框 Application 选项卡依次配置以下内容后点击 Install service

  • Path,python 执行器,选择安装的 python 3.11.9 路径,示例路径:C:\Python311\python.exe
  • Startup directory,项目根目录,示例:C:\test-deploy-fastapi\
  • Arguments,执行参数,填入程序入口文件名,示例:main.py
  • Service name,服务名称,自定义:FastApi

4)启动服务即可

4、其他

该项目的 main.py 文件参考如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import uvicorn
from fastapi import FastAPI


app = FastAPI()


@app.get("/")
async def root():
return {"message": "Hello World"}


@app.get("/items/{item_id}")
async def read_item(item_id: int):
return {"item_id": item_id}


if __name__ == "__main__":
config = uvicorn.Config('main:app', host='0.0.0.0', port=8000)
server = uvicorn.Server(config)
server.run()