Python web 部署:Flask+Nginx+gunicorn+supervisor

Falsk的建立这里再叙述,主要说的是部署方面的内容。

使用gunicorn部署Flask程序

安装gunicorn

pip install gunicorn
使用gunicorn启动flask
gunicorn -w4 -b0.0.0.0:8080 web:app
注:web为主程序的名字
此时,我们需要用 8080 的端口进行访问,原先的5000并没有启用。其中 gunicorn 的部署中,,-w 表示开启多少个 worker,-b 表示 gunicorn 开发的访问地址。
结束gunicorn 需要执行 pkill gunicorn,我们还可以使用一个进程管理工具来管理系统的进程----supervisor

安装supervisor

pip install supervisor
echo_supervisord_conf > supervisor.conf # 生成 supervisor 默认配置文件
vim supervisor.conf # 修改 supervisor 配置文件,添加 gunicorn 进程管理

在 supervisor.conf配置晚间底部添加

[program:web]
command=/home/zxjd/Web/venv/bin/gunicorn -w4 -b0.0.0.0:8080 web:app ; supervisor启动命令
directory=/home/zxjd/Web/                       ; 项目的文件夹路径
startsecs=0                                     ; 启动时间
stopwaitsecs=0                                  ; 终止等待时间
autostart=false                                 ; 是否自动启动
autorestart=false                               ; 是否自动重启
stdout_logfile=/home/zxjd/Web/log/gunicorn.log  ; log 日志
stderr_logfile=/home/zxjd/Web/log/gunicorn.err  ; 错误日志

supervisor的基本使用命令

supervisord -c supervisor.conf 通过配置文件启动
supervisorsupervisorctl -c supervisor.conf status 察看supervisor的状态
supervisorctl -c supervisor.conf reload 重新载入 配置文件
supervisorctl -c supervisor.conf start [all]|[appname] 启动指定/所有 supervisor管理的程序进程
supervisorctl -c supervisor.conf stop [all]|[appname] 关闭指定/所有 supervisor管理的程序进程

supervisor还可以使用web的管理界面,相关配置请看其他教程
使用supervisor启动gunicorn。
supervisord -c supervisor.conf

安装配置Nginx

sudo apt-get install nginx
可以采用supervisor管理Nginx进程
supervisor的配置如下:

[program:nginx]
command=/usr/sbin/nginx
startsecs=0
stopwaitsecs=0
autostart=false
autorestart=false
stdout_logfile=/home/zxjd/Web/log/nginx.log
stderr_logfile=/home/zxjd/Web/log/nginx.err

Nginx的配置:
配置文件为/etc/nginx/sites-avaliable/default

server {
    listen 80;
    server_name example.org; # 这是HOST机器的外部域名,用地址也行

    location / {
        proxy_pass http://127.0.0.1:8080; # 这里是指向 gunicorn host 的服务地址
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

  }

启动服务
supervisor -c supervisor.conf start all
根据主机的ip地址和8080端口其他客户端就可以访问了。

你可能感兴趣的:(Python web 部署:Flask+Nginx+gunicorn+supervisor)