Rails部署专题!! (4/431)

< 上一篇下一篇 >
本帖地址: 复制地址

修改 回帖 引用 楼主: CMO涔漠

用户形象图片

windows平台本地化安装Mongrel

一、什么是Mongrel
http://mongrel.rubyforge.org/
Mongrel is a fast HTTP library and server for Ruby that is intended for hosting Ruby web applications of any kind using plain HTTP rather than FastCGI or SCGI. It is framework agnostic and already supports Ruby On Rails, Og+Nitro, Camping, and IOWA frameworks.

mongrel号称是fast,就想体验一下,gem网络安装几次都是超时,最后不得不选择本地安装,其间颇费周折,经梳理后,把安装过程写下来,大家共享。

二、下载需要的gem安装包
mongrel-1.1.1-mswin32.gem : http://rubyforge.vm.bytemark.co.uk/gems/mongrel-1.1.1-mswin32.gem
gem_plugin-0.2.3.gem  : http://rubyforge.vm.bytemark.co.uk/gems/gem_plugin-0.2.3.gem
win32-service-0.5.2 : http://rubyforge.org/frs/downloa ... e-0.5.2-mswin32.gem
mongrel_service-0.3.3-mswin32.gem : http://rubyforge.vm.bytemark.co.uk/gems/mongrel_service-0.3.3-mswin32.gem
mongrel需要依赖gem_plugin和win32-service这两个库,都需要下载到本地

三、执行安装
请注意安装顺序
gem install win32-service-0.5.2-mswin32.gem --local
gem install gem_plugin-0.2.3.gem --local
gem install mongrel-1.1.1-mswin32.gem --local
gem install mongrel_service-0.3.3-mswin32.gem --local
一定要按照顺序安装

四、启动服务
进入rails应用目录
cd E:\ruby\demo
启动mongrel
E:\ruby\demo>mongrel_rails start
** Starting Mongrel listening at 0.0.0.0:3000
** Starting Rails with development environment ...
** Rails loaded.
** Loading any Rails specific GemPlugins
** Signals ready.  INT => stop (no restart).
** Mongrel available at 0.0.0.0:3000
** Use CTRL-C to stop.

到这里mongrel就安装成功了,如果要把mongrel安装成win32的服务还需要mongrel_service-0.1.gem


把Mongrel安装成为Windows服务:

mongrel_rails service::install -N MyApp_Dev -c C:\Rails\MyApp -p 4001 -e production

你可以设置成为自动,安装成为服务是很必要的,因为,你不可能每次都登录服务器,来运行你的server,即使你加到启动中,你也需要使用用户登录之后系统才可以自动启动

 

假如你想删除这个服务使用:

mongrel_rails service::remove -N MyApp_Dev

gem uninstall mongrel_service

回到帖子顶部

回帖 引用 1楼[楼主] CMO涔漠

用户形象图片

 以Ruby、rails、mongrel和Apache2.2部署

=============================================================== 
一、安装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 hello-c D:\railsweb\hello -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 代码
 

ProxyRequests Off   
    <Proxy balancer://myCluster>  
      BalancerMember http://134.127.23.140:3001   
      BalancerMember http://134.127.23.147:3000  
      BalancerMember http://134.127.23.26:3001   
    </Proxy>  
      
    <VirtualHost *:80>  
     ServerName rails   
      DocumentRoot D:/rubyworkspace/hello   
     ProxyPass /images !   
     ProxyPass /stylesheets !   
     ProxyPass /javascripts !   
     ProxyPass / balancer://myCluster/   
     ProxyPassReverse / balancer://myCluster/   
     ProxyPreserveHost on   
   </VirtualHost>  

 
myCluster定义了群集中的每个mongrel应用服务器节点。ProxyPass /images !指明该URL开始的请求不代理给Mongrel群集,而由Apache自己处理。重起Apache,然后打开浏览器访问www.xxx.com,检查配置是否正确。
 
至此,在Windows Server上面一个具备良好稳定性和性能的Ruby on rails生产环境就搭建好了。

回到帖子顶部

回帖 引用 2楼[楼主] CMO涔漠

用户形象图片

以Lighttpd  + mongrel部署

================================================================

 

一、安装mongrel 
代码 gem install mongrel –y gem install mongrel_service -y render_code(); 
二、把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 
诸如此类。 
三、安装Windows版本的Lighttpd 
下载地址是:http://www.kevinworthington.com:8181/?p=116,windows版本的lighttpd默认被安装在c:/lighttpd,这个安装位置是不能修改的。

配置Lighttpd,配置port:

打开c:\lighttpd\etc\lighttpd.conf

取消 server.port = 81 前的注释,你也可以使用port:80

开启模块,其他模块不要乱开,会出问题

server.modules = ("mod_proxy", 
"mod_rewrite", 
"mod_accesslog", 
"mod_alias" )

