前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用uWSGI运行flask项目详解

使用uWSGI运行flask项目详解

原创
作者头像
热心的程序员
修改2020-04-07 11:44:04
10.2K0
修改2020-04-07 11:44:04
举报
文章被收录于专栏:编程之路编程之路

在开发完一个 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 的形式运行起来吧,有条件的同学把你的应用部署到服务器。

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、创建 uWSGI 配置文件
  • 2、安装 uWSGI
  • 3、使用 uWSGI 方式启动项目
  • 4、访问项目
  • 总结:
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档