资讯专栏INFORMATION COLUMN

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

XboxYan / 566人阅读

摘要:使用开发部署,使用模式的用开发了服务端的,记录部署上服务器的过程,以供后续使用。退出虚拟环境如果服务器中没有安装,先进行安装增加配置文件创建配置文件编辑内容如下更新会提示相关的进程已经被加入要关闭相关的进程可以用开启可以用

使用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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/40964.html

相关文章

  • 基于Flask-Angular项目组网架构与部署

    摘要:基于网,分享项目的组网架构和部署。项目组网架构架构说明流项目访问分为两个流,通过分两个端口暴露给外部使用数据流用户访问网站。通过进行配置,使用作为异步队列来存储任务,并将处理结果存储在中。 基于Raindrop网,分享项目的组网架构和部署。 项目组网架构 showImg(https://cloud.githubusercontent.com/assets/7239657/1015704...

    kelvinlee 评论0 收藏0
  • Gunicron + gevent Mongodb数据库连接一直增加不释放

    摘要:解决过程关于什么是是一个上被广泛使用的高性能的。和大多数的框架兼容,并具有实现简单,轻量级,高性能等特点。为了解决这个问题,在实例化对象的时候要加上参数。参考用来,能否长连接连接从未发布和在上使用 问题描述 使用Flask开发的Web服务,部署在服务器上使用的是gunicorn manage:app -k gevent -w 4 某日告警,说浏览器崩了,当时急急忙忙的重启,...

    Yujiaao 评论0 收藏0
  • Gunicron + gevent Mongodb数据库连接一直增加不释放

    摘要:解决过程关于什么是是一个上被广泛使用的高性能的。和大多数的框架兼容,并具有实现简单,轻量级,高性能等特点。为了解决这个问题,在实例化对象的时候要加上参数。参考用来,能否长连接连接从未发布和在上使用 问题描述 使用Flask开发的Web服务,部署在服务器上使用的是gunicorn manage:app -k gevent -w 4 某日告警,说浏览器崩了,当时急急忙忙的重启,...

    Taste 评论0 收藏0
  • mdwiki开发之路二资源与踩坑记录

    摘要:侧边栏选用提到的。将改成来访问的形式组织代码出现循环的问题往往意味着代码的布局有问题,可以合并或者分离竞争资源。分离的话就是把需要的资源提取到一个第三方文件去。总之就是将循环变成单向。对于周期性任务缺一不可。其他任务可仅运行。 1、bootstrap代码片段: 如果你没有艺术细胞,偷懒的方法就是到这上面去找,比如登录框界面等。侧边栏选用:http://www.designerslib....

    molyzzx 评论0 收藏0
  • mdwiki开发之路二资源与踩坑记录

    摘要:侧边栏选用提到的。将改成来访问的形式组织代码出现循环的问题往往意味着代码的布局有问题,可以合并或者分离竞争资源。分离的话就是把需要的资源提取到一个第三方文件去。总之就是将循环变成单向。对于周期性任务缺一不可。其他任务可仅运行。 1、bootstrap代码片段: 如果你没有艺术细胞,偷懒的方法就是到这上面去找,比如登录框界面等。侧边栏选用:http://www.designerslib....

    linkFly 评论0 收藏0

发表评论

0条评论

XboxYan

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<