Slackware使用Nginx+Supervisor+Gunicorn部署Flask應用程序

本文簡單介紹如何在Slackware環境下部署Flask應用程序,爲了簡單,沒有使用uWSGI部署,而是簡單了較簡單的Gunicorn。其它Linux系統(好比Ubuntu和Centos)方法也是相似的。html

Slackware版本:14.1python

假設網站目錄爲:/tmp/wwwrootnginx

安裝基礎環境

安裝nginx

須要經過Slackwares.org來安裝:web

http://slackbuilds.org/repository/14.1/network/nginx/flask

安裝python setuptools

須要經過Slackwares.org來安裝:app

http://slackbuilds.org/repository/14.1/python/pysetuptools/網站

安裝pip

$ sudo easy_install pip
$ sudo pip install virtualenv

安裝supervisor

安裝ui

$ sudo pip install supervisor

建立一個Flask程序

建立虛擬環境code

$ mkdir /tmp/wwwroot/web1
$ cd /tmp/wwwroot/web1
$ virtualenv deps
$ source deps/bin/activate
$ pip install flask gunicorn

建立一個簡單的Flask程序server

$ cat > myapp.py << EOF
from flask import Flask
app = Flask(__name__)
@app.route("/")
def index():
    return "hello flask 01"
EOF

使用gunicorn執行Flask程序

最簡單的用法:

$ gunicorn -b 127.0.0.1:3721 myapp:app

如今訪問http://127.0.0.1:3721,應該能夠看到"hello flask 01"。

這裏3721端口只是一個演示。

整合

配置supervisor

建立配置文件:

$ cd /tmp/wwwroot
$ echo_supervisord_conf > supervisor.conf
$ cat >> supervisor.conf << EOF
[program:myapp]
;user=digwtx
command=/tmp/wwwroot/web1/deps/bin/gunicorn -b 127.0.0.1:3721 myapp:app
directory=/tmp/wwwroot/web1
process_name=%(program_name)s ; process_name expr (default %(program_name)s)
numprocs=1                    ; number of processes copies to start (def 1)
stopsignal=QUIT               ; signal used to kill process (default TERM)
redirect_stderr=true          ; redirect proc stderr to stdout (default false)
stdout_logfile=/tmp/myapp.log        ; stdout log path, NONE for none; default AUTO
EOF

啓動進程:

$ supervisord -c supervisor.conf

管理進程:

$ supervisorctl -c supervisor.conf

配置nginx:

主要是把請求轉交給gunicorn進行處理。

server {
    listen 8080;
    #默認請求
    location / {
    #請求轉向本機ip:3721
        proxy_pass http://127.0.0.1:3721; # 這裏是gunicorn監聽的地址
        proxy_redirect off;
        proxy_set_header Host $host:8080; #若是端口不是80要寫上
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

如今重啓nginx,訪問http://127.0.0.1:8080應該能夠看到"hello flask 01"。

自動啓動

那麼,若是想開機時自動啓動怎麼辦呢?或者說,若是機器重啓了,那WEB服務就斷了。

其實呢,也很簡單,只要在/etc/rc.d/rc.local中加入一句就能夠了:

supervisord -c /tmp/wwwroot/supervisor.conf

原文:http://digwtx.duapp.com/49.html

相關文章
相關標籤/搜索