Flask采用Virtualenv+Supervisor+Nginx部署应用

--

首先是概念解释

  1. WSGI服务器,负责我们的app与服务器的交互,常用的有Gunicorn
  2. Web服务器,是个HTTP服务器,就相当于tomacat于Java,常用的有Nginx

Web服务器中,Nginx是一款面向性能设计的HTTP服务器,相较于Apache、lighttpd具有占有内存少,稳定性高等优势。

部署工具:

  1. Virtualenv,用户创建独立的虚拟的Python运行环境,可以解决版本,依赖等问题
  2. Supervisor,负责管理应用:应用的开启,关闭,以及多应用的管理等

Virtualenv

安装
sudo pip install virtualenv
使用
#创建虚拟环境
virtualenv venv #启动虚拟环境
source venv/bin/activate #停止虚拟环境
deactivate

Supervisor

安装
sudo apt-get install supervisor
使用

配置Supervisor的配置文件的路径:/etc/supervisor/conf.d/*conf

cd /etc/supervisor/conf.d/*conf

在这里目录下,我们创建我们应用的配置文件,这样Supervisor才能读取到

sudo vim app.conf

里面的内容输入(内容其实就是执行我们的Python文件):

[program:app]
command = python /home/tengfei/api01/test/TestTo/TODO-orm/app.py //注,这个配置是和后文中Nginx配置好后对象的9000的转发端口执行的操作
[program:todo]
command = /home/tengfei/api01/test/TestTo/TODO-orm/venv/bin/gunicorn -b 127.0.0.1:9000 app:app
directory = /home/tengfei/api01/test/TestTo/TODO-orm

更改配置文件后,要让supervisor的配置文件生效,执行

supervisorctl reload

启动supervisor:

sudo service supervisor start

重启:

sudo service supervisor restart

查看supervisor程序当前的状态

sudo supervisorctl

这里面可以使用status指令来查看程序的运行状态

app名字:就是刚才配置配置文件中[program:app]的,比如我这里输入 start app就可以了,以后同上:
start app名字 # 启动app
stop app # 停止app

需要注意的是supervisor发生错误的话,需要它的日志中才能看到

supervisor错误日志地址:
/var/log/supervisor/supervisord.log

参考ubuntu安装和使用supervisor

Ubuntu安装Curl的方法

Nginx

安装
	sudo apt-get update
sudo apt-get install nginx
配置

nginx的也是把程序运行需要的配置文件放到指定的目录下即可

cd /etc/nginx

/etc/nginx子目录下,有两个文件要格外关注关注一下:

sites-available  :可用的配置文件
sites-enabled :生效的配置文件

1:先在sites-available 目录下创建配置文件vim api_app

里面写上:

# api_app内容
server {
listen 81; location /static {
alias /home/tengfei/api01/test/TestTo/TODO-orm/;
} location / {
proxy_pass http://127.0.0.1:9000;
}
}

注,listen 81;:意思是nginx监听的是81端口,我开始监听80端口,结果和默认的冲突了;location /static:是把静态文件转发到后文中的目录下;location / :是把动态请求转发到本机(服务器)的9000端口,上面文件的内容的格式可自行百度。我开始

然后创建软连接到sites-enabled

sudo ln -s ../sites-available/api01_app .

然后重新启动nginx

sudo service nginx reload

//这代表nginx重启成功
* Reloading nginx configuration nginx [ OK ]
使用

启动

sudo service nginx restart

重启

sudo service nginx reload

查看nginx的状态

sudo service nginx status

参考:How To Install Nginx on Ubuntu 14.04 LTS

gunicorn

安装

apt-get install gunicorn

使用

gunicorn -b 0.0.0.0:8080 run:app

尝试在虚拟环境中运行一下程序,看看是否可以成功

//注意下面语句前面的run是指运行的python文件的的名字为run.py的话,执行run:app,如果为app.py那就是app:app

参考文档

Ubuntu 安装mysql和简单操作

“error: command 'x86_64-linux-gnu-gcc' failed with exit status 1” in virtualenv

ubuntu下mysql-python模块的安装

how to install the SQLALchemy on the ubuntu?


声明本文内容来源于:Flask应用部署与运维

特地感谢极客学院的shin0922老师,真的受益匪浅,如果涉嫌侵权,请告知我,我将删除文章

Flask采用Virtualenv+Supervisor+Nginx部署应用的更多相关文章

  1. CentOS下实现Flask + Virtualenv + uWSGI + Nginx部署

    一.项目简介 在本文中,将一步一步搭建一个简单的Flask + Virtualenv + uWSGI + Nginx 架构的Web服务,可以作为新手的学习也可作为记录备忘. 如果你安装好了环境并有一定 ...

  2. ubuntu下python+tornado+supervisor+nginx部署

    由于项目需要,老师让我写一个小web系统,之前都是用java写web,想到自己最近学机器学习要用python,所以用python来写一下,此外,因为想用点新东西,也介于程序比较小,所以考虑用mongo ...

  3. nginx+uwsgi+flask+supervisor 项目部署

    环境 - Linux: Ubuntu 16.04 - uWSGI 2.0.18 - Flask 1.0.2 - supervisor 3.2.0 - nginx/1.8.1 首先区分几个概念 WSGI ...

  4. Flask + Gunicorn + Nginx 部署

    最近很多朋友都在问我关于 Flask 部署的问题,说实在的我很乐意看到和回答这样的问题,至少证明了越来越多人开始用 Flask 了. 之前我曾发表过一篇在 Ubuntu 上用 uwsgi + ngin ...

  5. nginx+uWSGI+django+virtualenv+supervisor发布web服务器

    nginx+uWSGI+django+virtualenv+supervisor发布web服务器   导论 WSGI是Web服务器网关接口.它是一个规范,描述了Web服务器如何与Web应用程序通信,以 ...

  6. 通过Nginx部署flask项目

    用Flask开发之后,很多人,喜欢用nohup python manage.py & 这样的形式,放到后台运行,其实这样只是个发开模式,很简陋,无法支持并发,进程监控等功能.所以采用nginx ...

  7. Linux - nginx+uWSGI+django+virtualenv+supervisor发布web服务器

    目录 Linux - nginx+uWSGI+django+virtualenv+supervisor发布web服务器 crm django项目部署流程 使用supervisro启动uwsgi,退出虚 ...

  8. 使用Flask+uwsgi+Nginx部署Flask正式环境

    环境准备 在开始正式讲解之前,我们将首先进行环境准备. Step1:安装Python,pip以及nginx: sudo apt-get update sudo apt-get install pyth ...

  9. 使用virtualenv, uwsgi, nginx来布署flask

    本文讲述了怎样使用virtualenv, uwsgi, nginx来布署flask的步骤. 升级软件包 运行下面命令,保证你的机器安装了最新的软件包. sudo apt-get update sudo ...

随机推荐

  1. 在ubuntu16上搭建rabbitMQ环境

    在ubuntu16上搭建rabbitMQ环境 安装rabbitMQ apt-cache pkgnames | grep rabbitmq apt-get install rabbitmq-server ...

  2. maven+struts2环境搭建

    首先在struts2.xml文件配置一个包,在包中配置一个action,新建action,新建视图,在action中定义由method定义的方法,这个方法一定要返回String类型,返回的是视图的名称 ...

  3. Leetcode 229.求众数II

    求众数II 给定一个大小为 n 的数组,找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素. 说明: 要求算法的时间复杂度为 O(n),空间复杂度为 O(1). 示例 1: 输入: [3,2,3] 输出: ...

  4. 服务器端架构及实战 — C#分享

    简介 此文是我2008年读研究生期间做的C#项目技术分享,给计算机专业学生的一些经验分享. 当时工作2年后读研. 计算机基础了解及介绍 了解计算机的核心课程和大家的理解 二进制的历史和原理 数字逻辑及 ...

  5. Hadoop JVM调整解决 MapReduce 作业超时问题

    摘要:由于业务需要,在mapreduce汇总时需要关联两个基础表,一个60M左右,不影响mr运行,另一个表,大小约为380M,行数为1700万行左右,在默认配置下,一旦加载这个数据就会在reduce阶 ...

  6. 手动扩大栈内存,让AC无忧

    http://blog.csdn.net/shahdza/article/details/6586430 还在因为 怕 g++ 提交时间很慢,但是用C++ 交又怕栈溢出??? 我们都知道,如果代码里有 ...

  7. xftp向ubuntu传输文件错误

    xftp向ubuntu传输文件错误原因: 登陆用户对文件夹没有权限. 解决方法:授予权限 chmod 777 该目录名

  8. POJ1256 Anagram

    Time Limit: 1000MS   Memory Limit: 10000KB   64bit IO Format: %lld & %llu Submit Status Descript ...

  9. 【BZOJ1430】小猴打架(Prufer编码)

    题意:求n个点带编号生成树的不同加边序列个数 n<=10^6 思路: WJMZBMR:额.首先他们打架的关系是一颗无根树,就有n^(n-2)种情况,还有打架的顺序,是(n-1)!种,乘起来就可以 ...

  10. zookeeper学习0

    参考文献: 5分钟让你了解 ZooKeeper 的功能和原理 Zookeeper专题——1.分布式事务(a概述) Zookeeper专题——2.分布式锁-基于Zookeeper的分布式锁