Centos+Gunicorn+Nginx+Supervisor部署Flask

Python虚拟环境安装(python3.5)

1.python3.5有自带的pyvenv,我们可以很轻松的创建一个python3.5的虚拟环境

pyvenv py35

2.激活虚拟环境的python

source py35/bin/activate

3.激活成功后,可以在控制台看到变化

(py35) [limingming@limingming ~]$

安装Flask

pip install flask

安装Gunicorn

pip install genicurn

安装Nginx

yum install nginx

写一个最简单的Flask应用(HelloWorld)

from flask import Flask

app = Flask(__name__)

@app.route('/')

def hello_world():

    return 'Hello World'

使用Gunicorn运行

nohup gunicorn -w 1 -b 127.0.0.1:8080 /home/limingming/boom/boom:app &

说明:使用nohup的原因是为了让进程在后台运行

测试:curl 'localhost:8080'

使用Supervisor管理Gunicorn进程

pip install supervisor

说明
系统会提供supervisor只能使用python2.4或之后的版本,但是不能使用python

所以我们切换回系统自带的python2.7,然后进行安装

在Supervisor中配置Gunicorn进行

[program:helloworld]

command=/home/limingming/py35/bin/python3.5 /home/limingming/py3env/bin/gunicorn -w 1 -b 127.0.0.1:8080 /home/limingming/boom/boom:app
process_name=helloworld
mask=022
autorestart=true
startsecs=1
stopwaitsecs=1
exitcodes=0,2
redirect_stderr=false
numprocs_start=1
numprocs=1
user=limingming
autostart=true
autorestart=true
startretries=10
stopsignal=KILL
stopasgroup=true
killasgroup=true
stdout_logfile=/home/limingming/log/accesslog/supervisord.helloworld.stdout.log
stdout_logfile_maxbytes=100MB
stdout_logfile_backups=2
stderr_logfile=/home/limingming/log/errorlog/supervisord.helloworld.stderr.log
stderr_logfile_maxbytes=100MB
stderr_logfile_backups=2

9.启动Supervisor进程

supervisord

进入Supervisor的控制台,查看进程信息

supervisorctl

测试Flask应用是否已经可以访问

curl 'localhost:8080'

在Nginx中配置Gunicorn(反向代理)

只需要在Nginx中配置好一个server

server {
        listen 80;
        server_name
            //填你的域名
        ;
        location / {
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Scheme $scheme;
                proxy_redirect off;
                proxy_pass 127.0.0.1:8080
        }
}

测试nginx配置文件是否没有错误

nginx -t

重启nginx进程

sudo service nginx restart

测试80端口是否可以访问到flask

curl 'localhost'

你可能感兴趣的:(Centos+Gunicorn+Nginx+Supervisor部署Flask)