`

RoR部署相关参考

 
阅读更多
Ruby on Rails的部署方案基本上都是由两层结构组成,前端做请求的分发,后端以多个Ruby进程接受并处理请求,主要的差别便是其中的通讯协议,比如使用FastCGI 或者是HTTP.这里讨论的局限于一台服务器,所以我不称之为架构方案,而仅仅是部署配置方案。
前端的选择:

   Apache
 
     Apache功能十分强大,稳定性也十分好,是全球市场占有率最高的Web服务器。与它搭配的Rails部署方案也有很多,如:
     Apache+mod_ruby:类似于mod_php、mod_python,将Ruby解释器作为一个模块加载到Apache中。(mod_ruby已经停止更新,所以并不流行)
     Apache+mod_fastcgi或Apache+mod_fcgid,通过FastCGI协议与Rails进程通讯。(mod_fastcgi由于设计有缺陷因此仅推荐使用mod_fcgid)
     Apache2.2 + mod_proxy_balancer:使用反向代理负载均衡器,通过HTTP与后端的Ruby Web服务器通讯,如Mongrel/Thin/Ebb等。
     Apache2 + Passenger (mod_rails) :新兴的模块方式,部署方式十分简单,大致的方式和FastCGI差不多,只不过与后台进程间的通讯协议使用了它自己的协议。

     Apache的一大问题就是Apache的性能和一些轻量级新秀Web服务器相比差很多,原因在于Apache到目前为止仅有prefork(进程)模式和worker(线程)模式的MPM是稳定的,这两种工作方式每服务一个链接,就需要创建一个进程或线程,而新兴的轻量级Web服务器,则都很好地利用内核的事件机制提高性能,极大地减少了线程或进程数量,而Apache的event(事件)模式的MPM依然在开发中。例如,Apache的请求处理速度、并发处理能力都比Lighttpd慢3-5倍,内存消耗和CPU消耗也高出很多。另一个问题是,mod_proxy_balancer虽然功能强大,但分发性能不高,比HAproxy或Nginx差很多。

     基于这些问题,所以Apache+FastCGI/mod_proxy_balancer的部署方案并不流行,然而新兴的Passenger由于部署方式出奇简单,使得Apache可能会重新在Rails部署上再次占据一席之地。

   Lighttpd
     轻量级高性能Web服务器,服务静态文件的性能非常高。目前的稳定版本Lighttpd1.4中的反向代理模块有所缺陷,此模块会在1.5中全部重写并提供更好的负载均衡算法,可以对基于FastCGI、HTTP、AJP、SCGI的后端进行请求分发。Lighttpd+FastCGI是目前非常流行的一种部署方式,国内著名的JavaEye便采用的这种方式,JavaEye 负责人之一Robbin对Lighttpd+FastCGI的方式推崇备至。


   Nginx
     Nginx也是一个轻量级高性能的Web服务器/反向代理负载均衡器。Nginx也支持FastCGI,但不像Lighttpd 1.5支持对FastCGI后端的负载均衡调度。Nginx+Mongrel的方式受到很多人推荐。


   HAproxy
     HAproxy是一个纯粹的反向代理均衡器,非常小巧,基于事件机制。它不仅可以做HTTP反向代理,还可以作TCP的转发,所以同样可以对FastCGI做负载均衡。在做HTTP反向代的同时可以对请求作一些修改控制。在ThoughtWorks推出的Rubyworks这个Rails应用套件中用到了它,原因是它能很方便地限制到后端服务器的链接数量。但HAproxy不是Web服务器,它不能处理静态文件。


后端的选择:

  后端Rails的运行方式可以通过FastCGI或者是Ruby应用服务器的方式,CGI和mod_ruby已经不推荐。可以选的Ruby服务器有有:

  WEBrick

    WEBrick是Ruby标准库中自带的默认HTTP服务器,完全使用Ruby写成,性能较差。利用了Ruby的线程来服务并发的链接。有人写了利用事件机制来提高性能的补丁,由于应用少,不在讨论范围。

  Mongrel

    目前最为成熟Ruby应用服务器。使用了C++写的HTTP头解析器,所以具有较好的性能,它同样利用了Ruby的线程机制来服务并发的链接。Mongrel的优点是稳定,兼容性好,很多平台上都可以使用,包括JRuby。Swiftiply小组还写了一个利用EventMachine的Mongrel修改版,称之为Evented Mongrel,使用单线程、事件驱动方式。

  Thin

    利用事件驱动机制的Ruby应用服务器,并借用了Mongrel的HTTP头解析器,事件机制的部分同样是利用了EventMachine。相比Mongrel来说,稳定性和兼容性略差。例如,我在CentOS 3.2的平台上编译后启动便崩溃。

  Ebb

    又一个高性能的Ruby应用服务器,有多种工作模式,可以使用事件驱动机制,也可以使用线程模式。据说线程模式服务Merb(另一个Ruby的Web应用框架)可以达到更好的性能。和Thin一样,由于刚出现不久,还不是非常稳定。它要求Glibc 2以上版本,所以老版本的Linux无法使用,另外我在自己的Ubuntu 8.04上编译的版本在运行中无法正常接受链接,所以在本文中没有涉及到Ebb的测试。


相关链接:http://robbin.iteye.com/blog/155542
分享到:
评论

相关推荐

    learnRoR:艰难地学习RoR

    提到"ando"可能是指作者在学习过程中参考了一位名叫Ando的人的教程或者资源。"ror教程"则可能指的是Rails官方文档或其他在线教程,这些资源对于初学者来说是非常宝贵的,它们提供了从基础到进阶的全方位学习材料。 ...

    doc_ecommerce:ror-ecommerce 的文档

    **标题解析:** ...8. **部署**:学习如何将应用部署到云服务如 Heroku 或 AWS 上。 以上就是根据标题、描述和标签所推测出的相关知识点。在实际解压并查看文件后,可以更具体地学习和掌握这些内容。

    Wrox.Professional.Ruby.on.Rails.Feb.2008

    《Wrox Professional Ruby on Rails Feb 2008》是一本专门为想...压缩包中的文件名称“Wrox.Professional.Ruby.on.Rails.Feb.2008.pdf”正是这本书的电子版,包含了所有你需要的知识点,是学习RoR不可多得的参考资料。

    铁道中文应用开发现状综述2006版

    ### 铁道中文应用开发现状综述2006版 #### 1.1 本报告的形成过程和作用范围 ...尽管随着时间的推移,许多内容可能会发生变化,但报告中所记录的历史和分析对于理解和把握ROR在中国的发展历程仍然具有重要的参考价值。

    sample_app_RoR:Ruby on Rail教程后的学习项目

    您可能要讲的内容: Ruby版本系统依赖配置数据库创建数据库初始化如何运行测试套件服务(作业队列,缓存服务器,搜索引擎等) 部署说明...Ruby on Rails教程样本应用程序参考实施这是(第6版)中的示例应用程序的...

    如何在局域网安装Redmine(原创)

    Redmine是一款基于Web的项目管理和跟踪工具,由Ruby on Rails (RoR)框架编写而成。它为团队提供了全面的功能,包括但不限于问题追踪、任务管理、版本控制集成、时间追踪、文件管理等。Redmine的设计初衷是为了提供一...

    Build.Your.Own.Ruby.on.Rails.Web.Applications.Feb.2007.pdf

    《构建你自己的Ruby on Rails Web应用》一书由Patrick Lenz撰写,于2007年出版,由SitePoint Pty Ltd.发行。本书是针对希望使用Ruby on ...对于任何希望深入了解和掌握RoR的开发者而言,这是一本不可或缺的参考书籍。

    radiant-radiant-0.9.0.rc2-0-gb9809f5 源文件

    5. **部署**:完成本地开发后,将应用部署到生产服务器,如 Heroku 或其他云平台。 Radiant CMS 的源代码阅读和学习,可以帮助开发者深入理解 Ruby on Rails 框架的工作原理,提升Web开发技能,同时也能为构建...

    Ruby on Rails环境搭建(基于WinXP & RadRails)

    这些工具的安装和配置也需要在命令行中进行,具体步骤可参考相关文档或在线教程。 总之,搭建Ruby on Rails开发环境需要安装Ruby、Rails、Bundler、数据库驱动以及IDE等组件,并通过命令行进行配置。这个过程虽然...

    RubyOnRailsProjs

    12. **Heroku部署**:一种流行的云平台,用于部署Rails应用。 通过深入研究这些项目,开发者不仅可以提升Ruby on Rails编程技能,还能了解到最佳实践和常见问题的解决方案。无论是初学者还是经验丰富的开发者,都能...

    Ruby.on.Rails.Enterprise.Application.Development

    5. **部署与运维**:最后,作者还将讲解如何将Rails应用部署到生产环境,并对其进行日常维护。 #### 五、标签中的技术栈解析 - **AJAX**:Asynchronous JavaScript and XML(异步JavaScript和XML),是一种用于...

    图7-3-2 树状图(b)1

    描述中没有提供额外的信息,所以我们将根据提供的标签来深入探讨相关知识点。 1. **Java**:Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems(现为Oracle Corporation)开发。它以其“一次编写,到处...

    webpassmap:所有Webpass的地图(http

    这个项目通过创建一个交互式的地图,展示了不同地区的Webpass可用性,为那些对高速互联网需求强烈的人提供了有价值的参考信息。现场演示让用户体验到项目的实际效果,增加了其实用性和互动性。" 【知识点详细说明】...

    SmartScheduler:Ruby on Rails 体育调度网站

    总之,"SmartScheduler"是一个结合了Ruby on Rails的强大功能和CSS的优美设计的体育调度应用,其源代码包含了大量的Web开发实践和技术细节,对学习和理解Web开发,尤其是Ruby on Rails框架,有着宝贵的参考价值。

    Grails 技术精解与Web开发实践【源码+样章】----下载不扣分,回帖加1分,欢迎下载,童叟无欺

    Grails 技术精解与Web开发实践【源码+样章】----下载不扣分,回帖加1分,欢迎下载,童叟无欺 第1章 导论 1 1.1 RoR的革命与Web开发的新时代...参考文献 247 索引 248 Grails技术精解与Web开发实践 目录 XII XI

    sample_app:Ruby on Rails 教程示例应用程序

    1. **安装与设置**:在开始构建RoR应用之前,你需要确保已经安装了Ruby、Rails和相关的开发工具。Rails可以通过Gem包管理器进行安装,执行`gem install rails`命令即可。 2. **创建新应用**:使用`rails new sample...

    Work2Go: Workflow Manager-开源

    6. **部署与扩展**:由于是基于Web的应用,Work2Go可以轻松地部署在各种服务器环境中,如AWS、Heroku或本地服务器。同时,其模块化的结构便于扩展,可以与其他系统(如CRM、ERP)集成,实现更广泛的企业级应用。 7....

    Rails 敏捷开发实践

    Ruby on Rails(简称 Rails 或 RoR)是一种基于 Ruby 语言的开源 Web 开发框架,它遵循“约定优于配置”(Convention over Configuration, CoC)的原则,使得开发者能够快速构建出功能完备的 Web 应用。Rails 强调...

Global site tag (gtag.js) - Google Analytics