告别 ROR windows 部署的噩梦-在 windows 上面 使用 Apache 部署 Ruby On Rails

今天去赛博把给朋友做的网站部署一下,服务器是一台windows2003的服务器。本身没想到在windows2003上面配置 ROR 是一场噩梦,因为网上看到了很多的 IIS 和 ROR 文档。不做不知道,一做才知道那简直是噩梦。忙到下午5点多还是没有配置好,晚上回来冷静下来想了想,有些地方不对,换个思路去做也许可以很ok。

大体思路是安装一个apache监听到8080端口,然后利用apache转向到mongrel上就ok了。说说具体的步骤。

  1. 首先是从网上下载windows版本的ruby,安装,记得要装gem哦。
  2. 安装rails,mongrel,和mongrel_servicegem install rails
    gem install win32-service
    gem install mongrel
    gem install mongrel_service
  3. 准备 ROR 程序,我就已经ok的山大路程序
  4. 把 ROR 程序添加成windows服务
    mongrel_rails service::install -N myapp -c c:\myapp -p 4000 -e production
    你也可以使用mongrel_rails service::remove -N myapp 去删除他。
    现在注册成服务你就可以在控制面板、管理工具、服务里面管理网站了,设置成自动启动就ok了。
  5. 安装apache,选择使用端口8080的那个选项就ok了,防止和iis冲突了。不过下面要修改httpd.conf文件,取消一下三行的注释。
    LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_connect_module modules/mod_proxy_connect.so LoadModule proxy_http_module modules/mod_proxy_http.so
  6. 在httpd.conf最后加上proxy pass的设置
    ProxyPass /myapp http://127.0.0.1:4000/
    ProxyPassReverse /myapp http://127.0.0.1:4000/

这样就可以使用http://127.0.0.1:8080/myapp来访问了。不过有个问题,就是你的图片和css之类的都会因为路径问题而无法显示。解决办法在javaeye里面看到一个,下面给出代码,还是在httpd.conf的最后添加几行代码,当然上面的proxy的要删除。

  1. ProxyRequests Off       
  2. <Proxy balancer://myCluster>
  3.   BalancerMember http://localhost:4000       
  4.   BalancerMember http://localhost:4001       
  5. </Proxy>
  6. <VirtualHost *:8080>
  7.   ServerName www.cpu123.com       
  8.   DocumentRoot d:/sdroad/public       
  9.   ProxyPass /images !       
  10.   ProxyPass /stylesheets !       
  11.   ProxyPass /javascripts !       
  12.   ProxyPass / balancer://myCluster/       
  13.   ProxyPassReverse / balancer://myCluster/       
  14.   ProxyPreserveHost on       
  15. </VirtualHost>

好了,都搞定了,有时间了去市里在配置一下。发现自己有时候很倔强,想完成的东西不弄成直接受不了。不弄出来不睡觉,弄出来了就要狂睡,嘿嘿,现在去睡觉啦。

posted @ 2007-05-31 00:33 JesseZhao 阅读(3223) 评论(10)  编辑 收藏 网摘 所属分类: M Ruby

  回复  引用  查看    
#1楼 2007-05-31 08:18 | aspnetx      
好些时间没看到小赵了
最近忙毕业设计呢吗?
  回复  引用  查看    
#2楼 2007-05-31 10:01 | Cat Chen      
那就是说RoR应用无法和IIS共同使用80端口?
  回复  引用  查看    
#3楼 2007-05-31 10:02 | Cat Chen      
@aspnetx
他大三还不需要毕业设计啊……
  回复  引用  查看    
#4楼 2007-05-31 11:52 | Cure      
  回复  引用  查看    
#5楼 2007-05-31 14:23 | Cat Chen      
@Cure
我也想问问Jesse Zhao这样的做法对比Instant Rails是不是有什么优势……
  回复  引用    
#6楼 2007-05-31 14:59 | 老妖 [未注册用户]
汗,早说嘛,这个资料在mongrel主站上边老早就有了呀。
  回复  引用  查看    
#7楼 2007-05-31 15:34 | 横刀天笑      
由于机器上有IIS,IIS上挂了其他网站把80端口给占用了,我开始也想在IIS上建rails应用,噩梦开始了,一晚上啊,没合眼,看了一大堆英文文档,尝试了n种方法没有成功,没有办法只有用apache了,只可惜不能用80端口了,网站只能用个域名带个端口奔跑在网络上真不是个滋味。。。
  回复  引用  查看    
#8楼 [楼主]2007-05-31 16:52 | JesseZhao      
@横刀天笑
你可以在80端口上面写个asp的程序redirect到你的 url:port
就ok了

  回复  引用  查看    
#9楼 [楼主]2007-05-31 16:54 | JesseZhao      
@Cure
@Cat Chen
InstantRails 部署的只能用域名转向或者直接输入ip地址加端口访问
  回复  引用  查看    
#10楼 2007-06-05 20:39 | Cat Chen      
理论上Windows XP/2003是可以多个应用共享一个http端口的,只要用host来区分就是了。以往还是winsock的时代,一个tcp的ip:port只能被一个进程绑定,但是Windows XP开始引入http.sys,使用一个核心驱动来处理所有的http请求,于是就可以根据host进行分拣。不过Apache貌似不会专门为Windows增加这方面的支持,呵呵……

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2007-05-31 00:41 编辑过
"五向定位"职业成长路线公开课(上海、南京、大连)
Google站内搜索


相关链接: