python flask 部署

时间:2024-01-14 20:08:26

  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