Windows平台使用Apache2.2Mongrel运行Ruby on Rails
 
 
一、安装Ruby、rails、mongrel和Apache2.2
 
从rubyforge网站下载One-Click Ruby Install,运行安装程序,就安装好了ruby和rubygems。
 
运行命令:
gem install rails –y
gem install mongrel –y
gem install mongrel_service -y
安装好了rails和mongrel
 
从Apache网站下载Windows版本的Apache2.2,运行安装程序,就安装好了Apache2.2。
 
二、把Mongrel作为Services启动
 
mongrel_rails service::install -N depot -c d:\Rubyproject\depot -p 3000 –e production
-N指明服务名称,-d指明rails应用的目录,-p是mongrel监听的tcp端口,-e是启动模式为生产模式
 
这样打开控制面版|管理工具|服务,就可以发现增加了一项名为“depot”的服务,就可以通过控制面版来管理服务了。如果需要命令行启动和关闭该服务,那么:
mongrel_rails service::start -N depot
mongrel_rails service::stop -N depot
 
如果需要从服务中注销该项服务,那么:
mongrel_rails service::remove -N depot
 
如果需要安装多个mongrel实例,那么可以这样:
mongrel_rails service::install -N depot0 -c d:\Rubyproject\depot -p 3000 –e production
mongrel_rails service::install -N depot1 -c d:\Rubyproject\depot -p 3001 –e production
诸如此类。
 
三、配置Apache2.2
 
用编辑工具打开Apache2.2目录下面的conf/httpd.conf,需要取消如下模块的注释:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_http_module modules/mod_proxy_http.so
如果你希望对页面输出使用压缩,也需要取消如下模块的注释:
LoadModule deflate_module modules/mod_deflate.so
 
然后按如下内容配置基于HTTP代理的负载均衡:
xml 代码
 
  1. ProxyRequests Off   
  2. <Proxy balancer://myCluster>  
  3.   BalancerMember http://localhost:3000   
  4.   BalancerMember http://localhost:3001   
  5. </Proxy>  
  6.   
  7. <VirtualHost *:80>  
  8.   ServerName www.xxx.com   
  9.   DocumentRoot d:/rubyproject/depot/public   
  10.   ProxyPass /images !   
  11.   ProxyPass /stylesheets !   
  12.   ProxyPass /javascripts !   
  13.   ProxyPass / balancer://myCluster/   
  14.   ProxyPassReverse / balancer://myCluster/   
  15.   ProxyPreserveHost on   
  16. </VirtualHost>  
 
myCluster定义了群集中的每个mongrel应用服务器节点。ProxyPass /images !指明该URL开始的请求不代理给Mongrel群集,而由Apache自己处理。重起Apache,然后打开浏览器访问www.xxx.com,检查配置是否正确。
 
至此,在Windows Server上面一个具备良好稳定性和性能的Ruby on rails生产环境就搭建好了。
 
对于页面输出,还可以使用mod_deflate进行输出内容压缩,以提高页面下载速度,这个就留给大家自己配置了。
评论
huangye177 2007-05-08
To: simon_lin这是你的链接到rails有问题,估计是网络不好
prolibertine 2007-05-08
不知道可不可以在iis下面配置ror啊
simon_lin 2007-04-03
为什么我装到
gem install rails –y
这一步时,总是提示我

ERROR:While executing gem ... (Gem::RemoteFetcher:FetchError)
SocketError reading http://gems.rubyforge.org/gems/activesupport-1.4.2.gem


这是什么问题?怎么处理?谢谢!
simon_lin 2007-04-03
为什么我装到
gem install rails –y
这一步时,总是提示我

ERROR:While executing gem ... (Gem::RemoteFetcher:FetchError)
SocketError reading http://gems.rubyforge.org/gems/activesupport-1.4.2.gem


这是什么问题?怎么处理?谢谢!
hongyefei 2007-03-07
真的可以啊,楼上的谢谢
huangye177 2007-02-20
somebody 写道
hongyefei 写道
我把
<VirtualHost *:80>
ServerName dev100
DocumentRoot d:/app/onlinesale/public
ProxyPass /images !
ProxyPass /stylesheets !
ProxyPass /javascripts !
ProxyPass / balancer://myCluster/
ProxyPassReverse / balancer://myCluster/
ProxyPreserveHost on
</VirtualHost>
里面的js、css,images目录去掉。 改成下面这样就可以了,
<VirtualHost *:80>
ServerName dev100
DocumentRoot d:/app/onlinesale/public
ProxyPass / balancer://myCluster/
ProxyPassReverse / balancer://myCluster/
ProxyPreserveHost on
</VirtualHost>
谁知道哪样好些吗



我用ajp_mod也碰到这个问题。不知道为啥。ProxyPass /images ! 这个好像让/images下的禁止访问了。而不是给ajp处理了。奇怪。


It should be:

