专栏首页编程之路使用uWSGI运行flask项目详解
原创

使用uWSGI运行flask项目详解

在开发完一个 flask 项目后,首先面临就是如何部署项目,很多人在开发者本机正常运行,但是并不知道如何部署到服务器并良好运行 。

uWSGI是一个Web服务器,它实现了WSGI协议、uwsgi、http等协议, flask 中可以使用 uWSGI 作为web服务,运行 flask 开发的项目 。

1、创建 uWSGI 配置文件

配置文件放在项目根目录下,名称随意,以.ini后缀结尾 ,这里我创建的文件名是 start.ini 内容如下:

[uwsgi]
#uwsgi启动时,所使用的地址和端口(这个是http协议的)
http=0.0.0.0:8000
#指向网站目录
chdir=/Users/wangjie/PycharmProjects/repairXcx
#python 启动程序文件
wsgi-file=app.py
#python 程序内用以启动的application 变量名
callable=app
#处理器数
processes=4
#线程数
threads=2

请注意理解两点:

1)chdir=/Users/wangjie/PycharmProjects/repairXcx

这个配置一定要指定到你的项目的源码根目录中

2)callable=app

这个 app 指的是 flask 项目启动程序中定义的 flask name 的名字,我的启动程序是 app.py , 里面定义的 flask 的名字是 app 。

app = Flask(__name__)

并不是对应 app.py 的名字 ,你的启动程序文件名可以是,start.py、manager.py 等任意名字 。

而是启动程序中 Flask(name) 的名字,若你的名字不是 app 而是 web ,那么你的配置应该改为

callable=web

否则会出现下面的错误

unable to find "application" callable in file app.py

2、安装 uWSGI

执行命令查看是否已经安装 uwsgi ,安装则显示出 uwsgi 的版本,否则未安装

uwsgi --version

若未安装则执行下面命令,安装 uwsgi

  pip install uwsgi 

3、使用 uWSGI 方式启动项目

直接命令行启动项目

uwsgi --ini start.ini

这里我们面临一个问题,如果你执行了 ctrl + c 命令退出了命令行,会发现我们的项目访问不到了,因为你退出了前台运行的 uwsgi 命令。

想要退出当前命令行,去执行其他命令,而 flask 应用可以正常访问,只需要多加一个参数 -d 即可,如下:

uwsgi -d --ini start.ini

这样运行的 flask 项目会一直处于后台运行 ,想要关掉 flask 项目怎么办?

windows 下直接去任务监控器中找到此服务关闭。

mac、Linux下首先查看 uwsgi 的进行号

 ps -ef|grep uwsgi

会出现如下的结果 ,第二列表示进程号

  501  7632     1   0  8:36AM ttys000    0:00.00 uwsgi --ini start.ini
  501  7634     1   0  8:36AM ttys000    0:00.02 uwsgi --ini start.ini
  501  7635     1   0  8:36AM ttys000    0:00.02 uwsgi --ini start.ini
  501  7636     1   0  8:36AM ttys000    0:00.03 uwsgi --ini start.ini
  501  7853  6111   0  8:42AM ttys000    0:00.00 grep uwsgi

依次执行下面命令,将所有 uwsgi 进程杀死即可

kill -9 7632
kill -9 7634
kill -9 7635
kill -9 7636

4、访问项目

由于我们在配置文件,配置的 http 访问形式为所有 ip ,端口 8000

http=0.0.0.0:8000

那么你可以通过下面四种方式访问,最后一个为局域网 ip 访问

http://0.0.0.0:8000
http://127.0.0.1:8000
http://localhost:8000
http://192.168.1.107:8000 

同时在服务器上,若外网端口 8000 开放的情况下,可以通过外网 ip 加端口号来访问 。

http://39.12.1.31:8000 

对于上线微信小程序来说,需要使用 https 协议域名 443 端口的形式访问,443 端口为默认端口,访问时不需要加端口号即可,那么访问形式如下:

https://www.myaapp.com 

总结:

本文我们讲解了,如何使用uWSGI服务器运行flask项目,通过本讲你应该学会自己配置 uWSGI 、安装 uWSGI 、命令行前台启动 flask 项目 、

命令行后台启动 flask 项目,找到 uWSGI 进程,关闭进程即关闭后台运行的项目 ,多种 IP 形式访问 flask 项目。

