fastapi部署到服务器

fastapi部署到服务器

进入到虚拟环境当中,conda激活py特定环境

用 Gunicorn 正式跑(重点来了)

同一行就可以不用写,不同行后面就一个\

nohup gunicorn app.main:app \
-k uvicorn.workers.UvicornWorker \
-w 4 \
-b 0.0.0.0:8000 \
  • gunicorn:负责管进程,不让程序死
  • main:app:main.py 里的 app = FastAPI()
fastapi-project/
├── app/
│ ├── __init__.py ← 必须有
│ └── main.py
  • -k uvicorn.workers.UvicornWorker:让 FastAPI 能用异步
  • -w 4:同时干活的进程有 4 个
  • -b 127.0.0.1:8000:只在服务器自己身上开 8000 端口,这里是公网
    • nohup → 让进程在你退出 SSH 后仍继续运行
    • -b 0.0.0.0:8000 → 绑定公网 IP,外网可访问

一般是先直接执行看看有没有问题,没问题在加nohup

gunicorn app.main:app \
-k uvicorn.workers.UvicornWorker \
-w 4 \
-b 0.0.0.0:8000 \

使用清华原下载

pip install fastapi -i https://pypi.tuna.tsinghua.edu.cn/simple

还需要下载一个gunicorn

pip install gunicorn
(fastapi) root@VM-0-9-ubuntu:/home/ubuntu/fastapi/fastapi-project# nohup gunicorn app.main:app   -k uvicorn.workers.UvicornWorker   -w 4   -b 0.0.0.0:8000   --access-logfile /home/ubuntu/fastapi/fastapi-project/logs/access.log   --error-logfile /home/ubuntu/fastapi/fastapi-project/logs/error.log &
[1] 460734
(fastapi) root@VM-0-9-ubuntu:/home/ubuntu/fastapi/fastapi-project# nohup: ignoring input and appending output to 'nohup.out'

已经跑起来了

查看端口

ss -lntp | grep 8000

查看进程

ps aux | grep gunicorn

这里写了四个分支所以有五个进程一个总的,四个分支

查看总的和分的

pstree -p | grep gunicorn

停止进程

kill -9 460734

总结一下,在服务器上面运行fastapi

1、先配置好python环境,下载conda,创建虚拟环境,下载好依赖,conda activate到虚拟环境当中

2、使用gunicorn来启动fastapi看看能不能运行,有没有报错,

gunicorn app.main:app -k uvicorn.workers.UvicornWorker -w 4 -b 0.0.0.0:8000

没有报错的话在添加nohup后台运行.这里要注意的是

nohup gunicorn app.main:app -k uvicorn.workers.UvicornWorker -w 4 -b 0.0.0.0:8000 &

app.main:app的位置,cd到fastapi-project,执行上面命令就可以了

fastapi-project/
├── app/
│ ├── __init__.py ← 必须有
│ └── main.py
  • 左边 app.main → Python 模块
  • 右边 app → 模块里 FastAPI 实例
左边对应的项目的启动文件的位置,
右边默认app因为创建fastapi时有app = FastAPI(
title=settings.APP_NAME,
version=settings.APP_VERSION,
description="一个简单的FastAPI项目示例",
)

3、结束的话就查看进程在kill掉就好了.