Gunicorn

flask、django在Gunicorn下的应用

Posted by TuoX on July 17, 2017

发现这次又差不多隔了半个月才来写文章,生活当中总是会有一些事情需要我们去关心,去解决。保持一颗真诚的心才是解决问题的关键所在。


什么是Gunicorn呢,借用官网的一个说明。

Gunicorn 绿色独角兽 是一个Python WSGI UNIX的HTTP服务器。这是一个pre-fork worker的模型,从Ruby的独角兽(Unicorn )项目移植。该Gunicorn服务器大致与各种Web框架兼容,只需非常简单的执行,轻量级的资源消耗,以及相当迅速。

其实生产环境我们一般有两个管理工具来进行多进程管理,一个是Gunicorn,一个是uWSGI。我比较喜欢简单优雅的工具,所以uWSGI直接被我pass,配置麻烦多了(个人认为)。

Gunicorn的安装

pip install gunicorn

Gunicorn的命令

这里就简单的说明下gunicorn的命令。
命令分为两大块 [OPTIONS]、[APP_MODULE]。分别表示命令参数与app的参数。
1.OPTIONS
    -w 4 表示启动四个进程
    -b 127.0.0.1:5000 表示绑定的ip地址为127.0.0.1 端口号为5000
    --reload 表示当文件有发生变动的时候进行重启进程(生产环境建议不要这样子配置,默认false)。
    更多请输入 gunicorn --help查看。
2.APP_MODULE
    这个看名字就知道了,我们app所在的文件与模块。

Flask下的配置

1.启动程序的配置

    if __name__ == '__main__':
        from werkzeug.contrib.fixers import ProxyFix
        app.wsgi_app = ProxyFix(app.wsgi_app)
        app.run(debug=False)

    意思是启用wsgi来托管程序

2.进行程序的配置(这里使用supervisor来管理Gunicorn)

    首先,创建配置文件

    vi /etc/supervisor/conf.d/***.conf

    然后,填入我们的配置

    [program:****]                                  # 程序的名称
    directory = *****                               # 你的项目文件目录
    command=gunicorn -w 4 -b 0.0.0.0:7000 app:app   # 运行的命令 app.py中的app模块(启动4个进程并且ip端口为0.0.0.0:7000)
    user=root                                       # 运行的用户

    最后,输入命令

    supervisorctl update

    这个命令的意思是更新下supervisor的配置,而且还会自动启动我们改变过的程序,甚至新增的也会启动。

Django下的配置

Django下的配置方法很多种,我这里介绍一种最简单的。

1.创建配置文件

    vi /etc/supervisor/conf.d/***.conf

2.填写配置文件
    
    [program:***]                                                   # 程序的名称
    directory = ***                                                 # 你的项目文件目录
    command=gunicorn -w 4 -b 0.0.0.0:7070 ***.wsgi:application      # 运行的命令 ***表示django项目名称(每个django项目,会在根目录下创建一个跟项目名称一样名字的文件夹)
    user=root                                                       # 运行的用户

3.启动程序
    supervisorctl update

一些说明

这里面没有说到nginx的反向代理怎么设置,因为前面的文章说过了,所以这里不再说明,不懂的小伙伴可以看下之前的文章。

The End

最后,还是那句话,欢迎小伙伴们找我讨论交流。