python学习笔记:部署django代码到gunicorn【ubutnu18.04】(2)

本文介绍了如何将Django项目部署到gunicorn,包括直接运行和通过配置文件启动项目。在直接运行时,gunicorn默认监听本地8000端口。配置文件启动能更好地管理进程,配置包括进程设置、网络连接、日志管理和用户权限等。同时,还需在Django的settings.py中添加gunicorn应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    前文中,我们只是简单地用gunicorn命令行来启动django代码。如果需要进行一些复杂的配置,给命令加参数,显然不是一个理想的方法,为此,我们可以把这些配置参数同一放到一个文件,然后gunicorn启动时,调用该配置文件即可。

 

1. 直接运行启动django项目

    切换到django项目根目录,

    执行下列命令,启动django项目,

gunicorn myproject.wsgi

    启动后状态如下,

    可以看到,直接启动项目后,gunicorn默认侦听 127.0.0.1:8000端口,采用 sync 模式,而且是在前台运行中,如果关闭终端,gunicorn也会关闭。

    当然了,可以在启动时加入参数配置,来改变默认行为,不过如果配置的参数过多,很容易出错,因此一般把这些配置放到一起,形成一个配置文件。

 

2. 带配置文件启动django项目

    首先,我们按住【Ctrl + C】,关掉刚刚启动的gunicorn,执行下列命令来,带配置文件启动gunicorn

sudo /usr/local/bin/gunicorn --chdir /var/www/certificate_system/ myproject.wsgi -c /etc/gunicorn/gunicorn.conf


可以简化为【需要切换到项目的根路径,并且给gunicorn命令配置了环境变量】

sudo gunicorn myproject.wsgi -c /etc/gunicorn/gunicorn.conf

    启动结果如下

 

    可以看到,执行完上述命令后,控制台没有返回任何消息,不过不同的是,gunicorn没有一直占据着终端,在命令执行完毕后,它释放了终端。
 

2.1 gunicorn配置文件内容

    从上图可以看到,我们新建了一个gunicorn的配置文件【/etc/gunicorn/gunicorn.conf】,注意它所属的用户/组以及读写权限。

    配置文件内容如下

daemon = "False"
daemon = "True"
workers = 3
threads = 2
worker_class = "sync"
pidfile = '/run/gunicorn.pid'

bind = "0.0.0.0:8000"
worker_connections = 1024
backlog = 2048

accesslog = "/var/log/gunicorn/access.log"
access_log_format = '%(t)s %(p)s %(h)s "%(r)s" %(s)s %(L)s %(b)s %(f)s" "%(a)s"'
errorlog = "/var/log/gunicorn/error.log"
loglevel = "debug"

user='root'

    该配置,我人为地化了四个部分,第一部分是进程相关,第二部分是网络连接相关,第三部分是日志相关,第四部分是用户相关。

    第一部分,解释如下:

daemon:
    -- 配置gunicorn是在前台运行,还是作为daemon,在后台运行
    -- True: 在后台运行,不占用终端; False: 在前台运行,会占用终端

workers:
    -- gunicorn是pre-work模型,也就是运行前由master进程产生多个worker进程,
    -- 这里配置worker进程的数量

threads:
    -- 配置线程数量

worker_class:
    -- gunicorn的网络请求是有worker进程处理,而处理网络请求的方式有很多种
    -- 在本文中,配置称sync,当然还有其他方式

pidfile:
    -- gunicorn进程ID所在的文件,在gunicorn启动时,自动创建

    第二部分,解释如下:

bind:
    -- gunicorn绑定的socket
    -- 可以是本文中的tcp socket,【0.0.0.0:8000】,0.0.0.0:代表接收服务器所有网卡的数据
    -- 也可以是unix socket,比如【unix://path/to/some_file.sock】

worker_connections:
    -- 单个worker进程处理网络最大请求数

backlog:
    -- tcp socket可以接收最大网络请求数

    第三部分,解释如下:

accesslog:
    -- 访问日志文件的路径,该文件的权限需要修改,否则gunicorn进程无法访问

access_log_format:
    -- 访问日志文件的日志格式

errorlog:
    -- 错误日志文件的路径,该文件的权限同样需要修改,否则gunicorn进程无法访问

loglevel:
    -- 错误日志的级别,
    -- 可以是debug, info, warning, error, critical等五种

    日志文件的权限,所属的用户和组,如下

wenca@wenca-ubuntu:/var/www/certificate_system/myproject$ ll /var/log/gunicorn/
total 116
drwxr-xr-x  2 root     adm     4096 Nov 29 02:28 ./
drwxrwxr-x 13 root     syslog  4096 Nov 30 00:06 ../
-rw-rw-r--  1 www-data adm      534 Nov 30 03:38 access.log
-rw-rw-r--  1 www-data adm    98922 Nov 30 03:55 error.log

    第四部分,解释如下:

user:
    -- 以什么用户身份来运行gunicorn进程,
    -- 该用户可以读取数据文件、配置文件,读写日志文件、进程ID文件

 

2.2 修改django配置文件

    修改【 ./myproject/settings.py】文件,在【INSTALLED_APPS】部分加入【gunicorn】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值