想转行,最课程的35岁软件测试转行行不行?有知道的朋友吗?

一、安装 :
easy_install supervisor
验证是否安装成功:
ubuntu@yee:~$ echo_supervisord_conf
二、配置:
root@yee:~# echo_supervisord_conf &
/etc/supervisord.conf
我的需求是,使用supervisord来管理 redis ,tornado 。
vim /etc/supervisord.conf
添加redis :
[program:redis]
command = /usr/local/redis/bin/redis-server
autostart = true
autorestart = true
startsecs = 3
添加 tornado :
[group:tornadoapp]
programs=tornado-8001,tornado-8002
[program:tornado-8001]
command = python /home/ubuntu/project/server.py --port=8001
directory=/home/ubuntu/project
autorestart=true
redirect_stderr=true
stdout_logfile=/home/ubuntu/project/logs/tornado-8001.log
stdout_logfile_maxbytes=500MB
stdout_capture_maxbytes=1MB
stdout_events_enable=false
loglevel=warn
[program:tornado-8002]
command = python /home/ubuntu/project/server.py --port=8002
directory=/home/ubuntu/project
autorestart=true
redirect_stderr=true
stdout_logfile=/home/ubuntu/project/logs/tornado-8002.log
stdout_logfile_maxbytes=500MB
stdout_capture_maxbytes=1MB
stdout_events_enable=false
loglevel=warn
可以使用supervisorctrl 来查看状态 。
阅读(...) 评论()2072人阅读
Linux(3)
python(4)
web后台开发
tornado + supervisor + nginx 一直是比较流行用于部署web生产环境
&&& Tornado 是 FriendFeed 使用的可扩展的非阻塞式 web 服务器及其相关工具的开源版本,是属于facebook的一个开源项目。Tornado 和现在的主流 Web 服务器框架(包括大多数 Python 的框架)有着明显的区别:它是非阻塞式服务器,而且速度相当快。得利于其 非阻塞的方式和对 epoll 的运用,Tornado 每秒可以处理数以千计的连接,这意味着对于实时 Web 服务来说,Tornado 是一个理想的 Web 框架。我们开发这个 Web
服务器的主要目的就是为了处理 FriendFeed 的实时功能 ——在 FriendFeed 的应用里每一个活动用户都会保持着一个服务器连接。参考文档&&&
对于阻塞型和非阻塞型不是很了解的可以参考:
至于nginx的优势,肯定需要跟apache对比下:
至于supervisor的优势,一句话,高效便捷地管理多个后台服务进程,可能需要自己用了之后才能有所体会;
tornado安装:
&&&& 上官网或者github下载最新的或者较新版本的tornado,下面是我下载的版本
tar xvzf tornado-3.1.tar.gz
cd tornado-3.1
python setup.py build
sudo python setup.py install
执行如上命令即可完成安装,如果有什么问题或者想更了解过程,可以参考下:
或者各大论坛的FAQ
然后就是hellworld的测试,详情参考:
我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
更多可以参考
紧接着,我们要通过nginx来实现反向代理:
&&& 那么什么是反向代理呢?
&&& 简单说就是A服务器作为代理服务器,然后讲请求分发到一个服务器群B,由拥有多台服务器的集群B来处理请求,
然后再将请求发送会代理服务器A,然后由A发给用户。
如果需要了解更多的关于反向代理的,可以参考博文:
这篇博文有对正向代理和反向代理做比较详尽的介绍与对比,有利于帮助理解。
&&& 然后提到反向代理,这个概念总会有一个如影随形的跟着一个基友&负载均衡&,
这个概念直接百度知道就可以有比较好的理解了:
nginx 可以设置对外的监听服务端口,比如8888
上面的例子可以知道我们能够通过tornado和supervisor来启动服务进程并管理,比如上面的interview
这里说明下,我们是为了体验下,所以都是在本机上测试,如果是跨级只是ip的设置区别而已
我们只需要修改nginx的配置文件,如果我们需要site-available建一个站点,然后建立在site-enabled中
建立软连接,跟apache中新建站点的流程一样,不一样的是配置:
具体可以参考:(里面介绍了不同策略的负载均衡)
梳理下流程:
1我们在nginx上部署站点,开放监听端口8888
2tornado编写服务器程序,可以是多个程序(分别绑定ip和端口,注意会不会产生端口冲突)
3supervisor 管理tornado编写负载均衡服务器进程
4在nginx上的站点的配置文件中配置要转发到的服务器(就是我们步骤2的ip和端口)
不安分的思考:
提到反向代理,我们很容易会接触一个叫做网络负载均衡的概念,这个概念可能会消除我们之前对ip的误解。
网络负载均衡可以让客户端用一个逻辑Internet名称和虚拟IP地址(又称群集IP地址)访问群集,同时保留每台计算机各自的名称
那么何谓虚拟IP,说通俗就是这个IP不是分配给一个真实的具体计算机,虚拟IP的原理可以参考博文
我们可能会遇到ARP(地址解析协议)这个概念,这个直接百度百科也可以有所了解()
通过上面,我就清楚了,代理转发的不一定是一台真实存在的服务器,也就是用户面对的ip不一定是真正的主机,可能是其他主机(群),这就跟云主机有点类似了.
至于反向代理的一个问题,就是代理服务器可能会成为网站的瓶颈,可见一段描述,(从这个层面上也可以大概知道apache和nginx在作为反向代理方面的优劣差异):
  实现这个反向代理能力并不能算是一个特别复杂的任务,但是在负载均衡中要求特别高的效率,这样实现起来就不是十分简单的了。每针对一次代理, 代理服务器就 必须打开两个连接,一个为对外的连接,一个为对内的连接,因此对于连接请求数量非常大的时候,代理服务器的负载也就非常之大了,在最后反向代理服务器会成 为服务的瓶颈。例如,使用Apache的mod_rproxy模块来实现负载均衡功能时,提供的并发连接量受Apache本身的并发连接数量的限制。一 般来讲,可以使用它来对连接数量不是特别大,但每次连接都需要消耗大量处理资源的站点进行负载均衡,例如搜寻。
