【Ruby on Rails 起步(二)】Windows下搭建RubyonRails 3.0.4 + Mongrel 1.2.0 pre + Apache2.2.17服务器

    技术2026-08-22  26

    不知道为什么,感觉Rails自带的WEBrick有点慢,于是决定利用已有的Apache搭建一个Mongrel的。

    系统是Windows 7,昨天下载的Ruby1.9.2(但是除了主文件夹名是Ruby192,内部文件夹都是1.9.1嘛,这是为神马呢?),gem 1.5.2,Rails 3.0.4,Mongrel 1.2.0 pre2,Apache2.2.17。折腾了一早上,走了各种弯路。特此Mark一下。

     

    从哪里说起呢?我一上来就先Google找别人的搭建经验。主要借鉴了 http://jan.varwig.org/archive/rails-3-and-mongrel 还有 http://robbin.javaeye.com/blog/43290?page=2#comments 。后者是旧版本的Mongrel和Apache设置,前者是关于Rails3 Beta的Mongrel设置。

     

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

    1、首先RoR肯定要装好,gem install rails --include-dependencies

    2、然后是mongrel

    gem install mongrel --pre  (因为稳定版的Mongrel1.1.5不能支持Rails3.0.4,但是毕竟是pre版,将来应该会改成稳定版)

    gem install mongrel_service

     

    3、接下来就是建立自己的项目目录,假设已经建立好了,然后打开Gemfile,其他修改略去,参考varwig的修改,在文件中添加一行

    gem 'mongrel'

    但是我实际操作中这样还是无法用rails server来开启服务器。实际中我添加的是

    gem 'mongrel', '1.2.0.pre2'

    但是这样还是不行,在 Ruby192目录下找/lib/ruby/gems/1.9.1/gems/mongrel-1.2.0.pre2-x86-mingw32/lib下的mongrel.rb文件,删除最后两行,具体理由见http://jan.varwig.org/archive/rails-3-and-mongrel

     

    4、这样设置,其实已经可以了。进入项目目录,运行

    rails server

    就会自动开启Mongrel服务器

     

    => Booting Mongrel

    => Rails 3.0.4 application starting in development on http://0.0.0.0:3000

    => Call with -d to detach

    => Ctrl-C to shutdown server

    但是缺点是每次都要自己运行这个命令。

     

     

     

    5、如果还不够,还想要由Apache默认的80端口访问,那么还要开启Apache的代理。参考http://robbin.javaeye.com/blog/43290?page=1#comments,

    在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 在末尾加上 ======================================= ProxyRequests Off     <Proxy balancer://myCluster>   BalancerMember http://localhost:3000   BalancerMember http://localhost:3001 </Proxy> <VirtualHost *:80>   ServerName localhost   DocumentRoot e:/photos   ProxyPass /images !   ProxyPass /stylesheets !   ProxyPass /javascripts !   ProxyPass / balancer://myCluster/   ProxyPassReverse / balancer://myCluster/   ProxyPreserveHost on </VirtualHost> ========================================= (之前怎么代码块不能正常显示)

    具体理由,在上面那个blog的末尾和讨论中。主要是为了均衡负载。

     

     

     

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

    至此,已经可以启动Mongrel服务器了,还有注册成系统服务,按说应该可以始终可以访问,但是我

    设置成为服务并开启服务后,离开cmd下的rails server命令,看样子好像不能运行。就是没有rails s

    的话直接访问localhost:3000不能,而且有个小问题,CPU占用率呈现周期性的100%,进程名是ruby

    大概是因为1.2.0 pre还是不稳定版本,因此必须用rails server来运行。

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

     

    6、如果要自动一点,那要再多设置一点。运行

    mongrel_rails service::install -N [servicename] -c [project dir] -p [port] -e [edition]

    servicename是要创建的系统服务项目

    project dir是存放项目的目录

    port是开放的端口,惯例是设成3000

    edition是项目的版本,development或者test或者production

     

    我输入了

    mongrel_rails service::install -N photo -c E:/photos -p 3000 -e development

    这样之后,在任务管理器的服务标签里找到photo服务,开启服务,然后在浏览器里输入 localhost:3000就可以显示Welcome aboard的欢迎信息了,以后可以通过这个端口直接访问。

     

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

    于是就搭建好了RoR的环境,谢谢以上两位的帮助还有许多高手的评论点拨。

     

     

     

    最新回复(0)