`
半人马
  • 浏览: 23132 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

Apache+Mongrel上host多个rails应用

阅读更多
下面是Apache+Mongrel上host多个rails应用的方法,提供需要的人使用。

1. 软件版本
     我用的操作系统是Redhat Linux 2.4.21-37.EL
     系统安装时带的Apache httpd 2.0.46-54ent
     ruby 1.8.5
     rails 1.1.6
     mongrel  0.3.13.4

2. 课题
     你有一个可以运行的rails应用app1,要将它部署在httpd http://host/上,并在http://host/app1下访问

3. 实施步骤
     a) 在apache httpd.conf相同目录下创建新的配置文件http-mongrel-proxy.conf输入以下内容
          
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>

ProxyPass /app1 http://127.0.0.1:3000/app1
ProxyPassReverse /app1/ http://127.0.0.1:3000/app1
           

     b) 确认httpd.conf中打开了
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
几项,并在httpd.conf末尾添加一行将新的配置文件包含进来
Include conf/http-mongrel-proxy.conf


     c) 在app1项目路径下启动mongrel
mongrel_rails start --prefix=/app1 -e production 
其中--prefix是mongrel新版本中专门为了解决我们的课题提供的新选项。其它的启动选项如-d什么的自己加
     d) 重启httpd
     e) 如果你的rails应用按照rails惯例开发,你会发现你的images, stylesheet甚至是一些form action都不起作用。这是因为你在rhtml中使用了/images/, /stylesheets/, /action/view这样的绝对路径。
        我建议的解决办法是在你的layout文件中设置<base href=" <%= $htmlbase %> " >,并修改所有以/开头的绝对路径为相对路径。
        在config/environment/production.rb中添加全局变量定义
    
$htmlbase="http://host/app1/fake.html"
其中fake.html可以不存在。
     为了保持开发时的方便,在config/environment/development.rb中添加定义
    
$htmlbase="http://host:3000/fake.html"

     这样开发和部署时的代码不用改来改去了。
     f) 优化。
        现在你的应用应该可以按照你预想的方式运行了,现在我们作一点小优化,让mongrel只负责动态内容的处理,让apache去处理静态信息。
        确认httpd.conf中打开了
LoadModule alias_module modules/mod_alias.so

        编辑http-mongrel-proxy.conf,在proxypass语句之前添加以下配置:
Alias /app1 "/path/to/app1/public"
<Directory "/path/to/app1/public">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride none
    Order allow,deny
    Allow from all
</Directory>

ProxyPass /app1/images !
ProxyPass /app1/stylesheets !
ProxyPass /app1/javascripts !

其中ProxyPass ... !语句是让proxy不要管这些静态内容,让alias来管。
重启apache,这时候应该可以看到你期望看到的页面了。
这个步骤中你可能需要的问题是静态内容的permission denied。这时候你需要给用户apache访问/path/to/app1/public的读权限。举个例子:
我的/path/to/app1/public是/home/centaur/workspace/app1/public,这时需要做两件事:
第一件,将用户apache加入centaur组(创建centaur用户时的缺省初始组),moduser命令自己查
第二件,为/home/centaur目录添加组成员可执行权限(x),一般这个目录的缺省权限是700
     g) 下面你按照上面的方法可以host你的app2, app3,当然每个mongre_rails启动时占用的端口要不一样,在http-mongrel-proxy.conf中也要添加相应的配置。
     h) 以上内容绝非原创,参考了N多前辈的成果,但是我这个应该更准确更实用一点。也请神原谅我的懒,等有人找我麻烦的时候再写参考文献一节吧。

分享到:
评论

相关推荐

    Nginx+Mongrel实践过程

    在"负载均衡"的场景下,Nginx可以配置为负载均衡器,根据预设策略(如轮询、最少连接数、IP哈希等)将请求分发到多个Mongrel实例上。这样不仅可以充分利用服务器资源,还可以提高系统的可用性和可靠性,因为即使某个...

    Rails 中mongrel的安装

    虽然Mongrel在Rails社区曾经非常流行,但由于其不再维护,现在更多人转向了如Passenger(Phusion Passenger)、Puma或Unicorn等更现代、更稳定的Web服务器。这些服务器同样支持Rails应用,并且在性能和稳定性方面有...

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

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

    RailsWithApacheAndMongrel.pdf

    这种配置允许开发者在一个服务器上运行多个独立的Rails应用,并通过Apache进行请求代理。 #### 安装与配置流程概述 文档提供了详细的步骤来安装必要的软件和服务,包括Ruby、Rails、Apache、Mongrel等,并介绍了...

    Ruby on Rails安装指南(Ruby 1.8.6+Rails 2.0.2)

    新创建的Rails应用程序需要一个服务器来托管,这时就可以启动Mongrel服务器。在Rails项目的根目录下执行`rails server`命令,或者简写形式的`rails s`。默认情况下,Mongrel服务器会在本地的3000端口监听,你可以...

    Rails相关电子书汇总二

    虽然现代Rails应用更多地使用如Puma、Unicorn或Passenger等服务器,但理解Mongrel的运作机制仍然是提升开发者技能的一个方面。通过阅读这本书,你可以深入理解Web服务器的工作原理,这对于优化任何Web应用的性能都是...

    Mysql Server 5.1

    用于构建window + ruby + rails + netbeans + mongrel框架

    the rails way

    书中详细介绍了Rails的路由系统,这是一个关键组件,负责将URL映射到控制器和动作上。理解Rails的路由机制对于构建灵活和可维护的应用程序至关重要。 #### Refactoring to Resources 讨论了如何利用CRUD(Create, ...

    mongrel-1.1.5.gem

    Mongrel是一种快速的针对Ruby的Http 服务器,专门为部署发布rails应用而产生的。 可以替代mod_ruby/fastcgi,可以用于生产部属环境。

    Ruby on Rails安装指南.docx

    4. **创建Rails应用**:使用`rails new APP_NAME`命令创建一个新的Rails应用。 5. **启动Rails**:通过`mongrel_rails start`命令启动Rails应用。 以上步骤是基于Windows环境的操作,对于其他操作系统(如Linux或...

    Mongrel

    MongoDB的核心特性之一是它的分片(Sharding)功能,这允许数据库水平扩展,通过在多个服务器上分配数据来处理大规模的数据存储和查询。另一个重要的特性是复制集(Replica Sets),它可以提供数据冗余和故障转移,...

    httpd-2.4.58.tar.gz

    nginx 是一个小巧且高效的HTTP服务器,也可以做一个高效的负载均衡反向代理,通过它接受用户的请求并分发到多个Mongrel进程可以极大提高Rails应用的并发能力tomcat 技术先进、性能稳定,而且免费IIS(windows)安全...

    Web服务器Mongrel2.zip

    Mongrel2是一个基于ZeroMQ的Web服务器,语言独立,可以用17种语言编写应用,还有更多非常奇特的地方:What makes Mongrel2 special is how it satisfies these requests in a language agnostic andasynchronous way...

    基于Ubuntu Nginx Mongrel Mysql部署rails

    博文链接:https://swachian.iteye.com/blog/175033

    Linux系统上配置Nginx Mongrel cluster

    在Linux系统上配置Nginx Mongrel Cluster是一个高效的方法,用于优化Rails应用程序的并发处理能力。Nginx作为一款小巧而强大的HTTP服务器,能够作为负载均衡反向代理,接收用户的请求,并将它们分发到多个Mongrel...

    ruby_on_rails&radrails环境配置.pdf

    - 在RadRails中新建一个Rails项目,例如命名为`demo2`,并选择使用Mongrel Server作为服务器。 2. **启动服务器** - 在RadRails的`Servers`视图中选择`demo2 Server`,点击绿色箭头启动服务器。 - 点击绿色箭头...

    instant-rails-2.0.7z

    集成了ruby 、rails 、apache 、mongrel、mysql(phpmyadmin),绿色免安装,解压即可。 内带示例程序cookbook和Typo.注意IIS服务器和迅雷等都可能占用80端口,要防止冲突。不仅可以作为rails程序运行环境,开发也非常...

    ubuntu下安装ruby on rails

    ### Ubuntu 下 Ruby on Rails 的安装与配置 #### 一、Ruby on Rails 的安装步骤 ...通过上述步骤,您应该能够在 Ubuntu 系统上成功安装并配置 Ruby on Rails 环境,同时也解决了在安装过程中常见的几个问题。

Global site tag (gtag.js) - Google Analytics