Gunicorn+Supervisor+Nginx部署Python Web应用

目录

VPS搬家了,重装一堆服务还有点麻烦,顺便记录一下部署Python Web的过程。

Gunicorn

Gunicorn是Python下支持WSGI的Web服务器,平常用到的Django、Flask这些Web框架也是自带服务器的,由于性能有限一般只在测试环境用,而uWSGI/Gunicorn 都是专门的服务器。

之前用uWSGI配置好麻烦,这次就用Gunicorn。

在Web应用的虚拟环境中安装 pip install gunicorn ,测试一下是否能启动 gunicorn app:app -w 3 -b localhost:5000 ,能够正常启动便可以了,详细参数见 文档 ,这里只设置了3个工作进程。

Supervisor

Supervisor是Python下的Linux进程管理工具,这样Web应用就可以作为服务自动启动,也方便管理。

安装 yum install supervisor ,启动服务 service supervisord start

添加配置文件 vim /etc/supervisor.d/daily.ini


[program:daily]
directory=/root/python/daily
command=/root/python/daily/env/bin/gunicorn app:app -w 3 -b localhost:5000
autostart=true
autorestart=true
stderr_logfile=/var/log/daily/daily.err.log
stdout_logfile=/var/log/daily/daily.out.log

加载配置 supervisorctl reread

重启服务 service supervisord restart

这样就可以了,如果之后修改代码,通过 supervisorctl start/restart/stop daily 可以轻松控制了。

Nginx

整合到Nginx里面就很简单了,反代 127.0.0.1:5000 ,就可以了,Gunicorn最好绑定在本机地址上或者设置防火墙。

server {
    ...
    ...
    location /daily {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_set_header SCRIPT_NAME /daily;
        proxy_pass http://127.0.0.1:5000;
    }

}