Tornado + supervisor + nginx 环境部署与初体验

3 篇文章 0 订阅
1 篇文章 0 订阅
tornado + supervisor + nginx 一直是比较流行用于部署web生产环境
    Tornado 是 FriendFeed 使用的可扩展的非阻塞式 web 服务器及其相关工具的开源版本,是属于facebook的一个开源项目。Tornado 和现在的主流 Web 服务器框架(包括大多数 Python 的框架)有着明显的区别:它是非阻塞式服务器,而且速度相当快。得利于其 非阻塞的方式和对 epoll 的运用,Tornado 每秒可以处理数以千计的连接,这意味着对于实时 Web 服务来说,Tornado 是一个理想的 Web 框架。我们开发这个 Web 服务器的主要目的就是为了处理 FriendFeed 的实时功能 ——在 FriendFeed 的应用里每一个活动用户都会保持着一个服务器连接。参考文档http://www.tornadoweb.org/en/stable/   https://github.com/facebook/tornado
对于阻塞型和非阻塞型不是很了解的可以参考:http://blog.csdn.net/bopzhou/article/details/6909495

至于nginx的优势,肯定需要跟apache对比下:http://weilei0528.blog.163.com/blog/static/206807046201321810834431/

至于supervisor的优势,一句话,高效便捷地管理多个后台服务进程,可能需要自己用了之后才能有所体会;


tornado安装:
     上官网或者github下载最新的或者较新版本的tornado,下面是我下载的版本
https://pypi.python.org/packages/source/t/tornado/tornado-3.1.tar.gz下载
tar xvzf tornado-3.1.tar.gz
cd tornado-3.1
python setup.py build
sudo python setup.py install
执行如上命令即可完成安装,如果有什么问题或者想更了解过程,可以参考下:
http://blog.csdn.net/yorkcai/article/details/9323269
http://www.tornadoweb.cn/
或者各大论坛的FAQ

然后就是hellworld的测试,详情参考:
http://blog.csdn.net/yorkcai/article/details/9323269
我tornado方面是参考上面这位博主的


Supervisor:

如果上面没什么问题了,就可以搞搞supervisor了。
supervisor 是一个守护进程管理软件,是把linux上众多的守护进行集中在supervisor  进行统一的管理
linux 上一建安装的方式很多,我直接尝试成功的是:
sudo apt-get  install  supervisor
安装后会有:
/usr/bin/supervisord    --supervisor服务守护进程
/usr/bin/supervisorctl  --supervisor服务控制程序,比如:status/start/stop/restartxx等
/etc/supervisor/supervisord.conf   --配置文件,定义服务名称以及接口等等

安装后还需要配置文件,我们配置一个守护进程:

我们在/etc/supervisor/conf.d文件添加文件interview.conf,里面进行配置

[program:interview] #设置守护进程名
command=python /home/www/python/interview/web.py   #设置command 路径
autorstart=true    #是否自动启动
stdout_logfile=/home/www/python/interview/interview.log    #设置日志路径

在终端敲命令: sudo/etc/init.d/supervisor  start--启动supervisor服务
在终端敲命名: sudo supervisorctl  status   interview  --获取interview  服务的状态,因为是autorstart,这里已经启动了
在终端敲命名: sudo supervisorctl   stop   interview --停止interview  服务
在终端敲命名: sudo supervisorctl stop interview  --再次停止interview  ,会有错误信息
在终端敲命名: sudo supervisorctl  start  interview  --启动interview  服务interview  :started
更多可以参考http://supervisord.org




紧接着,我们要通过nginx来实现反向代理:

    那么什么是反向代理呢?
    简单说就是A服务器作为代理服务器,然后讲请求分发到一个服务器群B,由拥有多台服务器的集群B来处理请求,
然后再将请求发送会代理服务器A,然后由A发给用户。
如果需要了解更多的关于反向代理的,可以参考博文:http://z00w00.blog.51cto.com/515114/1031287
这篇博文有对正向代理和反向代理做比较详尽的介绍与对比,有利于帮助理解。

    然后提到反向代理,这个概念总会有一个如影随形的跟着一个基友"负载均衡",
这个概念直接百度知道就可以有比较好的理解了:zhidao.baidu.com/link?url=48y3VNHefLgonyQy45kJmr7z2u3_G6WyreDSdXcxmUhRAI_U4tzenTO-IKqqLj3onbdzp_SCIoFkugDvyR6sN_

nginx 可以设置对外的监听服务端口,比如8888
上面的例子可以知道我们能够通过tornado和supervisor来启动服务进程并管理,比如上面的interview
这里说明下,我们是为了体验下,所以都是在本机上测试,如果是跨级只是ip的设置区别而已
我们只需要修改nginx的配置文件,如果我们需要site-available建一个站点,然后建立在site-enabled中
建立软连接,跟apache中新建站点的流程一样,不一样的是配置:
具体可以参考:dreamfire.blog.51cto.com/418026/1158301/(里面介绍了不同策略的负载均衡)


梳理下流程:

1我们在nginx上部署站点,开放监听端口8888
2tornado编写服务器程序,可以是多个程序(分别绑定ip和端口,注意会不会产生端口冲突)
3supervisor 管理tornado编写负载均衡服务器进程
4在nginx上的站点的配置文件中配置要转发到的服务器(就是我们步骤2的ip和端口)




不安分的思考:
提到反向代理,我们很容易会接触一个叫做网络负载均衡的概念,这个概念可能会消除我们之前对ip的误解。
网络负载均衡可以让客户端用一个逻辑Internet名称和虚拟IP地址(又称群集IP地址)访问群集,同时保留每台计算机各自的名称
那么何谓虚拟IP,说通俗就是这个IP不是分配给一个真实的具体计算机,虚拟IP的原理可以参考博文blog.csdn.net/whycold/article/details/11898249
我们可能会遇到ARP(地址解析协议)这个概念,这个直接百度百科也可以有所了解(http://baike.baidu.com/link?url=fqhghYO9L72Wrjj9mc0t7TryHBb7hlwlw7u8mOSZB4ukyMBVI_z0w8m1AZf5YPHBKpXZXD-SehTwhIXhLx8oDONLWL4s-T4XDLutUQGpBom)

通过上面,我就清楚了,代理转发的不一定是一台真实存在的服务器,也就是用户面对的ip不一定是真正的主机,可能是其他主机(群),这就跟云主机有点类似了.


至于反向代理的一个问题,就是代理服务器可能会成为网站的瓶颈,可见一段描述,(从这个层面上也可以大概知道apache和nginx在作为反向代理方面的优劣差异):

  实现这个反向代理能力并不能算是一个特别复杂的任务,但是在负载均衡中要求特别高的效率,这样实现起来就不是十分简单的了。每针对一次代理, 代理服务器就 必须打开两个连接,一个为对外的连接,一个为对内的连接,因此对于连接请求数量非常大的时候,代理服务器的负载也就非常之大了,在最后反向代理服务器会成 为服务的瓶颈。例如,使用Apache的mod_rproxy模块来实现负载均衡功能时,提供的并发连接量受Apache本身的并发连接数量的限制。一 般来讲,可以使用它来对连接数量不是特别大,但每次连接都需要消耗大量处理资源的站点进行负载均衡,例如搜寻。


恩,按照惯例,需要水一句:之前再给大一上课的时候也鼓励他们通过记录的方式来学习,夸张一点,甚至连一道高数题,线性代数都可以记录成博客,因为一方面是你在梳理总结自己的思考与学习过程,另一方面公开分享自己的想法也是一种监督和一种快乐。






  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值