一、编写一个项目
(资料图片仅供参考)
本项目是在虚拟环境下的:
先启动虚拟环境:source .venv/bin/activate。(创建虚拟环境自己去找)
项目用于演示,所以非常简单,
在虚拟环境中安装需要的第三方库:fastapi, uvicorn
main.py:
# coding=utf-8import uvicornfrom fastapi import FastAPIapp = 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 installgunicorn
编写配置文件,这里的配置文件必须未py的文件
gunicorn.py:
# gunicorn.py# 并行工作进程数workers = 1# 指定每个工作者的线程数threads = 2# 监听内网端口5000bind = "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 -cgunicorn.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=truestdout_syslog=truestdout_logfile=/home/iriot/python_dir/logsstdout_logfile_maxbytes=50MBstderr_syslog=truestderr_logfile=/home/iriot/python_dir/logsstderr_logfile_maxbytes=50MB
保存文件后执行更新操作:supervisorctl update
可以看到你的项目进程添加进去了
然后可以试着访问自己的项目了: