Flask + Gunicorn + Nginx 部署
前言
本文记录我AWS上部署Flask服务器的过程~ 希望能帮到有需要的人, 由于本人水平有限,难免有错误与遗漏的地方~ 还请大家多多指正~ (๑•ᴗ•๑)
框架简介
Gunicorn
这里就要先说到WSGI,它是一个协议,定义与协调Python程序与请求之间的接口,常用的WSGI容器有Gunicorn和uWSGI,Gunicorn更加快捷,所以选择Gunicorn
Flask
Flask是一个基于Python的Web开发微框架,借助Web框架,我们就不用关心请求,响应这些底层的实现,而专注于业务的实现~ 而Flask相比于其他框架更加轻量,自由度更高,所以这里我选择了Flask
Nginx
Nginx 是一个异步框架的Web服务器,我将它部署在Gunicorn前面,通过反向代理连接. 其实不加Nginx也是可以的,但是加上Nginx有更多好处, 例如 静态文件支持,负载均衡等等,以后我会再研究研究,单独写一篇博文的~
架构预览
如图~
部署过程
部署的服务器是 AWS 上的 CentOS 服务器, 使用的是Python3.7.0,而AWS上是默认Python2.7的,所以第一步是 安装Python3 环境
安装Python3环境
下载,解压安装包
1 | wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz |
编译,安装Python3
在Linux上我们需要先安装 gcc 编译器
1 | sudo yum -y install gcc gcc-c++ |
然后cd当解压目录中进行 编译安装
1 | cd Python-3.7.0/ |
修改软链接
1 | #移除原有软链接 |
修改 yum
将 首行 的配置修改为Python3.7
1 | vim /usr/bin/yum |
结果
这是我们查看Python版本 就如下~
pip3的安装
使用Python3自然要使用pip3了,下面是pip3的安装方法
安装解压 pip3
1 | $ wget --no-check-certificate https://github.com/pypa/pip/archive/9.0.1.tar.gz |
创建软连接与更新
1 | sudo ln -s /usr/local/python3/bin/pip /usr/bin/pip3 |
此时,可能会报错误 /usr/bin/pip: No such file or directory 此时是因为pip升级后位置更改为/usr/local/bin/pip,所以要更新缓存
1 | hash -r |
配置虚拟环境
接下来就是要配置Python3的虚拟环境,避免相互影响
1 | pip install --upgrade virtualenv |
配置Flask 和 Git
这里就是用pip安装自己需要的Web框架了,这里我就先只安装了一个Flask,然后用Git部署代码,因为现阶段代码比较简单,所以没用fabric,后续有时间我会研究研究~
1 | pip install flask |
Nginx配置
Nginx的安装很简单,只需要一条命令~
1 | sudo yum install nginx |
然后修改Nginx的配置文件 路径在 /etc/nginx/nginx.conf,主要是修改监听端口和root路径,
我是这样改的~ 监听5000端口, root指向我存放代码的Git仓库
这样基本就可以了,然后是配置Gunicorn
Gunicorn
这里也很简单,名利如下~
1 | # 安装 |
若出现无法启动Gunicorn服务的情况,有可能设置的端口已经被占用了~ 比如我 上次连接断开前没中止,就出现了 无法启动的情况~
如果一切正常的,访问ip就能正常展示了~~如果不能访问,建议排除是不是网关设置的问