阿里云部署flask

1 配置:ECS CentOS7
首先进入阿里云控制台,在ECS面板修改重置实例密码。[最后有配置安全组]


image.png

然后还是上面的实例详情--基本信息--远程连接--workbench
在弹出的连接界面中,输入前面重置的密码
此时进入了CentOS系统中,会基本的Linux命令就可以开始各种操作了

2 首先第一步,安装基本的工具:

yum -y groupinstall "Development tools"

yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel

3 然后根据需求下载不同的python版本,我下载的是3.6.8

wget https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tar.xz
#其他版本地址:https://www.python.org/ftp/python/

然后解压压缩包,开始安装python3

tar -xvJf  Python-3.6.8.tar.xz

cd Python-3.6.8

./configure --prefix=/usr/local/python3

make && make install

安装完成后会出现successfully installed字样

4 python3虚拟环境(文件夹可能不太一样,自己用ls查看一下/usr/local/python3/bin)

pip  install virtualenv

建立python3独立环境
virtualenv  -p /usr/local/python3/bin/python3.6 /py3env

进去python3独立环境
source /py3env/bin/activate

安装成功后是下面这样的,以后每次进入都需要输入source /py3env/bin/activate


image.png

5.上传自己的项目
自己本身是mac电脑的话,就不需要装任何其他工具,直接用scp命令就可以了

链接里面有scp命令说明
https://www.jianshu.com/p/51d710a0e11e

先上传一个简单的flask项目,让其可以在CentOS本地可以跑起来[后面的gunicorn会启动该python项目]
我是直接在mac写好了,然后通过scp命令直接上传到CentOS,只有简单的一个hello.py文件,内容如下:

from flask import Flask
 
app = Flask(__name__)
 
@app.route('/')
def index():
    return 'hello world'
 
if __name__ == '__main__':
    app.run()

6 gunicorn
首先安装gunicorn

pip install gunicorn

启动hello.py项目
gunicorn -w worker数量 -b ip:端口号 运行文件名:flask实例名
例:gunicorn -w 3 -b 127.0.0.1:5000 helloworld:app
gunicorn命令的参数:

  • D 表示后台运行
  • w 表示有3 个 工作线程(感觉有些类似 nginx 的 master-worker 模型)
  • b 指定ip 和端口
  • 这里采用本机访问, 主要是为了使用nginx 进行代理, 方便管理
  • application 表存放 写着全局变量 app 的那个工程文件夹
  • 在我们的这个工程中, 即包含 init.py 的那个文件
  • app 为全局变量 (app = Flask(name))
  • ps: 在下面图示文件夹中运行 gunicorn 指令

注意:现在可以在CentOS上本地访问(127.0.0.1:5000),在控制台中会返回hello world代表本地接口调通了,如果运行后项目提示某些文件没有导入,直接用pip install filename安装相关文件,跟mac上调试项目一摸一样。

curl http://127.0.0.1:5000

7 nginx
(前面一直到gunicorn只能在CentOS本地访问接口,如果需要外网访问,还需要安装nginx)
下载安装包

wget http://nginx.org/download/nginx-1.9.9.tar.gz
tar -zxvf nginx-1.9.9.tar.gz
cd nginx-1.9.9
./configure
make && make install

如下图所示,编辑/usr/local/nginx/nginx.conf


image.png

添加nginx需要监听的接口[这一步监听的8080端口必须在阿里云安全组配置中开放才可以正常访问,文章最后有相应步骤]


image.png

nginx将监听8080接口,将外部通过8080端口发送来的请求代理给127.0.0.1:5000,也就是我们上一步在CentOS上部署的flask项目。

$ /usr/local/nginx/sbin/nginx -t 检查配置文件nginx.conf是否正确
$ /usr/local/nginx/sbin/nginx 启动nginx

nginx其他命令
$ /usr/local/nginx/sbin/nginx -s reload # 重新载入配置文件
$ /usr/local/nginx/sbin/nginx -s reopen # 重启nginx
$ /usr/local/nginx/sbin/nginx -s stop # 停止nginx

$ ps -ef | grep nginx #查看进程号
$ pstree -ap|grep nginx #查看进程号

kill -9 25134 #杀死进程(25134是进程号)
pkill -9 nginx #强制停止

8 配置安全组,方便外网接口访问,配置好了nginx再来也可以,是相对独立的步骤


image.png

步骤:本实例安全组--配置规则--入方向--手动添加


image.png

比如图中,目的8080/8080,源:0.0.0.0/0,手动填写进去,这是后面要开放给公网的接口
image.png

你可能感兴趣的:(阿里云部署flask)