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

python flask api部署_使用flask开发api——部署flask,使用gunicorn+gevent模式的http server...相关推荐

  1. python flask高并发_标志处理高并发性,Flask

    Flask处理高并发 1.通过设置app.run()的参数,来达到多线程的效果,具体参数: 1.threaded : 多线程支持,默认为False,即不开启多线程; app.run(threaded= ...

  2. python 微服务 网关_建设微服务API网关的一些实践

    随着这些年微服务的流行,API网关已经成为微服务架构中不可或缺的一环.一方面它承担着服务对外的唯一门户,一方面它提取了许多应用的共性功能. 整体架构 我们的Api网关目前的架构如上所示,可以看到Api ...

  3. LINUX系统下部署百度离线地图开发API

    Bigemap离线地图发布服务器 for Linux SDK下载地址:http://www.bigemap.com/reader/download/detail2019041117.html 当前版本 ...

  4. travis-ci自动部署_如何使用Travis CI部署(几乎)零恐惧的Cloud Foundry应用

    travis-ci自动部署 by Robin Bobbitt 罗宾·波比(Robin Bobbitt) 如何使用Travis CI部署(几乎)零恐惧的Cloud Foundry应用 (How to d ...

  5. java web api 版本控制_怎么做 Web API 版本控制?

    简评:这是 fly.io分享的一篇文章,讲了他们是怎么对自家 REST API 做版本控制的.另外还有很多其他的技术文章,个人感觉还不错,感兴趣的同学可以看一看. API 设计是一个都快被说烂了的主题 ...

  6. android手机api等级_什么是Android API 级别?

    什么是 API 级别? API 级别是一个对 Android 平台版本提供的框架 API 修订版进行唯一标识的整数值. Android 平台提供了一种框架 API,应用可利用它与底层 Android ...

  7. 怎么抓python程序的包_如何在AWS上部署python应用程序

    如何在AWS上部署python应用程序,学姐呕心沥血亲自总结,亲测有效,比网上看网上大把大把的文档要快得多! 作者:蕾学姐 亚马逊云计算服务(Amazon Web Services,缩写为AWS),由 ...

  8. python工程师干什么的_大数据开发工程师薪资待遇及招聘要求?

     目录: 大数据开发是干什么的? 大数据开发需要掌握哪些技术?学习路线如何? 大数据开发需要掌握数学知识吗? 大数据开发就业前景如何? 大数据开发工程师薪资待遇及招聘要求? 大数据开发是干什么的? 大 ...

  9. python百度地图api经纬度_从百度地图API接口批量获取地点的经纬度

    1.[代码][Python]代码 #!/usr/bin/python #coding:utf-8 import xlrd import xlwt import requests import urll ...

最新文章

  1. CTO让我研究中台(一):阿里的“数据+业务”双中台架构
  2. Windows phone 7更新已经支持复制/粘贴[有图有真相]
  3. IntelliJ IDEA 2019 快捷键终极大全,速度收藏!
  4. matlab 工业相机 曝光时间_CCD高清工业相机的主要参数及应用
  5. libsvm——数据格式的转换及使用
  6. caffe之 Blob、Layer、Net
  7. JVM学习笔记四_垃圾收集器与内存分配策略
  8. rsync结合inotify工具实现实时同步传输文件
  9. 复旦大学入学计算机考试大纲,《计算机办公自动化》课程入学考试考核大纲和样题-复旦大学外国留学生...
  10. 高中计算机excelppt,高一信息技术 4.2利用Excel表格处理个人财务教案.doc
  11. ydui时间组件报错nvalid prop: custom validator check failed for prop “startDate“.
  12. Win 双网卡上网冲突,网络设置
  13. Log4j.properties配置详解
  14. 【笔记】2017电信大数据普惠金融应用案例
  15. 腾讯Bugly工具介绍节选
  16. uni-app 微信小程序启用组件按需注入
  17. 第三方支付接口之微信扫码支付
  18. FTTB+NAT+DHCP+pppoe+CBAC+*** client+Authentication AAA
  19. 手机网页html字体很小的解决办法
  20. 电脑上快速剪辑歌曲的方法

热门文章

  1. vscode配置python 控制台/终端/TERMINAL 不输出/不显示 解决办法
  2. matlabpython建模_参加数学建模用 MATLAB,还是 Python?
  3. linux内核镜像的分层,Docker镜像分层的原理详解
  4. FZU 2169 shadow (用了一次邻接表存边,树形DP)
  5. 夹娃娃_夹娃娃的实用性方法 抓娃娃可以用什么技巧
  6. ORA-01502: 索引或这类索引的分区处于不可用状态 [已解决]
  7. linux服务器如何访问,如何连接一个Linux服务器
  8. yii selenium php,Yii 单元测试用例
  9. exls下载后显示jsp_jsp利用POI直接生成Excel并在页面提示打开下载
  10. CentOS 7笔记yum install epel-release