用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啦:)
分享到:
- 2009-04-05 15:28
- 浏览 974
- 评论(0)
- 论坛回复 / 浏览 (0 / 2255)
- 查看更多
相关推荐
《Code Review & JRuby on Rails》是一篇深入探讨代码审查与在Java平台上运用JRuby进行Rails开发的文章。本文主要围绕两个关键主题展开:代码审查的重要性及其实践方法,以及JRuby如何帮助Java开发者利用Ruby on ...
《jRuby on Rails WEB2.0》是一部由Ola Bini撰写的书籍,深入探讨了如何将Ruby on Rails这一敏捷开源框架与Java平台相结合,以构建高效、灵活的Web 2.0应用。作为JRuby项目的领头人和核心开发者,Ola Bini以其丰富的...
Rails是Ruby on Rails框架的简称,它是一种基于Ruby语言的开源Web开发框架,以其MVC(Model-View-Controller)架构而闻名,旨在简化Web应用的开发过程。在早期的Rails版本中,Mongrel是一个常用的HTTP服务器,用于...
JRuby on Rails 是一个基于 JRuby 实现的 Ruby on Rails 框架的版本,允许开发者在 Java 平台上利用 Rails 的强大功能进行 web 应用开发。Ruby on Rails(简称 Rails)是由 David Heinemeier Hansson 创建的,它是一...
KungFu Rails大会是一个专注于Ruby on Rails技术的活动,而JRuby则是Ruby的一个重要实现,它允许开发者在Java平台上运行Ruby代码,从而利用Java的生态系统。 首先,JRuby是一个开源的、符合Ruby语言规范的实现,由...
Rails::API 是 Rails 的精简版本,针对不需要使用完整 Rails 功能的开发者。 Rails::API 移除了 ActionView 和其他一些渲染功能,不关心Web前端的开发者可更容易、快速地开发应用程序,因此运行速度比正常的 Rails ...
《JRuby和Rails-让Ruby语言融入于Java项目》是一本深入探讨如何在Java环境中使用JRuby和Rails框架的教程。这本书旨在帮助开发者理解和实践如何将Ruby on Rails的灵活性和生产力引入到Java企业级开发中,从而提升软件...
Ruby on Rails,简称Rails,是一种基于Ruby语言的开源Web应用程序框架,它遵循MVC(Model-View-Controller)架构模式,旨在使Web开发过程更加高效、简洁。本篇将通过一个入门实例,深入探讨Rails的基本概念和核心...
在本篇内容中,我们将深入探讨如何利用Ruby on Rails(简称Rails)这一强大的Web应用程序框架来构建可伸缩且易于维护的RESTful API。Rails以其简洁优雅的语法、高效的开发速度以及良好的社区支持而闻名,这使得它...
《JRuby on Rails Web 2.0 实用项目》 英文PDF + 源码
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(以下简称Rails)4.2.5版本的核心功能与最佳实践。 - **基础假设**:...
在构建高性能、高可用性的Web应用环境中,"基于Ubuntu Nginx Mongrel Mysql部署rails monit-5.0"的方案是一个常见的选择。这个方案结合了多种强大的工具和技术,以确保应用程序的稳定运行和高效管理。以下是这些关键...