不知道为什么,感觉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中,去掉以下三个模块的注释
具体理由,在上面那个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的环境,谢谢以上两位的帮助还有许多高手的评论点拨。