紅客VIP(http://www.hongkevip.com):linux下使用nginx + uWSGI運(yùn)行flask程序
flask通常是做小應(yīng)用程序的,我們下文來介紹的是在linux下使用nginx + uWSGI運(yùn)行flask程序了,有舉的可以進(jìn)入看看。
如果你自己Google過,你可能會(huì)發(fā)現(xiàn)一個(gè)關(guān)鍵字uWSGI,他就是本篇的主角。
名詞解釋
Web服務(wù)器網(wǎng)關(guān)接口(Python Web Server Gateway Interface,縮寫為WSGI。
uwsgi與WSGI一樣,是一個(gè)通信協(xié)議。
uWSGI,一個(gè)實(shí)現(xiàn)了WSGI,uwsgi,http等協(xié)議的服務(wù)器,與nginx在一個(gè)層次。
鑒于國內(nèi)的一些教程都寫成翔了,那老高就趕緊記錄分享一下。
. 這個(gè)教程不限定于flask、web.py、django同樣適用。
I. 安裝環(huán)境
Centos x64
python 2.6
II. 安裝uWSGI
pip install uWSGI
III. 安裝配置virtualenv
一般我們會(huì)用virtualenv配置項(xiàng)目的運(yùn)行環(huán)境
pip install virtualenv
# 假設(shè) ~/app_dir 為你的項(xiàng)目目錄
mkdir ~/app_dir && cd ~/app_dir
# 最簡單的flask示例
vi hello_world.py
# add
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World!"
if __name__ == "__main__":
app.run('0.0.0.0', 8080)
--------:wq
virtualenv venv
# 激活virtualenv
. venv/bin/activate
#pip install flask qrcode image
pip install flask
# 退出virtualenv
deactivate
IV. 測(cè)試運(yùn)行
項(xiàng)目與運(yùn)行環(huán)境已經(jīng)準(zhǔn)備完畢,我們先用uWSGI現(xiàn)在試試運(yùn)行項(xiàng)目。
# 激活virtualenv
. venv/bin/activate
python hello_world.py
# 現(xiàn)在訪問你的ip:8080試試看
V. nginx配置
這里我們使用http反向代理
vi hello_world.conf
server{
listen 80;
location / {
proxy_pass http://127.0.0.1:9090;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Referer http://$host;
}
}
VI. 運(yùn)行uWSGI服務(wù)器
uwsgi --http-socket 127.0.0.1:9090 --wsgi-file /root/app_dir/hello_world.py --callable app -H /root/app_dir/venv
或
uwsgi --http :9090 --wsgi-file /root/app_dir/hello_world.py --callable app -H /root/app_dir/venv
以上命令我們使用http運(yùn)行uWSGI服務(wù)器,綁定端口9090,用絕對(duì)路徑指定了入口文件hello_world.py,并使用-H參數(shù)指定virtualenv的地址。
當(dāng)然,運(yùn)行uWSGI服務(wù)器的方式還有很多種,,比如我們可以以配置文件的形式啟動(dòng),再比如我們還可以使用sock的形式運(yùn)行,當(dāng)然相應(yīng)的nginx反響代理也需要同時(shí)修改。
聯(lián)系客服