使用uWSGI运行flask项目详解

2020-04-07 11:44:04 浏览数 (1)

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

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

1、创建 uWSGI 配置文件

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

代码语言:txt复制
[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 。

代码语言:txt复制
app = Flask(__name__)

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

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

代码语言:txt复制
callable=web

否则会出现下面的错误

代码语言:txt复制
unable to find "application" callable in file app.py
2、安装 uWSGI

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

代码语言:txt复制
uwsgi --version

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

代码语言:txt复制
  pip install uwsgi 
3、使用 uWSGI 方式启动项目

直接命令行启动项目

代码语言:txt复制
uwsgi --ini start.ini

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

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

代码语言:txt复制
uwsgi -d --ini start.ini

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

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

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

代码语言:txt复制
 ps -ef|grep uwsgi

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

代码语言:txt复制
  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 进程杀死即可

代码语言:txt复制
kill -9 7632
kill -9 7634
kill -9 7635
kill -9 7636
4、访问项目

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

代码语言:txt复制
http=0.0.0.0:8000

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

代码语言:txt复制
http://0.0.0.0:8000
代码语言:txt复制
http://127.0.0.1:8000
代码语言:txt复制
http://localhost:8000
代码语言:txt复制
http://192.168.1.107:8000 

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

代码语言:txt复制
http://39.12.1.31:8000 

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

代码语言:txt复制
https://www.myaapp.com 
总结:

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

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

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

0 人点赞