浏览 4907 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2006-11-10
1. mongrel(...)支持吗? 2. 程序中如何处理绝对路径/相对路径? 。。。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2006-11-10
http://www.railscn.com/viewtopic.php?t=2479
两边问,要两边订阅, 才能及时得到回复 |
|
返回顶楼 | |
发表时间:2006-11-10
谢谢
在这里: http://www.caiwangqin.com/post/214 |
|
返回顶楼 | |
发表时间:2006-11-10
把所有静态url都改成动态的......
当然是可以解决问题的,但是很恶心。 目前我能想到的最好的办法是用<base>标签,对于应用中已经存在的大量/images/,只需做一下文本替换即可,修改量要小得多。 rails在设计之初就没有“应用”的概念,一个应用就要占据一个vhost,太霸道了。 |
|
返回顶楼 | |
发表时间:2006-11-11
这个问题我比较关注。
google了一下,发现这个"How to setup multiple apps on Ruby on Rails and Lighttpd" http://jarednevans.typepad.com/technoblog/2006/03/how_to_setup_mu.html但这个人给出的答案并不是我想要的。 如同"半人马"所说,rails“一个应用就要占据一个vhost,太霸道了” 我想知道这个问题的解决办法:假如有app1和app2,该怎么办(该问题的背景请参考上面的连接中的内容,另外你也可以参考一下php,对于php来说,app1和app2也就是两个目录,丢在主机上就ok了,那么rails呢)? |
|
返回顶楼 | |
发表时间:2006-11-14
下面是Apache+Mongrel上host多个rails应用的方法,提供需要的人使用。
1. 软件版本 我用的操作系统是Redhat Linux 2.4.21-37.EL 系统安装时带的Apache httpd 2.0.46-54ent ruby 1.8.5 rails 1.1.6 mongrel 0.3.13.4 2. 课题 你有一个可以运行的rails应用app1,要将它部署在httpd http://host/上,并在http://host/app1下访问 3. 实施步骤 a) 在apache httpd.conf相同目录下创建新的配置文件http-mongrel-proxy.conf输入以下内容 ProxyRequests Off <Proxy *> Order deny,allow Allow from all </Proxy> ProxyPass /app1 http://127.0.0.1:3000/app1 ProxyPassReverse /app1/ http://127.0.0.1:3000/app1 b) 确认httpd.conf中打开了 LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_http_module modules/mod_proxy_http.so几项,并在httpd.conf末尾添加一行将新的配置文件包含进来 Include conf/http-mongrel-proxy.conf c) 在app1项目路径下启动mongrel mongrel_rails start --prefix=/app1 -e production其中--prefix是mongrel新版本中专门为了解决我们的课题提供的新选项。其它的启动选项如-d什么的自己加 d) 重启httpd e) 如果你的rails应用按照rails惯例开发,你会发现你的images, stylesheet甚至是一些form action都不起作用。这是因为你在rhtml中使用了/images/, /stylesheets/, /action/view这样的绝对路径。 我建议的解决办法是在你的layout文件中设置<base href=" <%= $htmlbase %> " >,并修改所有以/开头的绝对路径为相对路径。 在config/environment/production.rb中添加全局变量定义 $htmlbase="http://host/app1/fake.html"其中fake.html可以不存在。 为了保持开发时的方便,在config/environment/development.rb中添加定义 $htmlbase="http://host:3000/fake.html" 这样开发和部署时的代码不用改来改去了。 f) 优化。 现在你的应用应该可以按照你预想的方式运行了,现在我们作一点小优化,让mongrel只负责动态内容的处理,让apache去处理静态信息。 确认httpd.conf中打开了 LoadModule alias_module modules/mod_alias.so 编辑http-mongrel-proxy.conf,在proxypass语句之前添加以下配置: Alias /app1 "/path/to/app1/public" <Directory "/path/to/app1/public"> Options Indexes FollowSymLinks MultiViews AllowOverride none Order allow,deny Allow from all </Directory> ProxyPass /app1/images ! ProxyPass /app1/stylesheets ! ProxyPass /app1/javascripts ! 其中ProxyPass ... !语句是让proxy不要管这些静态内容,让alias来管。 重启apache,这时候应该可以看到你期望看到的页面了。 这个步骤中你可能遇到的问题是静态内容的permission denied。这时候你需要给用户apache访问/path/to/app1/public的读权限。举个例子: 我的/path/to/app1/public是/home/centaur/workspace/app1/public,这时需要做两件事: 第一件,将用户apache加入centaur组(创建centaur用户时的缺省初始组),moduser命令自己查 第二件,为/home/centaur目录添加组成员可执行权限(x),一般这个目录的缺省权限是700 g) 下面你按照上面的方法可以host你的app2, app3,当然每个mongre_rails启动时占用的端口要不一样,在http-mongrel-proxy.conf中也要添加相应的配置。 h) 以上内容绝非原创,参考了N多前辈的成果,但是我这个应该更准确更实用一点。也请神原谅我的懒,等有人找我麻烦的时候再写参考文献一节吧。 |
|
返回顶楼 | |
发表时间:2006-11-14
半人马 写道 以上内容绝非原创,参考了N多前辈的成果,但是我这个应该更准确更实用一点。也请神原谅我的懒,等有人找我麻烦的时候再写参考文献一节吧。
今天才明白了一些潜规则 http://bd7lx.iteye.com/blog/34263 不要links http://bd7lx.iteye.com/blog/34238 自信心大增 还有起始帖子最好别有links, 显得不专业,不原创, 有links 就像是广告 比如 http://127.0.0.1/yuanchuang |
|
返回顶楼 | |