Python3+Gunicorn+Nginx 部署Flask项目

Python014

Python3+Gunicorn+Nginx 部署Flask项目,第1张

前言: 之前在本地测试项目的过程中一直使用python app.py的方式来启动项目,这种方式在本地测试的话还可以,但是在生产环境的话就不能使用这种方式。

原因:

1.可能会出现无响应情况

2.无法支持高并发和多线程

3.无法合理利用服务器资源

生产环境: Centos7、Python3

需要模块: Gunicon、Nginx、Flask

一、安装Gunicorn

Gunicorn是一个高效的Web服务器,地位相当于Java中的Tomcat。简单来说gunicorn封装了HTTP的底层实现,我们通过gunicorn启动服务,用户请求与服务相应都经过gunicorn传输。

1.创建虚拟环境

项目上传到服务器指定目录下,然后创建python3的虚拟环境,激活并进去虚拟环境,在虚拟环境下可以看到命令前有虚拟环境的名称。(之前在使用Gunicorn模块的过程中,没有使用虚拟环境,导致我启动项目有一直提示没有找到gunicorn这个命令,可能是我在使用python全局环境的过程中,有某些模块影响到这个gunicorn模块,后面在使用虚拟环境就没有出现这个问题。)

2.安装项目所需的模块

3.安装gunicorn

二、项目配置启动

1.创建一个简易的web程序

2.启动服务

4--启动4个进程来分配服务

0.0.0.0--允许任意主机访问

5000--启动端口(与nginx转发的端口一致)

app:目标文件

app:指定模块

补充部分: gunicorn和nginx关系

gunicorn 可以单独提供服务,但生产环境一般不这样做。首先静态资源(jscssimg)会占用不少的请求资源,而对于 gunicorn 来讲它本身更应该关注实际业务的请求与处理而不应该把资源浪费在静态资源请求上;此外,单独运行 gunicorn 是没有办法起多个进程多个端口来负载均衡的。

nginx 的作用就是弥补以上问题,首先作为前端服务器它可以处理一切静态文件请求,此时 gunicorn 作为后端服务器,nginx 将会把动态请求转发给后端服务器,因此我们可以起多个 gunicorn 进程,然后让 nginx 作均衡负载转发请求给多个 gunicorn 进程从而提升服务器处理效率与处理能力。最后,nginx 还可以配置很多安全相关、认证相关等很多处理,可以让你的网站更专注业务的编写,把一些转发规则等其它业务无关的事情交给 nginx 做。

参考链接: https://www.jianshu.com/p/da28ec28ef4b

1、打开手机的开发者选项,本人小米手机,系统android 7.0(miui 9.1),设置->我的设备->全部参数(点击miui版本5次,即可开启开发者模式)

2、设置->更多设置(倒数第三个就是开发者选项)->开启USB调试,使用数据线连接手机和电脑

3、在电脑上安装adb驱动,下载地址:http://download.csdn.net/download/guochao198975/10189371

打开安装软件

4、点击Device Manager,选择usb连接的设备,单击Install,安装前会有一个叹号,安装后如下图,会出现Android Phone.

如果没有出现USB连接的设备,则说明手机没有进入usb调试模式,或者手机没有连接好.如果一直有感叹号说明驱动没有安装成功.

5、安装好驱动后,还需要在电脑上下载adb工具,这里注意一定要下载1.0.31以上的版本,网上很多能下载的高的版本都是假的(实际很多都是1.0.26),

推荐下载地址:http://download.csdn.net/download/guochao198975/10188060(版本为1.0.39)

解压工具到自己指定的目录下,我解压的目录是C:UsersAaronadb

6、我们还需要为adb工具配置环境变量,配置的目的是为后续python程序正常调用adb工具做准备,如果不配置,那么必须把adb工具和python文件放到同一目录下(不建议这么做).

右键计算机,点击属性->高级系统设置->环境变量,在系统变量中的Path中添加自己的adb工具目录路径.(注意:我这里是win7系统,其他系统可行百度,大同小异)

7、这里adb就可以正常运行了,打开cmd,输入 abd version,可以正常显示你的adb工具版本号

输入adb devices 可正常显示 abd设备列表.那么就表示一切顺利.

可是现实情况往往都不怎么一帆风顺.这中间我遇到了两种问题.

第一个问题是提示"adb not found"

解决方法如下,右键计算机->属性->设备管理器->如下图右键Android Composite ADB Interface,选择详细信息,属性中选择硬件Id,查看值中如下图截图的四个字符(实际是十六进制的编码),我的是"2717",在自己用户的主目录下,找到.android目录(注意前面的"."),查看是否存在adb_usb.ini文件,如果存在修改即可,如果不存在需要新建一个.用文本编辑器打开,打开后输入"0x2717"image.png,保存即可.重新拔插数据线,

此问题解决,可再次在cmd中查看adb devices,即可正常显示设备列表.

第二个问题是虽然可以正常显示驱动列表,但是状态是"adb offline ",此问题就是为什么选在adb版本1.0.31以上的原因了,这是之前adb工具真的安卓4以上手机的bug,在1.0.31以上版本已经解决.

8、在cmd上输入adb kill-server 然后重新拔插usb线之后,就可以连接adb 了

9、这时我们可以开始部署python环境了,具体怎么部署python环境,我就不说明了,网上资料很多,相信看此教程的都有点python基础,没有的话自行百度.

这里需要强调的是需要引用一些类库.(如果提示ImportError: No module named 'numpy'

表示,没有安装numpy 或没有安装好。使用命令pip install numpy,即可自动安装)

10、下载微信跳一跳python程序.下载地址:http://download.csdn.net/download/guochao198975/10189554

11、在手机端打开微信跳一跳.在电脑端命令行运行wechat_jump_auto.py.按照提示,输入y,回车,神奇的事情发生了,微信跳一跳的小人自动蹦了.(温馨提示不要太高分哦~~~~)

python学习网,大量的免费python视频教程,欢迎在线学习!

现在互联网发展迅速,众多行业巨头,都已经转投到人工智能领域,而人工智能的首选编程语言就是python,所以学好Python能够从事的工作还是很多的,而且前景非常不错。

学完python可以应用于以下领域:

①Web 和 Internet开发

②科学计算和统计

③人工智能

④桌面界面开发

⑤软件开发

⑥后端开发

⑦网络爬虫

可以从事的岗位也很多,比如Python爬虫工程师,大数据工程师等等!

互联网行业目前还是最热门的行业之一,学习IT技能之后足够优秀是有机会进入腾讯、阿里、网易等互联网大厂高薪就业的,发展前景非常好,普通人也可以学习。

想要系统学习,你可以考察对比一下开设有相关专业的热门学校,好的学校拥有根据当下企业需求自主研发课程的能力,能够在校期间取得大专或本科学历,中博软件学院、南京课工场、南京北大青鸟等开设相关专业的学校都是不错的,建议实地考察对比一下。

祝你学有所成,望采纳。