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
可以看到你的项目进程添加进去了
然后可以试着访问自己的项目了:
supervisor+gunicorn+uvicorn部署fastapi项目的更多相关文章
- Flask+Nginx+Supervisor+Gunicorn+HTTPS部署教程(CentOs)
写在前面 之前的文章中,我们详细讲述了怎样安装 Nginx,Python,Supervisor,Gunicorn,HTTPS.经本人多次测试是完全可以跑通的,那么本篇将介绍怎样将这些组合起来运行一个H ...
- CentOS 下部署Nginx+Gunicorn+Supervisor部署Flask项目
原本之前有一部分东西是在Windows Server,但是由于Gunicorn不支持Windows部署起来颇为麻烦.最近转战CentOS,折腾一段时间,终于简单部署成功.CentOS新手,作为一个总结 ...
- django+nginx+supervisor+gunicorn+gevent 网站部署
django+nginx+supervisor+gunicorn+gevent 网站部署 django,nginx,supervisor,gunicorn,gevent这几个都是在本领域大名鼎鼎的软件 ...
- 记基于docker+gunicorn部署sanic项目遇到的很多很多坑
前言: 最近有个项目需要上线,是python中sanic网络异步框架写的,并且要求使用docker+nginx来部署项目实现负载均衡,于是乎百度了sanic项目部署,基本上都是基于docker+gun ...
- Nginx 和 Gunicorn 部署 Django项目
目录 Nginx 和 Gunicorn 部署 Django项目 配置Nginx 安装配置Gunicorn 通过命令行直接启动 Gunicorn 与 uwsgi 的区别,用哪个好呢 Gunicorn u ...
- nginx+gunicorn部署Django项目
实际采用的nginx.conf文件内容: server { charset utf-8; listen 80; server_name ip; access_log /webapps/project/ ...
- docker中部署django项目~~Dockfile方式和compose方式
1. 背景: 本机win10上,后端django框架代码与前端vue框架代码联调通过. 2. 目的: 在centos7系统服务器上使用docker容器部署该项目. 3. 方案一:仅使用基 ...
- Django + Gunicorn + Nginx 部署 Ubuntu 服务器
Django + Gunicorn + Nginx 部署服务器 获取腾讯云 root权限 本人的服务器使用的是腾讯云,腾讯云默认是没有开放 root 用户的,我们来创建 root 用户. 创建 roo ...
- 使用Nginx+uWSGI部署Django项目
1.linux安装python3环境 参考链接:https://www.cnblogs.com/zzqit/p/10087680.html 2.安装uwsgi pip3 install uwsgi l ...
- MyEclipse部署web项目到Tomcat出现An internal error occurred during: "Launching on Tomcat 7.x"的问题
如果出现了上述的错误按照如下的3个步骤解决:1.首先关闭MyEclipse工作空间.2.然后删除工作空间下的文件."MyEclipse10\workspace.metadata.plugin ...
随机推荐
- springcloud04 Ribbbon
Ribbbon虽然现在已经进入维护模式了,但是使用的还是很多的. 1.官网 https://github.com/Netflix/ribbon/wiki/Getting-Started 2.Ribbo ...
- jdbc访问KingbaseES数据库SocketTimeoutException Read timed out
jdbc访问KingbaseES数据库发生异常:SocketTimeoutException Read timed out 一.异常现象: 应用显示ERROR信息: Caused By: java.n ...
- 学习Java Day30
今天回顾了一下整章对象与类,对自己进行了查漏补缺,依旧存在许多知识点的掌握不充分,类的使用的不熟练,同志仍需努力,革命尚未成功.
- 欧拉函数和遗忘自动机 SX 的故逝
欧拉函数 \(\varphi(n)\) 定义为小于 \(n\) 与 \(n\) 互质的数字,炒个例子,\(\varphi(10) = 4\),因为 \(1,3,7,9\) 与 \(10\) 互质. 怎 ...
- layui 父子弹窗数据交互(包含子弹窗自己关闭并给父弹窗数据填充)
//父级弹窗 function showAlertOrg() { layui.use('layer', function () { var body; var index = layer.open({ ...
- 基于C++的OpenGL 01 之Hello Triangle
1. 引言 本文基于C++语言,描述OpenGL的绘制流程,这里描述的是OpenGL的核心模式(Core-profile) 本文基于Ubuntu 20.04.3 LTS系统,使用CMake构建程序,O ...
- PostgreSQL数据库运行日志
PostgreSQL运行日志可以实现日志输出记录,默认是没有启动记录.这个日志一般是记录服务器与DB的状态,比如各种Error信息,定位慢查询SQL,数据库的启动关闭信息,发生checkpoint过于 ...
- Django中admin的一些知识点
Django中的Admin站点管理: 内容发布的部分由网站的管理员负责,包括查看.添加.修改.删除数据: Django项目中默认启用Admin管理站点:列表页选项, 编辑页选项, 重写模板. #准备工 ...
- Anaconda 使用教程
Anaconda介绍 Anaconda指的是一个开源的Python发行版本,其包含了conda.Python等180多个科学包及其依赖项. 因为包含了大量的科学包,Anaconda 的下载文件比较大( ...
- err has no member, has initializer but incomplete type
原因:没有头文件