美文网首页
Flask+uWSGI+Nginx

Flask+uWSGI+Nginx

作者: MrStranger | 来源:发表于2016-07-21 12:53 被阅读0次

Python网络部署繁琐果然名不虚传,作为刚刚入门Flask的小白,昨天配置uWSGI花费了一晚上的时间。
言归正传:

先安装好Python,Flask等等的开发包,这里Google或者手中的教程中都会有,无需多言

安装uWSGI:

我是直接用pip命令行安装的
pip3 install uwsgi

测试uWSGI

新建一个python文件test.py
test.py中添加代码:

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

将控制台cd到当前工程目录!将控制台cd到当前工程目录!将控制台cd到当前工程目录!
启动uWSGI: uwsgi --http :9090 --wsgi-file test.py

在浏览器中访问 http://127.0.0.1:9090
输出字符:“Hello World”
则uWSGI安装成功!

配置Nginx+uWSGI

笔者作为前PHP使用者,Mac曾装过PHP三合一环境包MAMP,因而想直接在MAMP的Nginx服务器中做一些配置工作来支持uwsgi

在Mac系统中找到MAMP Nginx服务器配置文件:/Applications/MAMP/conf/nginx/nginx.conf
作以下修改

http{
    ...
    server{
       ...
         location / {
             include uwsgi_params;
             uwsgi_pass  127.0.0.1:5000;
          }
       ...
    }
    ...
}

新建一个简单的Flask工程 restTest(笔者没有使用虚拟环境,直接在Pycharm中建的)

restTest
    - static
    - templates
    - restTest.py

restTest.py中添加代码:

from flask import Flask

app = Flask(__name__)


@app.route('/')
def hello_world():
    return 'Hello world!'

#调试代码的时候,在”if __name__ == '__main__'“中加入一些我们的调试代码
# 我们可以让外部模块调用的时候不执行我们的调试代码,那个时候,__name__的值为模块文件名restTest
# 但是如果我们想排查问题的时候,直接执行该模块文件,调试代码能够正常运行.这个时候__name__是__main__
if __name__ == '__main__':
    app.run()

新建uWSGI的配置文件 config.ini

restTest
    - static
    - templates
    - restTest.py
    - config.ini

配置文件内容:

[uwsgi]
socket = 127.0.0.1:5000 #注:表示uWSGI与Nginx通信的地址和端口,和Nginx配置里的uwsgi_pass一致。
processes = 4   #注:跑几个进程,这里用4个进程
threads = 2     #每个进程的线程数。
module=restTest #启动模块,与restTest.py文件名对应
callable=app     # 与 app = Flask(__name__) 对应
master = true  #主线程运行
memory-report = true

将控制台cd到当前工程目录!将控制台cd到当前工程目录!将控制台cd到当前工程目录!(uwsgi将从当前目录中加载配置文件)

启动uwsgi: uwsgi --ini config.ini

用MAMP启动Nginx服务器(用GUI界面启动即可)

在浏览器中访问 http://127.0.0.1:7888(这里的端口号是MAMP中你为Nginx指定的端口号,跟uwsgi那个socket端口5000不一样)
输出字符:“Hello World”!! 开心~~~~

tips:

 - 启动uwsgi后如何退出:键入 Ctrl+c uwsgi会自动终止开启的进程
 - 每次修改restTest.py之后,需要重启一下uwsgi;nginx好像不用重启(实践证明),貌似很不方便,再想办法

相关文章

  • 使用Flask+uwsgi+Nginx部署Flask正式环境

    在本文中,我们将以实际项目为例,讲解如何使用Flask+uwsgi+Nginx部署Flask正式环境。 环境准备 ...

  • flask+uwsgi+nginx 部署,no moudle n

    在flask+uwsgi+nginx 方式部署时,遇到无法导入自定义的 moudle,需要在 启动app时 加入项...

  • 插件flask_jwt_extended

    书接上文flask配置生产环境,我们了解到了:如何配置flask+uWSGI+nginx的生产环境 接下来我们来看...

  • Flask+uWSGI+Nginx

    Python网络部署繁琐果然名不虚传,作为刚刚入门Flask的小白,昨天配置uWSGI花费了一晚上的时间。言归正传...

  • Flask+uwsgi+nginx

    简介 uwsgi是中间件,用于连接Flask与nginx,nginx会监听服务器接口,接收用户的请求,然后将该请求...

  • Flask+uWSGI+Nginx模型

    Web服务器层 Web服务器主要是接收 HTTP 请求并返回响应。常见的 web服务器有 Nginx,Apache...

  • Flask+uwsgi+Nginx部署应用

    之前用Flask写了个网站,然后就想部署到云主机上。搜索了一番,决定采用的部署方案是: Web 服务器采用uWSG...

  • flask+uwsgi+nginx(upstream prema

    先摆一张问题的截图,nginx的error.log问题显示的是upstream prematurely close...

  • flask+uwsgi+nginx简单部署应用

    1,创建虚拟环境: mkvirtualenv flask_uwsgi_demo 2,安装flask : ...

  • 腾讯云+flask+uwsgi+nginx部署入门

    此篇是在腾讯云上部署flask项目的入门文章(nginx后面有时间添加)。腾讯云配置: 操作系统:Ubuntu S...

网友评论

      本文标题: Flask+uWSGI+Nginx

      本文链接:https://www.haomeiwen.com/subject/otebjttx.html