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'
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容