使用flask开发api——部署fla

发布时间:2019-10-16 17:29:25编辑:auto阅读(2319)

    使用flask开发api——部署flask,使用gunicorn+gevent模式的http server

    用flask开发了服务端的api,记录部署上服务器的过程,以供后续使用。

    安装python3.5

    本身服务器已经安装了python3,并且版本为3.5,这里不重新安装,如果服务器中没有安装python3,则进行安装

    $ sudo apt-get install python3.5

    安装pip3

    我们需要用pip来使用第3方模块,先安装pip

    # 下载安装脚本
    $ curl -O https://bootstrap.pypa.io/get-pip.py
    
    # 安装
    sudo python3 get-pip.py 

    安装成功后,查看安装版本,确定与你目前的python3版本一致

    $ pip3 -V
    
    //显示的版本信息
    pip 9.0.1 from /usr/local/lib/python3.5/dist-packages (python 3.5)

    安装virtualenv

    每个项目可能需要用到的环境不一样,为了避免影响整个服务器的环境,我们给每个项目一个独立的运行环境,需要用到virtualenv

    $ sudo pip3 install virtualenv 
    
    //如果安装成功,会显示
    Successfully installed virtualenv-15.1.0

    创建虚拟环境

    $ cd /var/www/your_project_name
    
    # 创建虚拟环境,其中py35env为你自定义的环境名称
    $ virtualenv -p python3 py35env
    
    # 创建成功会有如下说明
    Already using interpreter /usr/bin/python3
    Using base prefix '/usr'
    New python executable in /var/www/your_project_name/py35env/bin/python3
    Also creating executable in /var/www/your_project_name/py35env/bin/python
    Installing setuptools, pip, wheel...done.
    
    # 激活虚拟环境
    $ source py35env/bin/activate
    
    # 这时命令行路径前面会出现你的虚拟环境名,例如:
    (py35env) ubuntu@ip-10-0-0-119:/var/www/your_project_name$
    
    # 查看你目前的插件,有些可能之前系统python环境已经安装了,你可以不用重复安装
    $ sudo pip3 list
    

    安装项目中需要的python 模块

    1.安装Flask

    $ pip3 install Flask 
    
    # 安装成功会提示如下:
    Successfully installed Flask-0.12.2 Werkzeug-0.12.2 click-6.7 itsdangerous-0.24
    # 也可以用sudo pip3 list来查看

    2. 安装Flask-RESTful

    $ pip3 install Flask-RESTful
    
    # 安装成功会提示如下:
    Successfully installed Flask-RESTful-0.3.6 aniso8601-1.3.0 python-dateutil-2.6.1 pytz-2017.2
    # 也可以用sudo pip3 list来查看

    3. 安装pyMySQL

    $ pip3 install pyMySQL
    
    # 安装成功会提示如下:
    Successfully installed pyMySQL-0.7.11
    # 也可以用sudo pip3 list来查看

    4. 安装gunicorn

    $ pip3 install gunicorn
    
    # 安装成功会提示如下:
    Successfully installed gunicorn-19.7.1
    # 也可以用sudo pip3 list来查看
    
    # 创建gunicorn存放日志文件夹
    $ sudo mkdir /var/log/gunicorn
    # 更改权限
    $ sudo chmod -R 777 /var/log/gunicorn

    5.安装gevent

    $ pip3 install gevent
    
    # 安装成功会提示如下:
    Successfully installed gevent-1.2.2 greenlet-0.4.12
    # 也可以用sudo pip3 list来查看

    安装项目

    将项目克隆下来

    $ git clone git@xxx.xxx.xxx/your_project_name.git
    

    进入到项目下,测试gunicorn是否正确运行

    $ cd your_project_name
    
    # 更新项目日志文件夹的权限
    $ sudo chmod -R 777 logs
    
    $ gunicorn -b 0.0.0.0:5000 manager:app
    # 如果提示如下:
    [2017-10-20 09:44:48 +0000] [21856] [INFO] Starting gunicorn 19.7.1
    [2017-10-20 09:44:48 +0000] [21856] [INFO] Listening at: http://0.0.0.0:5000 (21856)
    [2017-10-20 09:44:48 +0000] [21856] [INFO] Using worker: sync
    [2017-10-20 09:44:49 +0000] [21859] [INFO] Booting worker with pid: 21859
    
    # 开启后,可以在客户端中测试访问
    # crtl+c关闭
    

    安装supervisor做守护进程

    由于gunicorn在控制面板关闭后,进程也会退出,需要使用supervisor做后台守护。

    退出虚拟环境

    $ deactivate

    如果服务器中没有安装supervisor,先进行安装

    $ sudo apt-get install supervisor

    增加supervisor 配置文件

    $  cd /etc/supervisor/conf.d
    # 创建配置文件
    $ sudo touch your_project_name.conf
    # 编辑
    $ sudo vi your_project_name.conf
    
    # 内容如下
    [program:your_project_name]
    command=/var/www/your_project_name/py35env/bin/gunicorn manager:app -c /var/www/your_project_name/your_project_name/gun.py
    directory=/var/www/your_project_name/your_project_name
    autostart=true
    autorestart=true
    stdout_logfile=/var/log/gunicorn/gunicorn_supervisor.log
    stderr_logfile=/var/log/gunicorn/gunicorn_supervisor_err.log
    

    更新supervisor

    $ sudo supervisorctl update
    # 会提示相关的进程已经被加入
    your_project_name: added process group
    
    # 要关闭相关的进程可以用
    $ sudo supervisorctl stop your_project_name
    # 开启可以用
    $ sudo supervisorctl start your_project_name
    

关键字