美文网首页
阿里云部署flask

阿里云部署flask

作者: 默默奋斗的木头人 | 来源:发表于2020-09-14 15:43 被阅读0次

    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

          本文链接:https://www.haomeiwen.com/subject/fztzektx.html