现在把你的《报修小程序后台源码》使用 uWSGI 的形式运行起来吧,有条件的同学把你的应用部署到服务器。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • nginx+uwsgi+flask+su

    新建一个项目并写一个简单的flask web 服务器app 目录~/Desktop/flask_deploy/manager.py

    py3study
  • Python3+uWSGI+Nginx部署Flask

    第一次在服务器上面部署Flask应用程序,踩了挺多坑,还好最终成功部署,记录一下。

    Naraku
  • Flask项目Docker容器化部署原理与实现

    本文将介绍Flask的部署方案:Flask + Nginx + uWSGI,并使用docker进行容器化部署,部署的实例来源 Flask开发初探,操作系统为ub...

    oYabea
  • nginx uwsgi flask相关配置

    在 /home/download下下载压缩包 wget https://nginx.org/download/nginx-1.12.2.tar.gz 解压缩

    从今若
  • centos服务器uWSGI 和 Nginx 部署 Flask 项目

    前段时间手贱买了几个月的腾讯云服务器。我一个做移动端的买国内服务器干啥。最后想用python爬写数据写几个接口用app玩玩试试看看。

    静默加载
  • Python3-Web开发

    Web应用程序框架或简单的Web框架表示一组库和模块,使Web应用程序开发人员能够编写应用程序,而不必担心协议,线程管理等低级细节。

    用户2146693
  • 手把手教你用图灵机器人做微信公众号自动回复助手 手把手教你用图灵机器人做微信公众号自动回复助手

    创建成功后,会自动跳转到机器人设置界面,在这里你可以对机器人进行个性化定制。其实,图灵机器人提供简单的方法,快速接入微信公众号,这太没有挑战性了,对于喜欢搞...

    尾尾部落
  • flask项目实现自动化部署

    1.简单。flask是主要应对小型或者快速构建的项目,故没有像Django那样大而全,集成了很多的组件,不管你是否用没用得到。如果说Django是一个精装的房子...

    赵云龙龙
  • 如何在Ubuntu 18.04上使用uWSGI和Nginx为Flask应用程序提供服务

    在本指南中,您将使用Ubuntu 18.04上的Flask微框架构建Python应用程序。本文的大部分内容将涉及如何设置uWSGI应用程序服务器以及如何启动应用...

    乌鸦
  • 如何在CentOs 6.4 上使用uWSGI+Nginx部署Flask Web服务器

    Armin Ronacher的Flask是过去几年中为Python创建的Web应用程序框架领域中发生过的最伟大的事情之一。

    藕丝空间
  • CentOS 下用 Nginx 和 u

    前一阵自己用flask框架写了一个博客程序,写完之后想部署到服务器上,因为是小白,所以自己google了好些资料,讲的零零碎碎而且有些地方只是告诉你怎么配置,但...

    py3study
  • 如何在CentOS 7上使用uWSGI和Nginx为Flask应用程序提供服务

    在本指南中,我们将使用CentOS 7上的Flask微框架设置一个简单的Python应用程序。本文的大部分内容将是关于如何设置uWSGI应用程序服务器以启动应用...

    angel_郁
  • 使用 uWSGI + Nginx 部署 Flask 应用

    在这篇文章之前,所有的应用都是在命令行使用 Python 直接运行的,但是这种方式只适合在开发过程中使用,并不适合在生产环境中使用,在生产环境中可以使用 uWS...

    keinYe
  • 如何在 CentOS 上部署 Flask

    平时开发的时候,Flask 自带的 Web Server 可以满足需要,但是部署到服务器上则需要专门的符合 WSGI 协议的 Web Server。一种常见的组...

    StoneWM
  • 在Docker的工作流中常见问题及最终方案

    现在除了容器内容封装的一些依赖关系,我们就拥有了一个相对正常的开发环境了。然而这里还有一个问题,那就是我们不能在生产环境使用这个容器,因为它正在运行的是默认的F...

    Java帮帮
  • Centos7 下python3 uwsgi的安装配置

    好了现在我们可以正常在本机也就是虚拟机里启动flask自带的web服务应用。(应该是吧,小白)

    我已经洗完澡了
  • python部署-Flask+uwsgi+Nginx

    flask即Python代码:部分参考代码如下,相信很多人如果看到这篇文章一定有flask的代码能力。

    Se7eN_HOU
  • Docker 容器化部署 Python 应用

    Docker是目前主流IT公司广泛接受和使用的,用于构建、管理和保护它们应用程序的工具。

    Python数据科学
  • Docker容器化部署Python应用

    Docker是目前主流IT公司广泛接受和使用的,用于构建、管理和保护它们应用程序的工具。

    jhao104

扫码关注云+社区

领取腾讯云代金券