小默

SCGI

=============
Apache+SCGI
 
Apache 前端处理用户请求,负责静态页面
mod_scgi 充当 scgi client, 将http请求中动态部分发给 scgi runner。
=============
参考:http://www.pc51.net/server/web/apache/2006-12-21/334.html
关注SCGI,一种更佳的高性能CGI方案
目前,rubyonrails可以采用服务器方案有: 
1。 Webrick 
2。 Apache(lighttpd) + CGI 
3。 Apache+FastCGI 
4。 Lighttpd + FastCGI 
5。 Apache(lighttpd)+SCGI 

其中,Webrick是一个玩具,不支持并发请求,只能作为开发工具进行调试。而CGI方式就直接踢出,在性能上是难以忍受的。 FastCGI虽然性能卓越(据称是传统CGI程序的5倍),但是在Apache中非常不稳定,经常会出现500错误。相对来说Lighttpd+FastCGI的方案比较稳定,性能也不错,但lighttpd毕竟不是一个十分流行的http服务器,大部分人都不熟悉此服务,扩展模块也相对较少,另外似乎还有些bug,没有apache那么健壮。 
在这几个方案中能够兼具高性能和高稳定性的莫过于Apache+SCGI方案。SCGI是用来替换传统CGI的新的CGI协议,以Client/Server的方式实现,具有和FastCGI一样优秀的性能,同时又在稳定性方面远远超过FastCGI, 该方案在Python Web领域应用较多。 
一般搭建一个SCGI环境需要准备,Apache,mod_scgi, scgi runner等软件,其中apache做为前端http服务器处理用户请求并且负责静态文件,而mod_scgi是apache的一个扩展模块,该模块实现了SCGI协议的client部分,负责将http请求中的动态部分发给SCGI服务器,即SCGI Runner,在rubyonrails社区,已经有人开发了SCGI Rails Runner--SRR,只需要将一个脚本放你的rails程序的script目录中,运行该脚本就会建立一个SCGI Server,等待并且处理SCGI Client(mod_scgi)转发的请求。 
对SCGI有兴趣的朋友,可以查看这些内容: 
http://www.mems-exchange.org/software/scgi/ 
http://www.zedshaw.com/projects/scgi_rails/ 

另外,由于RubyOnRails特殊的url rewrite机制,官方目前提供的apache配置模板可能会使一些看起来是静态文件的url无法被rubyonrails处理,如typo里的rss: /xml/rss.xml,不过,rails社区的Kyle等人已经搞出了两个方案,而SRR的作者也打算采用他们的方案。当然,一般情况下,使用官方的配置模板就已经能够处理大部分url。对这个问题有兴趣的朋友可以在rails的邮件列表中搜索:scgi apache, 最近的几篇邮件应该有提到。

posted on 2010-08-03 01:01 小默 阅读(1421) 评论(0)  编辑 收藏 引用 所属分类: Network


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理


导航

统计

留言簿(13)

随笔分类(287)

随笔档案(289)

漏洞

搜索

积分与排名

最新评论

阅读排行榜