cherokee,


Cherokee 是什么?


Cherokee 号称是目前最快的 Web 服务器软件,在性能上,甚至比 Nginx 还略胜一筹。与 Apache、Lighttpd、Nginx 等其他同类软件的对比,大家不妨看看这个测试页面。其易用性做得也很不错。
  Cherokee 的功能包括支持 FastCGI、SCGI、PHP、CGI、TLS 及 SSL 加密连接,虚拟主机,授权认证,实时编码,载入均衡,与 Apache 兼容的 log 文件等等。
  Cherokee 内含一个名为 cherokee-admin 的工具,执行后,允许管理员直接通过浏览器进入 http://localhost:9090/ 对其进行管理和配置。比如,开启或关闭服务器,进行一般选项的设定,配置虚拟服务器、信息源、图标、Mime 类型等项目。
Cherokee 下载


下载地址: http://www.cherokee-project.com/downloads.html
Cherokee 安装


mkdir install && cd install
wget http://www.cherokee-project.com/download/0.11/0.11.6/cherokee-0.11.6.tar.gz
tar -zxvf cherokee-0.11.6.tar.gz
cd cherokee-0.11.6
./configure –prefix=/usr/local/cherokee
make
make install


Cherokee 配置


运行管理界面
/usr/local/cherokee/sbin/cherokee-admin -b 192.168.100.10 -p 8080 -C /usr/local/cherokee/etc/cherokee/cherokee.conf
Login:
User: admin
One-time Password: jnA5sivyp9Fk1xQ1


Cherokee Web Server 0.11.6 (Jan 15 2009): Listening on port 8080, TLS disabled,
IPv6 disabled, using epoll, 20480 fds system limit, max. 10233
connections, single thread


说明:
1、-b 192.168.100.10:邦定该IP,只允许从该IP访问管理平台。
2、-p 8080:管理端口
3、-C /usr/local…:配制文件
4、密码是一次性的


启动管理平台支持,是python写的。不然会报:503 Service Unavailable
/usr/local/cherokee/share/cherokee/admin/server.py 4000 /usr/local/cherokee/etc/cherokee/cherokee.conf


然后运行
http://192.168.100.2:8080/
管理界面出来了,如图:


1、Status
显示cherokee服务的基本信息。
2、General
普通设置,包括端口、用户、组、超时等。
3、Virtual Servers
虚拟主机的配置,包括主机克隆、域名、主目录、主机路由、站点编码、gzip压缩、过期、验证等等。
注:如只有一个虚拟主机时,必须设置Virtual Server nickname为’default’
4、Information Sources
消息源,方便多主机配置用。
5、Icons
主机图标管理
6、MIME types
配制主机支持的MIME头支持。
7、Advanced
高级配置,包括最大连接数、线程数、IO缓存等。




