Gunicorn 是一个 Python 的 WSGI HTTP 服务器。具有实现简单,轻量级,高性能等特点。更多介绍内容参考官网,这里介绍几个常用参数。
安装
pip3 install gunicorn
通过输入gunicorn -v查看版本。
最简洁的启动。首先进入到项目目录,例如django项目和manage.py同级目录。
gunicorn <your_project>.wsgi:application --bind 127.0.0.1:8000
其中gunicorn为启动gunicorn服务器。<your_project>则为你的项目名称如faloo_hero。如
这样启动只有一个进程,开启多进程的参数为–workers=
gunicorn --bind 0.0.0.0:8000 faloo_hero.wsgi:application --workers=4
如上命令就启动了4个并行进程。线上环境通常推荐进程数为cpu数量*2+1 。
上述启动仍然有明显的问题,就是会占用一个终端会话。导致没法执行其他命令,除非用Ctrl+C退出进程。改为为守护进程加上参数nohup &
nohup gunicorn --bind 0.0.0.0:8000 faloo_hero.wsgi:application --workers=4 &
如上命令执行完后我们仍然可以继续在这个终端执行其他命令。
``上述启动之后缺乏日志跟踪,加上如下参数
nohup gunicorn --bind 0.0.0.0:8000 faloo_hero.wsgi:application --log-level=info --workers=4>run.log 2>&1 &
其中–log-level=info为开启日志,通常生产环境为info级别,调试为debug级别。run.log 2>&1 是将标准输出重定向到 run.log 文件中
–log-level 是 设置日志级别的参数,具有以下可选值:
debug:最详细的日志记录级别,通常仅在开发和调试阶段使用。
info:普通信息记录级别,通常用于生产环境中的正常操作和事件记录。
warning:警告记录级别,表示一些不寻常但不是错误的情况。
error:错误记录级别,表示出现错误或异常。
critical:严重错误记录级别,表示可能导致应用程序崩溃的问题。
以上命令会在每次启动的时候重写run.log,如果我们想要追加的方式则只需要在将4后面的>参数改为>>。
nohup gunicorn --bind 0.0.0.0:8000 faloo_hero.wsgi:application --log-level=info --workers=4 >> run.log 2>&1 &
效果如下图
可以查看一下我们的gunicorn进程情况
其中,一个 Gunicorn 的主进程, 4 个进程是 Gunicorn 的 worker 进程。
使用cat run.log查看日志:
通过nginx代理或者对外开放该端口。打开网站查看运行情况
还有更多参数做更多的事情,读者可自行尝试。可参考nginx配置详解