本文介绍: 由于是第一次部署,在不断的摸索试错的过程中终于搞定了,特此记录下。线上服务器如果部署多个网站使用多个域名匹配,肯定会需要使用nginx之类的软件uvicorn可以应用跑起来,但是应用如果因为一些原因挂了,或者出现了异常需要一个daemon进程监控uvicorn是不能胜任的我们希望线上部署时候应用是在后台运行,不需要控制台输出

前言

由于是第一次部署,在不断的摸索试错的过程中终于搞定了,特此记录下。


博主环境


开始部署

pip install gunicorn

在项目跟目录新建gunicorn.py文件

debug = False
daemon = False
bind = '0.0.0.0:8003'  # 绑定ip端口号
backlog = 512       # 监听队列
timeout = 180      # 超时
# worker_class = 'gevent' #使用gevent模式,还可以使用sync 模式默认的是sync模式
worker_class = 'uvicorn.workers.UvicornWorker'

workers = 2    # 进程数
threads = 2 #指定每个进程开启线程
loglevel = 'debug'  # 日志级别这个日志级别指的是错误日志的级别,而访问日志的级别无法设置
access_log_format = '%(t)s %(p)s %(h)s "%(r)s" %(s)s %(L)s %(b)s %(f)s" "%(a)s"'    # 设置gunicorn访问日志格式错误日志无法设置
chdir = '/project'

# pidfile = None

"""
其每个选项的含义如下:
h  远程地址
l  '-'
u  当前为“-”,或者版本中的用户名
t  请求日期
r  状态栏 (e.g. ``GET / HTTP/1.1``)
s  状态
b  响应长度'-'
f  referer
a  user agent
T  请求时间(秒)
D  请求时间(微秒)
L  请求时间十进制秒)
p  进程ID
"""
accesslog = "/project/log/gunicorn_access.log"      # 访问日志文件
errorlog = "/project/log/gunicorn_error.log"        # 错误日志文件

在gunicorn安装成功后使用下面的命令测试是否可以正常启动

gunicorn main:app --workers 2 --worker-class uvicorn.workers.UvicornWorker --bind 0.0.0.0:8000

安装supervisor

apt-get -y install supervisor

安装完成后会出现一个文件夹/etc/supervisor,下面包含这些内容

supervisord.conf	# supervisord配置文件
conf.d	# 文件夹

修改supervisord的配置文件

vim /etc/supervisor/supervisord.cong

配置文件模板

[unix_http_server]
file=/var/run/supervisor.sock   ; the path to the socket file

[supervisord]
logfile=/project/log/supervisor.log 日志文件路径 ; main log file; default $CWD/supervisord.log
logfile_maxbytes=50MB        ; max main logfile bytes b4 rotation; default 50MB
logfile_backups=10           ; # of main logfile backups; 0 means none, default 10
loglevel=info                ; log level; default info; others: debug,warn,trace
pidfile=/var/run/supervisord.pid ; supervisord pidfile; default supervisord.pid
nodaemon=false               ; start in foreground if true; default false
silent=false                 ; no logs to stdout if true; default false
minfds=1024                  ; min. avail startup file descriptors; default 1024
minprocs=200                 ; min. avail process descriptors;default 200

[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[supervisorctl]
serverurl=unix:///var/run/supervisor.sock ; use a unix:// URL  for a unix socket

[include]
files=conf.d/*.conf

# 配置可视化管理界面,注意一定要先设置端口映射,因为我们在容器中所以portip必须为0.0.0.0
[inet_http_server]
port = 0.0.0.0:443
username = name
password = 123456

在conf.d文件夹中新建一个文件项目名称.conf

touch /etc/supervisor/conf.d/gunicorn.conf

配置文件如下

[program:gunicorn]  # 这里的gunicorn就是告诉supervisor我们的应用名称叫做什么
process_name=%(program_name)s
command=gunicorn -c /project/gunicorn.py main:app
# 如果上面的命令不起作用可以使用下面的
# gunicorn main:app --workers 2 --worker-class uvicorn.workers.UvicornWorker --bind 0.0.0.0:8000
directory=/项目绝对路径
user=root
autostart=true
autorestart=true

至此配置全部完成

以下是supervisor的操作命令

# 启动supervisor
service supervisor start 
# 重新加载配置文件
supervisorctl reread

# 以下命令是管理应用程序
supervisorctl stop gunicorn
supervisorctl restart gunicorn
supervisorctl status

可以使用可视化面板操作访问宿主机的IP和配置文件中的端口号

在这里插入图片描述

到现在部署完成了,以后我会研究下使用compose编配容器

原文地址:https://blog.csdn.net/weixin_45457042/article/details/129213133

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_33304.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注