nginx,


Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engine X”, 是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器.Nginx是由俄罗斯人 Igor Sysoev为俄罗斯访问量第二的 Rambler.ru站点开发的,它已经在该站点运行超过两年半了。Igor Sysoev在建立的项目时,使用基于BSD许可。


  据说他当初是F5的成员之一,英文主页:http://nginx.net/ 。


  俄罗斯的一些大网站已经使用它超过两年多了, 一直表现不凡,相信想了解nginx的朋友都读过阿叶大哥的利用nginx实现负载均衡.直到2007年4月,俄罗 斯大约有20%左右的虚拟主机是由nignx服务或代理的。Google在线安全博客中统计nginx服务或代理了大约所有Internet虚拟主机的4%。而netcraft的统计显示,nginx服务的主机在过去的一年里以四倍的速度增长。短短的几年里,它的排名已跃进第9。(参见:http://survey.netcraft.com/Reports/200707/ )


   Nginx以事件驱动的方式编写,所以有非常好的性能,同时也是一个非常高效的反向代理、负载平衡。其拥有匹配 Lighttpd的性能,同时还没有Lighttpd的内存泄漏问题,而且Lighttpd的mod_proxy也有一些问题并且很久没有更新。


   因此我打算用其替代Apache应用于Linux服务器上。但是Nginx并不支持cgi方式运行,原因是可以减少因此带来的一些程序上的漏洞。那么我们必须使用FastCGI方式来执行PHP程序。


   现在,Igor将源代码以类BSD许可证的形式发布。Nginx因为它的稳定性、丰富的模块库、灵活的配置和低系统资源的消耗而闻名.业界一致认为它是Apache2.2+mod_proxy_balancer的轻量级代替者,不仅是因为响应静态页面的速度非常快,而且它的模块数量达到Apache的近2/3。对proxy
和 rewrite模块的支持很彻底,还支持mod_fcgi、ssl、vhosts ,适合用来做mongrel clusters的前端HTTP响应。


 nginx做为HTTP服务器,有以下几项基本特性:


处理静态文件,索引文件以及自动索引;打开文件描述符缓冲.
无缓存的反向代理加速,简单的负载均衡和容错.
FastCGI,简单的负载均衡和容错.
模块化的结构。包括gzipping, byte ranges, chunked responses,以及 SSI-filter等filter。如果由FastCGI或其它代理服务器处理单页中存在的多个SSI,则这项处理可以并行运行,而不需要相互等待。
支持SSL 和 TLSSNI.


 Nginx专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率 。它支持内核Poll模型,能经受高负载的考验,有报告表明能支持高达 50,000个并发连接数。


 Nginx具有很高的稳定性。其它HTTP服务器,当遇到访问的峰值,或者有人恶意发起慢速连接时,也很可能会导致服务器物理内存耗尽频繁交换,失去响应,只能重启服务器。例如当前apache一旦上到200个以上进程,web响应速度就明显非常缓慢了。而Nginx采取了分阶段资源分配技术,使得它的CPU与内存占用率非常低。nginx官方表示保持10,000个没有活动的连接,它只占2.5M内存,所以类似DOS这样的攻击对nginx来说基本上是毫无用处的。就稳定性而言,nginx比lighthttpd更胜一筹。


 Nginx支持热部署。它的启动特别容易, 并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。你还能够在不间断服务的情况下,对软件版本进行进行升级。


 Nginx采用master-slave模型,能够充分利用SMP的优势,且能够减少工作进程在磁盘I/O的阻塞延迟。当采用select()/poll()调用时,还可以限制每个进程的连接数。


 Nginx代码质量非常高,代码很规范,手法成熟, 模块扩展也很容易。特别值得一提的是强大的Upstream与Filter链。 Upstream为诸如reverse proxy,与其他服务器通信模块的编写奠定了很好的基础。而Filter链最酷的部分就是各个filter不必等待前一个filter执行完毕。它可以把前一个filter的输出做为当前filter的输入,这有点像Unix的管线。这意味着,一个模块可以开始压缩从后端服务器发送过来的请求,且可以在模块接收完后端服务器的整个请求之前把压缩流转向客户端。


 Nginx采用了一些os提供的最新特性如对sendfile (Linux2.2+),accept-filter (FreeBSD4.1+),TCP_DEFER_ACCEPT (Linux 2.4+)的支持,从而大大提高了性能。


 当然,nginx还很年轻,多多少少存在一些问题,比如:Nginx是俄罗斯人创建,目前文档方面还不是很完善.因为文档大多是俄语,所以文档方面这也是个障碍.尽管nignx的模块比较多,但它们还不够完善。对脚本的支持力度不够。


 这些问题,nginx的作者和社区都在努力解决,我们有理由相信nginx将继续以高速的增长率来分享轻量级HTTP服务器市场,会有一个更美好的未来。










lighttpd





一、Lighttpd简介
       很多人也许会问具有如此“魔力”的LightTPD到底是什么?简单说一下:LightTPD是一个轻量级的Web 服务器,支持FastCGI, CGI, Auth, 输出压缩(output compress), URL重写, Alias等重要功能。它具有非常低的内存开销,cpu占用率低,效能好,以及丰富的模块等特点。其静态文件的响应能力远高于Apache,可谓Web服 务器的后期之秀。


据Netcraft做的数据调查显示,今年一月份全球使用LightTPD的网址为170,000,二月份这个数字达到了7000,000,在短短的一个 月内惊人地增长了400%!在这些网址中,包括YouTub
e、Wikipedia和Meebo等。而且目前为止,使用LightTPD的网址仍在以极高 的比例增长,尤其是欧美等地的网址,许多新兴网站也纷纷选用LightTPD,而且LightTPD在Ruby on Rails社区中尤其受欢迎。


       以Meebo为例。它是一个内置在浏览器内的信息工具,它支持多种信息工具,如Yahoo! Messenger, Windows Live Messenger, ICQ, AIM和Jabber等,每天Meebo要处理至少七千万条信息。这样的一个网站是用的便是LightTPD。


       值得一提的是,Meebo使用的却是Linux服务器,然而它抛弃Apache以及LAMP(Linux+ Apache+ Mysql+ Perl/PHP/Python)的网络构建方式,选择了LightTPD。
                   下图为使用Lighttp的网址增长率


       许多技术专家认为,在Web 服务器中LightTPD比Apache更小更轻量,却拥有比后者更高的性能。虽然LightTPD在Web服务器方面只占很小的市场份额,“但它正极速增长,日后必将是Web服务器领域的有力竞争者。”


二、下面是部署应用时LightTPD在前端相对其他web server的比较:


前端目前已知的可以选择apache, LightTPD, litespeed, nginx, haproxy
1、apache2.2
apache是全球市场占有率最高的web server,超过全球互联网网站50%的网站都用apache。apache2.2 + mod_proxy_balancer是一个非常流行,非常稳定的方案。


使用apache2.2唯一的问题就是apache的性能和后面那些轻量级web server相比,差太远了。一方面在处理静态请求方面apache要比LightTPD慢3-5倍,内存消耗和CPU消耗也高出一个数量级,另一方面 mod_proxy_balancer的分发性能也不高,比haproxy差很远。


2、LightTPD
LightTPD是一个轻量级高性能web server,一个在MySQL Inc工作的德国人写的。性能很好,内存和CPU资源消耗很低,支持绝大多数apache的功能,是apache的绝好替代者。目前LightTPD已经 上升到全球互联网第四大web server,市场占有率仅此于apache,IIS和Sun。


LightTPD唯一的问题是proxy功能不完善,因此不适合搭配mongrel来使用。LightTPD下一个版本1.5.0的proxy模块重写过了,将会解决这个问题。


3、litespeed
和LightTPD差不多,商业产品,收费的。比LightTPD来说,多一个web管理界面,不用写配置文件了。litespeed专门为单机运行的 RoR开发了一个lsapi协议,号称性能最好,比httpd和fcgi都要好。他的proxy功能比LightTPD完善。


litespeed的缺点我却认为恰恰是这个lsapi。因为lsapi不是web server启动的时候启动固定数目的ruby进程,而是根据请求繁忙程度,动态创建和销毁ruby进程,貌似节省资源,实则和apache2.2进程模 型一样,留下很大的黑客攻击漏洞。只要黑客瞬时发起大量动态请求,就会让服务器忙于创建ruby进程而导致CPU资源耗尽,失去响应。


当然,litespeed也支持httpd和fcgi,这个和LightTPD用法一样的,到没有这种问题。


4、nginx
一个俄国人开发的轻量级高性能web server,特点是做proxy性能很好,因此被推荐取代apache2.2的mod_proxy_balancer,来和mongrel cluster搭配。其他方面和LightTPD到差不多。


要说缺点,可能就是发展的时间比较短,至今没有正式版本,还是beta版。没有经过足够网站的验证。


5、haproxy
就是一个纯粹的高性能proxy,不处理静态资源的,所有请求统统分发到后端。


三、如何选择:


JavaEye为什么用LightTPD + fcgi呢?原因如下:


1) LightTPD发展了好几年了,市场占有率也相当高,是一个经过实践检验的server,它的文档也很全;而nginx还没有经过足够的市场检验,文档也很缺乏
2) JavaEye的ruby进程和web server在一台机器上面跑,通过unix socket使用fcgi协议通讯可以避免tcp的网络开销,其通讯速度比使用tcp socket使用http协议通讯要快一些。


什么场合使用haproxy?


大规模部署,例如你的RoR应用到十几台服务器上面去,你用haproxy会更好,可以方便的添加删除应用服务器节点,proxy性能更好。


这些也是我为什么在LAMPR中加入LightTPD的原因。
————————————————
版权声明:本文为CSDN博主「vivian_1985」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/vivian_1985/java/article/details/5523339