supervisor+gunicorn+uvicorn部署fastapi项目

一、编写一个项目

  本项目是在虚拟环境下的:

   先启动虚拟环境:source .venv/bin/activate。(创建虚拟环境自己去找)

    

 

    项目用于演示,所以非常简单,

    在虚拟环境中安装需要的第三方库:fastapi, uvicorn

    main.py:

    

# coding=utf-8

import uvicorn
from fastapi import FastAPI

app = FastAPI()


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

if __name__ == "__main__":
    uvicorn.run(app, host="0.0.0.0", port=8000)

    在这里先试着启动一下项目,确保没有问题

    然后我么继续

二、使用gunicorn运行项目(只支持Linux,不知win):

  在虚拟环境中安装gunicorn: pip install gunicorn

  编写配置文件,这里的配置文件必须未py的文件

  gunicorn.py:

  

# gunicorn.py
# 并行工作进程数
workers = 1
# 指定每个工作者的线程数
threads = 2
# 监听内网端口5000
bind = '0.0.0.0:8000'
# 设置守护进程,将进程交给supervisor管理
daemon = 'false'
# 工作模式协程
worker_class = 'uvicorn.workers.UvicornWorker'
# 设置最大并发量
worker_connections = 2000
# 设置进程文件目录
pidfile = '/var/run/gunicorn.pid'
# 设置访问日志和错误信息日志路径
accesslog = '/var/log/gunicorn_acess.log'
errorlog = '/var/log/gunicorn_error.log'
# 设置日志记录水平
loglevel = 'info'

  然后试着运行一下:

  注意用户权限,建议root用户,免得各种问题,我是ubuntu,坑,之前centos7就没有这么些问题

  gunicorn -c gunicorn.py main:app

  不出意外的话,这里是成功的。可以在你定义的log下进行查看

三、使用supervisor管理进程

  安装supervisor: Ubuntu: sudo apt install supervisord

  启动supervisor服务:sudo supervisord

  

 

 

   可以看到启动的时候一推提示:-c指定配置文件按,我不想指定,让他读取默认的配置文件,默认的配置文件中包含了conf.d下的所有配置

  所以我们的项目关于supervisor的配置会放在/etc/superv/conf.d目录下

  编写改项目的supervisor配置文件:

    进入supervisor的配置文件按下:/etc/supervisor/conf.d

    新建配置文件:testOneFastapi.conf

[program:testOneFast] # program固定格式后边的你根据自己项目自定义
directory=/home/iriot/python_dir/testOneChaose # 项目根路径
command=/home/iriot/python_dir/testOneChaose/.venv/bin/gunicorn -c gunicorn.py main:app  #注意一定是要从你的虚拟环境下运行gunicorn命令
autostart=true
stdout_syslog=true
stdout_logfile=/home/iriot/python_dir/logs
stdout_logfile_maxbytes=50MB
stderr_syslog=true
stderr_logfile=/home/iriot/python_dir/logs
stderr_logfile_maxbytes=50MB

  保存文件后执行更新操作:supervisorctl update

  

 

   可以看到你的项目进程添加进去了

   然后可以试着访问自己的项目了:

  

 

 

 

 

 

   

posted @ 2022-12-20 16:17  飞羽小鱼仔  阅读(1805)  评论(0编辑  收藏  举报