python flask 部署
flask在开发的时候,经常启动本身进行调试(本身可以设置监听的端口,例如 在app.run(port=8088),当然默认不设置端口为5000)。
但生产环境经常使用uswgi充当flask的宿主,然后使用nginx 转跳uswgi,因为本身uswgi处理静态文件功能并不强大,通常nginx会把单独处理css,js等文件,将flask的请求 转跳到 uswgi上.
nginx转跳uswgi也有2种方式
一种是负载的http转跳,
还有一种是 socket的转跳.
关于2种方案的区别:
http转跳时需要配置一些独立的head,因为如果你的程序如果需要获取用户的ip 之类的,拿到的是nginx机器的地址。
而socket链接方式 你就不用担心了。你可以认为这是直接请求道uswgi.
server {
listen 80;
server_name test.com;
#access_log /var/logs/access.log;
#error_log /var/logs/error.log;
#ps:以下为 2种配置请选一种
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8088;
}
location / {
proxy_pass http://127.0.0.1:8088;
}
access_log off;
}
(注释:http转跳是配置 “proxy_pass 127.0.0.1:8088” 这种方式 ,socket转跳 是通过 "uwsgi_pass 127.0.0.1:8088" ,同时 这2中方式需要 在配置uswgi时设置 uwsgi --socket 8088 或者 uwsgi --http 8088)
通常flask 配置 uwsgi --socket 127.0.0.1:3031 --wsgi-file myflaskapp.py --callable app --processes 4 --threads 2 --stats 127.0.0.1:9191