Flask项目部署(flask+gunicorn+nginx)

目录

 

Gunicorn(http://gunicorn.org/)

 Gunicorn 安装

Gunicorn 启动

Nginx

Nginx安装

Nginx启动

Nginx检查配置文件

修改配置文件

Nginx重启


Gunicorn(http://gunicorn.org/

      gunicorn是一个python Wsgi http server,只支持在Unix系统上运行,来源于Ruby的unicorn项目。Gunicorn使用prefork master-worker模型(在gunicorn中,master被称为arbiter),能够与各种wsgi(Wsgi——Web框架致力于如何生成HTML代码,而Web服务器用于处理和响应HTTP请求。Web框架和Web服务器之间的通信,需要一套双方都遵守的接口协议。WSGI协议就是用来统一这两者的接口的) web框架协作。常用的WSGI容器有Gunicorn和uWSGI,但Gunicorn直接用命令启动,不需要编写配置文件,相对uWSGI要容易很多,所以这里我也选择用Gunicorn作为容器。

 Gunicorn 安装

                   pip install gunicorn

Gunicorn 启动

gunicorn [options] module_name:variable_name

说明: workers -w INT, --workers INT 用于处理工作进程的数量,为正整数,默认为1。worker推荐的数量为当前的CPU个数*2 + 1

module_name对应python文件,variable_name对应web应用实例。

例如:

启动命令:

gunicorn --worker=3 main:app -b 127.0.0.1:5000

Nginx

1、web服务 – 最初开发NGINX是为了解决 C10K 问题 – 可以轻松支撑10,000或更多的并发连接。使用NGINX为你的Python应用提供web服务,可以让你的网站运行更快,即便在小流量的情况下也有效果。当你的用户成千上万时,确定无疑,它可以提供更高的性能,更少的崩溃,以及更少的当机时间。你也可以使用NGINX提供静态文件缓存或者微缓存服务,一个独立的NGINX反向代理也是很好的选择(见下一段)。

2、反向代理– 你可以在应用服务的前端用NGINX做反向代理。NGINX接收Web请求并分发到你的应用服务。这个“怪招”可以让你的网站运行得更快,减少当机,消费更少的服务资源,而且可以提高安全性。你也可以在反向代理服务器上缓存静态资源(非常高效),添加静态内容的微缓存,以减少应用自身的负载,等等。

3、为多个应用服务提供动态均衡 – 通过布署反向代理服务。通过多应用服务并行运行和NGINX或者NGINX插件来做流量负载均衡。通过这种布署,根据流量需要,增长稳定性和运行时间需要,你可以很轻松地在线扩展网站性能。如果你需要让给定用户的会话在同一个服务上,你只需要配置负载均衡以支持会话持久化。

Nginx安装

   sudo apt-get install nginx

Nginx启动

sudo /etc/init.d/nginx start

Nginx检查配置文件

nginx -t

出现以下截图代表成功

修改配置文件

sudo vim /etc/nginx/sites-available/default

server {
        listen 80;
        server_name _; # 外部地址
 
        location / {
                proxy_pass http://127.0.0.1:5000; #此处和你gunicore的ip和端口一致
                proxy_redirect     off;
                proxy_set_header   Host                 $http_host;
                proxy_set_header   X-Real-IP            $remote_addr;
                proxy_set_header   X-Forwarded-For      $proxy_add_x_forwarded_for;
                proxy_set_header   X-Forwarded-Proto    $scheme;
        }

Nginx重启

sudo service nginx restart

之后我们可以通过外网访问flask应用程序了

猜你喜欢

转载自blog.csdn.net/qq_36114862/article/details/81380956