另外在这个配置文件末位加上:

proxy.debug = 0 
proxy.balance = "fair" 
proxy.server = ( "/" => 

( "host" => "127.0.0.1", "port" => 4001 ), 
( "host" => "127.0.0.1", "port" => 4002 ) 

)

这里的port就是Mongrel server的port,启动Lighttpd使用命令:

c:\lighttpd\sbin\lighttpd.exe -D -f c:\lighttpd\etc\lighttpd.conf

通过http://localhost:81/ 就可以成功访问了哈。

回到帖子顶部

回帖 引用 3楼[楼主] CMO涔漠

用户形象图片

以IIS+mongerl部署

=============================================================

安装好isapi_rwf_x86_0060.msi后

1.通过cmd进入dos,同时进入到C:\Program Files\Helicon\ISAPI_Rewrite目录 下

  执行=>  Proxycfg.vbs –r

2. 到相同目录,找到httpd.ini文件,打开新增到末尾
  RewriteProxy /test(.*) http\://localhost:4001$1 [I,U]
  
3.在rails工程目录中,通过命令
ruby script/generate reverse_proxy_fix
创建一个plugin

4.更改\vendor\plugins\reverse_proxy_fix下init.rb文件

  添加 require "reverse_proxy_fix"

  更改vendor\plugins\reverse_proxy_fix\lib目录下文本   reverse_proxy_fix.rb
 
BASE_URL="http://localhost/rails"




或者将本目录下reverse_proxy_fix copy到发布程序的\vendor\plugins 目录下

回到帖子顶部

回帖 引用 4楼[楼主] CMO涔漠

用户形象图片

Rails部署Mongrel+Apache


=================
在windows平台下面部署rails,一个比较好的选择就是Mongrel+Apache。
Mongrel对rails的支持非常好,基本不需要什么配置,效率也不错,但是也有些弊病。例如一个Mongrel实例只能同时处理一个请求,不支持http compress(至少我没找到)。
Apache就不用说了,工业标准,功能强大,就是配置稍显繁琐,对rails的支持限于fastCGI,据说Apache2还很不兼容。
所以现在流行的一个搭配,就是集二者之所长,还可以使用Apache的http代理功能,启动多个mongrel进程实现可伸缩的负载均衡。

Mongrel的安装很简单:
gem install mongrel –y
gem install mongrel_service -y
然后
mongrel_rails service::install -N web1 -c c:\website -p 3000 –e production
-N指明服务名称,-d指明rails应用的目录,-p是mongrel监听的tcp端口,-e是启动模式为生产模式
即可创建rails网站系统服务。
我们可以创建两个进程:
mongrel_rails service::install -N web1 -c c:\website -p 3000 –e production
mongrel_rails service::install -N web2 -c c:\website -p 3001 –e production


Apache安装就不用介绍了,安装完毕以后修改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压缩
<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/css text/javascript application/x-javascript
</IfModule>

#创建虚拟目录,让apache来处理javascript和css以及图片文件,分担mongrel的压力
Alias /javascripts C:/website/public/javascripts
Alias /stylesheets C:/website/public/stylesheets
Alias /images C:/website/public/images
#设置目录访问权限
<Directory C:/website/public/images>
  order allow,deny
  Allow from all
</Directory>  
  
<Directory C:/website/public/javascripts>
  order allow,deny
  Allow from all
</Directory>  

<Directory C:/website/public/stylesheets>
  order allow,deny
  Allow from all
</Directory>  

#设置负载代理,即mongrel进程
ProxyRequests Off 
<Proxy balancer://myCluster> 
BalancerMember http://localhost:3000
BalancerMember http://localhost:3001
</Proxy> 

#apache监听80端口,将www.yourwebdomain.com的请求转发给mongrel负载代理,脚本,css,图片除外
<VirtualHost *:80> 
ServerName www.yourwebdomain.com
DocumentRoot C:/website/public
ProxyPass /images ! 
ProxyPass /stylesheets ! 
ProxyPass /javascripts ! 
ProxyPass / balancer://myCluster/ 
ProxyPassReverse / balancer://myCluster/ 
ProxyPreserveHost on 
</VirtualHost> 



配置完毕,启动mongrel服务,apache服务就ok了。
回到帖子顶部
个人信息
  • 荣誉+3
  • 荣誉+2
  • 荣誉+1
  • 荣誉-1
  • 荣誉-2
  • 荣誉-3
发表留言
  • 文章不错!
  • 精华好文!
  • 支持原创文章!
  • 帖子图文并茂,好!
  • 真知灼见,说得好!
  • 恶意广告
  • 违规内容
  • 严重灌水
  • 重复发帖
  • 标题党
你确定要删除此楼层吗
扣20点经验值

快速回复进入高级回复

插入图片 选择表情

验证码 看不清?换一张(不区分大小写)

[完成后按Ctrl+Enter发表]
[回复须知]