• nginx+uwsgi阿里云ubuntu服务器上简单部署flask RESTful风格项目


    ubuntu16.04上利用Nginx代理uwsgi处理Flask web应用

    1、环境要求

      ubuntu16.04  ----  阿里云的服务器

      Nginx

      python2

      uwsgi

    2、简单介绍Nginx

      nginx是一个高性能的http和反向代理的服务器,Nginx采采用的epoll的机制,而没有使用select和poll,虽然,在用户活跃数量比较高的时候,epoll性能不如select,但是,我们用Nginx来作为web服务器还是很不错的。nginx是一个轻量级的web服务器,他占用内存少,并发能力强,非常适合作为静态资源的服务器使用。

      apt-get安装nginx:

        

        sudo apt-get update
        sudo apt-get install software-properties-common
        sudo add-apt-repository ppa:nginx/stable
        sudo apt-get update
        sudo apt-get install nginx
    

       安装完成后,打开浏览器访问你的服务器,如果看到了nginx的欢迎页,说明你安装成功了,如果没有看到欢迎页,也不用着急,先检查自己的阿里云服务器的安全组规则中是否允许了80端口,如果没有,直接添加安全组规则。

      添加安全组规则方法链接:https://jingyan.baidu.com/article/fea4511a2e387cf7bb912532.html

    3、简单介绍uWsgi

      uwsgi是一个web服务器,它实现了wsgi、uwsgi、http等协议。

      uwsgi可以理解为Nginx和flask项目之间的桥梁,当nginx发现用户请求的不是static文件时,他就请求uwsgi,uwsgi又将请求抛给了flask,flask找到相应的api然后返回。

      安装uwsgi:pip install uwsgi

      让我们从一个简单的”Hello World”开始:

      def application(env, start_response):
          start_response('200 OK', [('Content-Type','text/html')])
          return [b"Hello World"]

      (将其保存为 foobar.py)。

      正如你所见,它由一个简单的Python函数组成。之所以称之为 “application”,是因为它是uWSGI Python加载器将会搜索的默认函数 (但你显然可以自定义)。

      将其部署在http端口9090,如果是阿里云服务器需要注意,添加9090端口到安全组

      现在,启动uWSGI来运行一个HTTP服务器/路由器,它会传递请求到你的WSGI应用:

      uwsgi --http :9090 --wsgi-file foobar.py
    

    4、线上调式flask项目

      确保项目所需文件都安装完成,使用flask自带的web应用服务器Werkzeug运行项目

      如果项目运行失败,请自行检查问题所在

      注意:添加端口到安全组

    5、配置uwsgi

      确定nginx,uwsgi都安装正常,同时flask也能正常运行。

    [uwsgi]
    socket = 127.0.0.1:8080    #配置nginx
    chdir = /home/python/app    #配置项目目录
    module = manage   #加载指定的python WSGI模块(模块路径必须在PYTHONPATH里)
    wsgi-file = manage.py   #配置入口模块
    master = True   #开启master
    callable = app   #设置在收到请求时,uWSGI加载的模块中哪个变量将被调用,默认是名字为“application”的变量
    processes = 1   #配置进程数
    threads = 1   #配置线程数
    vacuum = true   #推出是清空变量环境
    daemonize = wsgi.log   #配置守护进程
    pidfile=uwsgi.pid   #进程pid
    

    6、配置nginx

      如果按照我的方法,用apt安装的话,配置文件应该在/etc/nginx/sites-enabled/目录下有个defalut文件,我们就直接修改这个文件,当然 ,在修改前最好先备份一下。

      a、首先将下面的代码注释掉

         #location / {
                    # First attempt to serve request as file, then
                    # as directory, then fall back to displaying a 404.
                    #try_files $uri $uri/ =404;
            #}
    

      b、添加一下代码(注意:一定要确保自己的项目目录下存在logs/access.log和logs/error.log两个文件夹,不然nginx将会报错

        location  /api  将符合/api的请求转给uwsgi处理

        location  /       指定静态文件处理时的目录  (注意:用alias的话,路径的末尾一定要加/,不然会找不到报forbidden错误

         access_log  /home/python/app/logs/access.log;
            error_log  /home/python/app/logs/error.log;
            location /api {
                include        uwsgi_params;
                uwsgi_pass     127.0.0.1:8080;
            }
            location /{
                alias /home/python/app/www/static/html/;
            }
    

      

  • 相关阅读:
    JSP显示新闻
    servlet应用
    J2EE_第二次作业_登陆页面
    J2EE第一次作业
    软工最后一次作业
    第三次作业(赵清和李靖)
    第二次作业
    第一次作业
    分布式系统架构之构建你的任务调度中心
    【原创】新零售の从单体系统向微服务演变历程(一)
  • 原文地址:https://www.cnblogs.com/wangqj1996/p/9408495.html
Copyright © 2020-2023  润新知