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