<VirtualHost *:80>
ServerName dev100
DocumentRoot d:/app/onlinesale/public
ProxyPass /images balancer://myCluster/images
ProxyPass /stylesheets balancer://myCluster/stylesheets
ProxyPass /javascripts balancer://myCluster/javascripts

ProxyPass / balancer://myCluster/
ProxyPassReverse / balancer://myCluster/
ProxyPreserveHost on
</VirtualHost>

For more information: http://www.yehuang.net/archives/31
lionel 2007-02-14
Quake3 写道
当我配置好服务后,在IE地址栏输入地址正确显示出Welcome aboard,但是点击“About your application’s environment”后,出现错误提示
Routing Error

no route found to match "/rails/info/properties" with {:method=>:get}

请教大家,如何解决这个问题!


我也遇到了和你一样的问题,不知是什么原因
amozon 2007-02-13
melin 的资料很详细,谢谢
Quake3 2007-02-04
当我配置好服务后,在IE地址栏输入地址正确显示出Welcome aboard,但是点击“About your application’s environment”后,出现错误提示
Routing Error

no route found to match "/rails/info/properties" with {:method=>:get}

请教大家,如何解决这个问题!
robbin 2007-02-03
还是好好去读apache的文档吧,别在这瞎猜
somebody 2007-02-02
hongyefei 写道
我把
<VirtualHost *:80>
ServerName dev100
DocumentRoot d:/app/onlinesale/public
ProxyPass /images !
ProxyPass /stylesheets !
ProxyPass /javascripts !
ProxyPass / balancer://myCluster/
ProxyPassReverse / balancer://myCluster/
ProxyPreserveHost on
</VirtualHost>
里面的js、css,images目录去掉。 改成下面这样就可以了,
<VirtualHost *:80>
ServerName dev100
DocumentRoot d:/app/onlinesale/public
ProxyPass / balancer://myCluster/
ProxyPassReverse / balancer://myCluster/
ProxyPreserveHost on
</VirtualHost>
谁知道哪样好些吗



我用ajp_mod也碰到这个问题。不知道为啥。ProxyPass /images ! 这个好像让/images下的禁止访问了。而不是给ajp处理了。奇怪。
hongyefei 2007-01-26
我把
<VirtualHost *:80>
ServerName dev100
DocumentRoot d:/app/onlinesale/public
ProxyPass /images !
ProxyPass /stylesheets !
ProxyPass /javascripts !
ProxyPass / balancer://myCluster/
ProxyPassReverse / balancer://myCluster/
ProxyPreserveHost on
</VirtualHost>
里面的js、css,images目录去掉。 改成下面这样就可以了,
<VirtualHost *:80>
ServerName dev100
DocumentRoot d:/app/onlinesale/public
ProxyPass / balancer://myCluster/
ProxyPassReverse / balancer://myCluster/
ProxyPreserveHost on
</VirtualHost>
谁知道哪样好些吗
hongyefei 2007-01-26
怎么我用http://localhost:3001/home就可以,用http://dev100/home登录,所有的js&css都不起作用。
<Proxy balancer://myCluster>
BalancerMember http://localhost:3001
</Proxy>

<VirtualHost *:80>
ServerName dev100
DocumentRoot d:/app/onlinesale/public
ProxyPass /images !
ProxyPass /stylesheets !
ProxyPass /javascripts !
ProxyPass / balancer://myCluster/
ProxyPassReverse / balancer://myCluster/
ProxyPreserveHost on
</VirtualHost>
zyjarge 2007-01-26
搭好了. 能用了, 可是有点问题,原先在Webrick下跑的好好的程序中文出现乱码了.

还得再研究研究啊.
bomb_football 2007-01-24
已经解决了,需要需要rails命令创建一个Rails application目录后,才能创建服务。
btw:你这安装步骤是写给高手看的吧:)
bomb_football 2007-01-24
呵呵,麻烦你能说清楚一点吗?这个Rails application改怎么指定?
robbin 2007-01-23
!!! The path you specified isn't a valid Rails application.
bomb_football 2007-01-23
我安装的时候报错了,请问怎么回事?
执行:mongrel_rails service::install -N depot -c D:\ruby\lib\ruby\gems\1.8\gems\rails-1.2.1\html -p 3000 –e production


!!! The path you specified isn't a valid Rails application.
service::install reported an error. Use mongrel_rails service::install -h to get
help.
bogey 2007-01-16
有没有通过IIS转发指定来路的请求到Ruby上的?
之前在看ROR,想到服务器端的麻烦,WIN平台的IIS把80端口己占,当时在想可不可以在在IIS把指定的请求转到Ruby去处理

没有试
koska 2007-01-15
robbin
搜索本博客
我的相册
213cbb75-7dae-37b2-b9ce-9e7b49f784d3-thumb
游乌镇
共 33 张
其他分类
存档
最新评论