uwsgi+nginx+flask 部署实践篇

uWsgi 单独提供http server
uWsgi + nginx 单应用部署
uWsgi + nginx 通过emperor 模式实现多应用部署

简单flask 应用:
脚本目录:/ home / centos / my_project / flaskapp.py:
注意这里的app2

from flask import Flask

app2 = Flask(__name__)

@app2.route('/app/')
def index():
    return "<span style='color:red'>I am app </span>"

if __name__ == "__main__":
    app2.run(host="0.0.0.0", port=12345)

uWsgi 自身就能提供http server

配置文件目录:home / centos / my_project / http_uwsgi.ini:

[uwsgi]
http = :8088    
master = true
porcesses = 4
threads = 2
chdir = /home/centos/my_project     # chdir 将工作目录移动到chdir指向的目录
wsgi-file = flaskapp.py   # 或者使用  module = myflaskapp  
callable = app2   # wsgi app 应用中application的名称,如flaskapp.py中定义的 app (Flask(__name__))

uWsgi + nginx + flask 单应用部署
nginx 提供http server , nginx 通过uwsgi协议将请求转发给uWsgi, uWsgi 通过WSGI协议 与 wsgi app 交互,并将请求结果返回给nginx ,nginx 返回给客户端
uWsgi配置:

[uwsgi]
socket = 127.0.0.1:3031    
master = true
porcesses = 4
threads = 2
chdir = /home/centos/my_project     # chdir 将工作目录移动到chdir指向的目录
wsgi-file = flaskapp.py   # 或者使用  module = myflaskapp  
callable = app2   # wsgi app 应用中application的名称,如flaskapp.py中定义的 app (Flask(__name__))

nginx配置:

user  centos;
worker_processes  1;

events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-strealias
	   listen		80;
	   server_name     172.16.xx.xx;
	   location / {
            include  uwsgi_params;
            uwsgi_pass  127.0.0.1:3031;
	}
			  
    }
}

uwsgi 使用emperor模式 部署多个python应用

创建四个flask应用

# / home / centos / my_project / myflaskapp1.py:
from flask import Flask
app = Flask(__name__)
@app.route('/app/')
def index():
    return "<span style='color:red'>I am app 1</span>"
if __name__ == "__main__":
    app.run(host="0.0.0.0", port=12345)


# / home / centos / my_project / myflaskapp2.py:
from flask import Flask
app = Flask(__name__)
@app.route('/app/')
def index():
    return "<span style='color:red'>I am app 2</span>"
if __name__ == "__main__":
    app.run(host="0.0.0.0", port=12345)


# / home / centos / my_project / myflaskapp3.py:
from flask import Flask
app = Flask(__name__)
@app.route('/app/')
def index():
    return "<span style='color:red'>I am app 3</span>"
if __name__ == "__main__":
    app.run(host="0.0.0.0", port=12345)


# / home / centos / my_project / myflaskapp4.py:
from flask import Flask
app = Flask(__name__)
@app.route('/app/')
def index():
    return "<span style='color:red'>I am app 4</span>"
if __name__ == "__main__":
    app.run(host="0.0.0.0", port=12345)

创建4个.ini 文件

# home / centos / my_project / vassals / 80001.ini
[uwsgi]
socket = 127.0.0.1:8001
wsgi-file = myflaskapp1.py
master = true
callable = app

# home / centos / my_project / vassals / 8002.ini
[uwsgi]
socket = 127.0.0.1:8002
wsgi-file = myflaskapp2.py
master = true
callable = app

# home / centos / my_project / vassals / 8003.ini
[uwsgi]
socket = 127.0.0.1:8003
wsgi-file = myflaskapp3.py
master = true
callable = app

# home / centos / my_project / vassals / 8004.ini
[uwsgi]
socket = 127.0.0.1:8004
wsgi-file = myflaskapp4.py
master = true
callable = app

nginx 配置里同样需要4个server

user  centos;
worker_processes  1;

events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    access_log  /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;
    sendfile        on;
    keepalive_timeout  65;
    server {
	   listen		8091;
	   server_name     172.16.xx.xx;
	   location / {
            include  uwsgi_params;
            uwsgi_pass  127.0.0.1:8001;
	}		  
    }

    server {
       listen       8092;
       server_name     172.16.xx.xx;
       location / {
            include  uwsgi_params;
            uwsgi_pass  127.0.0.1:8002;
    }      
    }

    server {
       listen       8093;
       server_name     172.16.xx.xx;
       location / {
            include  uwsgi_params;
            uwsgi_pass  127.0.0.1:8003;
    }         
  	}

    server {
       listen       8094;
       server_name     172.16.xx.xx;
       location / {
            include  uwsgi_params;
            uwsgi_pass  127.0.0.1:8004;
    }        
    }
}

启动:
uwsgi --emperor /home/centos/my_project/vassals --vassal-set chdir=/home/centos/my_project

–vassal-set chdir=/home/centos/my_project 将会添加 -set chdir=/home/centos/my_project 到每个vassal中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值