恩,按照惯例,需要水一句:之前再给大一上课的时候也鼓励他们通过记录的方式来学习,夸张一点,甚至连一道高数题,线性代数都可以记录成博客,因为一方面是你在梳理总结自己的思考与学习过程,另一方面公开分享自己的想法也是一种监督和一种快乐。
&&相关文章推荐
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:21270次
排名:千里之外
原创:20篇
(10)(1)(1)(1)(3)(3)(1)[后端]nginx+tornado+supervisor提升并发量 @ 备忘
[后端]nginx+tornado+supervisor提升并发量 @ 备忘
发布时间: 13:07:27
编辑:www.fx114.net
本篇文章主要介绍了"[后端]nginx+tornado+supervisor提升并发量 @ 备忘 ",主要涉及到[后端]nginx+tornado+supervisor提升并发量 @ 备忘 方面的内容,对于[后端]nginx+tornado+supervisor提升并发量 @ 备忘 感兴趣的同学可以参考一下。
部署有nginx的机器每一个核都会启动一个worker进程,用来接受处理客户端发来的请求。为了做负载均衡,worker会根据一定的规则将请求分发到后面的某一台机器上。由于我的nginx机器后面只有一台四核机器,所以我是这样分发请求的,配置文件中相应位置这样写:
upstream news_baijia{
server 0.0.0.0:9999;
server 0.0.0.0:9998;
server 0.0.0.0:9997;
server 0.0.0.0:9996;
这相当于将请求分发到0.0.0.0这台机器的四个端口中的某一个端口上去了。而在0.0.0.0这台机器上呢,启动了四个tornado的service的实例(是同一个web app),分别监听不同的四个端口。为什么监听四个端口呢?因为这台机器是四核,每个核运行一个进程,多进程处理请求。
然后再使用supervisor启动并监控这四个进程就好了。
一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!
二、互相尊重,对自己的言论和行为负责。
本文标题:
本页链接:最近几天闲来无事,用Python的Tornado框架写了个应用(),应用本身的实现很简单,代码也已经开源了,有兴趣的同学可以查看 ,里面有更加具体的介绍。今天顺便写一下如何在Linux下部署一个简单的基于Nginx+Tornado+Supervisor的Python web服务。
Tornado:官方介绍,是使用Python编写出来的一个极轻量级、高可伸缩性和非阻塞IO的Web服务器软件,著名的 Friendfeed 网站就是使用它搭建的。官方网站:
Supervisor:一个服务(进程)管理工具,主要用于监控我们的服务器上的服务,并且在出现问题时重启之。
Nginx:没什么好说的啦,作为Web服务器,在这里主要利用它做反向代理。
整个的工作流程就是客户端访问Nginx主机,由Nginx反向代理到后端Tornado进程的服务器,而Tornado进程则由Supervisord管理。和其它常见的web服务架构相似,比如Nginx + PHP-FPM。
以下示例都是基于Linux发行版CentOS 6.x。
Tornado安装和配置:
首先让我们来实现一个简单的基于Tornado web server的应用。Tornado可以在命令行中直接&pip 或者 easy_install 安装,或者在官网下载源代码的压缩包,解压后整个包放入Python的库目录中即可。
现在我们来新建一个index.py文件,假定该文件位于 /var/www,编辑代码如下:
import tornado.ioloop
import tornado.web
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write(&Hello, world&)
application = tornado.web.Application([
(r&/&, MainHandler),
(r&/index.py&, MainHandler),
if __name__ == &__main__&:
application.listen(8888)
tornado.ioloop.IOLoop.instance().start()
index.py文件作为应用入口,可以直接在命令行使用python解释器执行之:
$ python index.py
这个时候,我们就可以用服务器IP+端口8888的方式访问到我们的Hello world应用了,比如127.0.0.1:8888。
假如执行上述命令的时候出错,比如报:ImportError: No module named pkg_resources,那么可能你的Python安装路径不正确,可以尝试重新配置,执行:
$ curl http://python-distribute.org/distribute_setup.py | python
Supervisor安装和配置:
每次手动在命令行启动应用是比较麻烦的,我们还需要一个能够方便的管理服务进程的工具,包括自动重启进程等,而Supervisor的作用在这里就可以体现了。我们使用它来管理这个Tornado&web server相关的进程。首先安装之:
$ easy_install supervisor
安装完毕后,生成Supervisor的配置文件并编辑:
$ echo_supervisord_conf & /etc/supervisord.conf
$ vim /etc/supervisord.conf
在文件末尾加入:
[program:hello]
command=python /var/www/index.py --port=8888
directory=/var/www
autorestart=true
redirect_stderr=true
这段配置主要作用就是在Supervisor启动的时候自动启动我们的hello应用对应的Tornado&web server进程并纳入管理,具体配置项的意义,可以参考Supervisor官方文档。配置完毕后,我们就可以启动管理了:
$ supervisorctl start&all
Nginx安装和配置:
首先安装Nginx,如果已安装可以忽略:
$ rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
$ yum install nginx
接下来是Nginx的配置,我们需要使用Nginx来将web请求代理到Tornado web server,新建配置文件:
$ vim /etc/nginx/conf.d/tornado.conf
输入如下内容(参考):
upstream tornado {
server 127.0.0.1:8888;
root /var/
index index.py index.
location / {
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.py/$1
location ~ /index\.py {
proxy_pass_header S
proxy_set_header Host $http_
proxy_set_header X-Real-IP $remote_
proxy_set_header X-Scheme $
proxy_pass http://
重启Nginx:
$ service nginx restart
现在就可以使用Nginx配置中指定的域名直接访问我们的hello应用了。
你的名称:
你的邮箱:
评论内容:

我要回帖

更多关于 软件测试课程设计 的文章

 

随机推荐