Gunicorn+Nginx 部署Flask应用

  1. Gunicorn
    1. 安装
    2. 使用
  2. 使用Nginx代理
    1. 配置Nginx

Gunicorn

Gunicorn是一个应用容器,用来处理并发请求。使用如下。

安装

1
pip3 install gunicorn

使用

  • 开启服务
    切换到Flask应用根目录
    1
    gunicorn rocket:app -p rocket.pid -D

其中,rocket为应用文件名rocket.pyapp为该文件中的app实例名,-p rocket.pid:将应用的进程id存在文件中,-D:后台运行。
上面命令运行后,程序默认运行在127.0.0.1:8000,可使用-b 127.0.0.1:7999更换端口

  • 停止服务
    1
    kill cat rocket.pid

使用Nginx代理

Gunicorn是运行在本地的,如果需要外网访问,可使用Nginx代理。也就是当外网访问某个地址时,将请求转发给Gunicorn处理。

配置Nginx

  • 编写配置
    /etc/nginx/site-available新建一个文件,名字随意比如site.conf,内容如下:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    server {
    listen 443;
    server_name *****.cn; #填写绑定证书的域名
    ssl on;
    ssl_certificate 1_******.crt;
    ssl_certificate_key 2_******.key;
    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置
    ssl_prefer_server_ciphers on;
    location / {
    root /var/www/html;
    index index.html index.htm;}


    location /api/ {
    proxy_pass http://127.0.0.1:8000/;
    }
    }

说明:上面这个配置开启了443端口的监听也就是监听https,如果配置在80端口则所有ssl的配置都不需要。证书位置如果是上述格式需将文件放在nginx根目录下。
location:访问http://yourdomain/api/test.txt会匹配到Flask中的http://127.0.0.1:8000/test.txt,注意在:8000后加/

  • 创建软连接
    sudo ln -s /etc/nginx/sites-available/site.conf /etc/nginx/sites-enabled/site.conf

  • 重启nginx
    service nginx restart


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 jaytp@qq.com

文章标题:Gunicorn+Nginx 部署Flask应用

本文作者:子非鱼

发布时间:2019-05-03, 10:08:49

最后更新:2019-05-03, 10:55:57

原始链接:https://Wangsr.cn/2019/05/03/Gunicorn-Nginx-部署Flask应用/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