`
andyhu1007
  • 浏览: 200872 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Rails每周一题(三): Mongrel & Apache on jruby

阅读更多

用Apache和Mongrel搭建jruby on rails服务器平台。

 

为什么要Apache

 

主要是用apache作反向代理 ,个人觉得主要有两点。(什么是反向代理?与forward proxy相比,反向代理是处理in-bound的request,不需要客户端进行任何配置,reverse proxy主要用于cache和load balancer。而forward proxy的存在,大都是因为internal client因为某些原因不能或不应访问外部资源。)

 

1. 让apache处理静态文件。

2. 利用apache的mod_proxy_balancer作负载均衡。

 

手把手

 

不再赘述mongrel的安装以及apache的安装等。


1. 启动多个mongrel server。

 

一般最佳实践是使用mongrel_jcluster ,但可惜的是Ola Bini老兄的更新总是不及时:mongrel_jcluster does not work in JRuby 1.1。

 

好吧,写个脚本吧。但在jruby下又有另外一个问题:jruby daemon gem problem .

 

没错,就启动它成为一个linux后台守护进程吧。

 

我写了这样一个简单的脚本。

 

mongrel_rails start -p 3000 -e development &
mongrel_rails start -p 3001 -e development &

 

 2. apache配置

 

apache需要的模块有:mod_proxy,mod_proxy_connect,mod_proxy_balancer以及一些被依赖的module。

 

ubuntu@ubuntu-laptop:/etc/apache2$ ls mods-enabled/
alias.conf       authz_default.load    autoindex.conf  dir.conf   mime.load            proxy.conf          setenvif.conf
alias.load       authz_groupfile.load  autoindex.load  dir.load   negotiation.conf     proxy_connect.load  setenvif.load
auth_basic.load  authz_host.load       cgid.conf       env.load   negotiation.load     proxy_http.load     status.conf
authn_file.load  authz_user.load       cgid.load       mime.conf  proxy_balancer.load  proxy.load          status.load

 

编辑proxy.conf,去掉deny all。

 

<Proxy *>
                AddDefaultCharset off
                Order deny,allow
                # Deny from all
                Allow from all
</Proxy>

 

添加一个VirtualHost,在sites-available下添加一个文件叫myapp,然后在sites-enabled下建立一个symbolic link到这个文件。

 

ProxyRequests off  # 关闭forward proxy

<VirtualHost *:80>
      DocumentRoot "/path/to/rails_root/public"       
     
      ServerName myapp.com
      ServerAlias www.myapp.com
       
       <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
     
      ProxyPass /images !
      ProxyPass /stylesheets !
      ProxyPass /javascripts !     # donot proxy static files to cluster. 

      ProxyPass / http://localhost:3000/   # proxy request to one mongrel server
      ProxyPassReverse / http://localhost:3000/
      ProxyPreserveHost on
         
      ErrorLog /var/log/apache2/myapp_error.log

      # Possible values include: debug, info, notice, warn, error, crit,
      # alert, emerg.
      LogLevel warn

      CustomLog /var/log/apache2/myapp_access.log combined

</VirtualHost>

 

增加load balancer。 

 

ProxyRequests off
<Proxy balancer://myapp_cluster>
      BalancerMember http://127.0.0.1:3000
      BalancerMember http://127.0.0.1:3001
</Proxy>

<VirtualHost *:80>
      DocumentRoot "/path/to/rails_root/public"       
      
      ServerName myapp.com
      ServerAlias www.myapp.com

	<Directory />
		Options FollowSymLinks
		AllowOverride None
	</Directory>

      ProxyPass /images !
      ProxyPass /stylesheets !
      ProxyPass /javascripts ! 
      ProxyPass / balancer://myapp_cluster/     # proxy request to mongrel cluster, don't forget to add the last '/'
      ProxyPassReverse / balancer://myapp_cluster/
      ProxyPreserveHost on
		
      ErrorLog /var/log/apache2/myapp_error.log

	# Possible values include: debug, info, notice, warn, error, crit,
	# alert, emerg.
	LogLevel warn

	CustomLog /var/log/apache2/myapp_access.log combined

</VirtualHost>

 

最后,在/etc/hosts加上:

 

 

127.0.0.1       www.myapp.com

 

重启apache,ok啦:)

分享到:
评论

相关推荐

    Code Review&JRuby on Rails

    《Code Review & JRuby on Rails》是一篇深入探讨代码审查与在Java平台上运用JRuby进行Rails开发的文章。本文主要围绕两个关键主题展开:代码审查的重要性及其实践方法,以及JRuby如何帮助Java开发者利用Ruby on ...

    jRuby On Rails WEB2.0

    《jRuby on Rails WEB2.0》是一部由Ola Bini撰写的书籍,深入探讨了如何将Ruby on Rails这一敏捷开源框架与Java平台相结合,以构建高效、灵活的Web 2.0应用。作为JRuby项目的领头人和核心开发者,Ola Bini以其丰富的...

    Rails 中mongrel的安装

    Rails是Ruby on Rails框架的简称,它是一种基于Ruby语言的开源Web开发框架,以其MVC(Model-View-Controller)架构而闻名,旨在简化Web应用的开发过程。在早期的Rails版本中,Mongrel是一个常用的HTTP服务器,用于...

    jruby_on_rails

    JRuby on Rails 是一个基于 JRuby 实现的 Ruby on Rails 框架的版本,允许开发者在 Java 平台上利用 Rails 的强大功能进行 web 应用开发。Ruby on Rails(简称 Rails)是由 David Heinemeier Hansson 创建的,它是一...

    2009 KungFu Rails大会JRuby演讲PPT

    KungFu Rails大会是一个专注于Ruby on Rails技术的活动,而JRuby则是Ruby的一个重要实现,它允许开发者在Java平台上运行Ruby代码,从而利用Java的生态系统。 首先,JRuby是一个开源的、符合Ruby语言规范的实现,由...

    Rails的精简版本Rails::API.zip

    Rails::API 是 Rails 的精简版本,针对不需要使用完整 Rails 功能的开发者。 Rails::API 移除了 ActionView 和其他一些渲染功能,不关心Web前端的开发者可更容易、快速地开发应用程序,因此运行速度比正常的 Rails ...

    JRuby和Rails-让Ruby语言融入于Java项目.rar

    《JRuby和Rails-让Ruby语言融入于Java项目》是一本深入探讨如何在Java环境中使用JRuby和Rails框架的教程。这本书旨在帮助开发者理解和实践如何将Ruby on Rails的灵活性和生产力引入到Java企业级开发中,从而提升软件...

    Ruby on Rails入门例子

    Ruby on Rails,简称Rails,是一种基于Ruby语言的开源Web应用程序框架,它遵循MVC(Model-View-Controller)架构模式,旨在使Web开发过程更加高效、简洁。本篇将通过一个入门实例,深入探讨Rails的基本概念和核心...

    Rails上的API:使用Rails构建REST APIAPIs on Rails: Building REST APIs with Rails

    在本篇内容中,我们将深入探讨如何利用Ruby on Rails(简称Rails)这一强大的Web应用程序框架来构建可伸缩且易于维护的RESTful API。Rails以其简洁优雅的语法、高效的开发速度以及良好的社区支持而闻名,这使得它...

    Apress - Practical JRuby on Rails Web 2.0 Projects (Sep 2007)

    《JRuby on Rails Web 2.0 实用项目》 英文PDF + 源码

    Ruby on Rails入门经典代码

    Ruby on Rails,简称Rails,是基于Ruby语言的一个开源Web应用程序框架,它遵循MVC(Model-View-Controller)架构模式,旨在使Web开发过程更加高效、简洁。本压缩包中的"Ruby on Rails入门经典代码"提供了新手学习...

    Ruby on Rails Guides v2 - Ruby on Rails 4.2.5

    ### Ruby on Rails Guides v2 - Ruby on Rails 4.2.5 #### 一、重要概念及基础假设 - **重要概念**:本指南旨在帮助读者深入理解Ruby on Rails(以下简称Rails)4.2.5版本的核心功能与最佳实践。 - **基础假设**:...

    基于Ubuntu Nginx Mongrel Mysql部署rails monit-5.0

    在构建高性能、高可用性的Web应用环境中,"基于Ubuntu Nginx Mongrel Mysql部署rails monit-5.0"的方案是一个常见的选择。这个方案结合了多种强大的工具和技术,以确保应用程序的稳定运行和高效管理。以下是这些关键...

Global site tag (gtag.js) - Google Analytics