2008-03-09

配置HostMonster上的Rails

关键字: hostmonster rails
HostMonster是美国的虚拟主机商,性价比很高并支持ROR。虽然是虚拟机,由于rails的一些特殊性,配置起来还是费了不少功夫。

首先是代码要与gem版本兼容(freeze一下应该也行)。把/rails_app/public/dispatch.cgi的权限设为755,第一行改为#!/usr/bin/ruby,这样就可以用www.domain.com/rails_app/public/来访问。

cpanel里的ROR图标可以启动一个mongrel,但CPU有限制不能连续运行,所以完全无用。(这里郁闷了好久- -)

然后创建一个子域名sub.domain.com指向/public_html/rails_app/public/,就可以直接用域名访问了。但我想用www.domain.com来访问,而默认只能指向根目录,只能用apache rewrite间接实现:
编辑/public_html/.htaccess
RewriteCond %{HTTP_HOST} ^www.domain.com$
RewriteRule ^/?(.*)$ /rails_app/public/$1 [QSA,L]

在application.rb添加如下代码,url_for就不会生成相对路径
def default_url_options(options)
  {:skip_relative_url_root=>true}
end


最后一步是禁止直接访问rails文件,编辑/rails_app/.htaccess
RewriteCond %{HTTP_HOST} ^domain.com$
RewriteRule ^/?(.*)$ / [F]
评论
swordray 2008-04-12   回复
to angmeng

编辑/public_html/.htaccess,不是/public_html/rails_app/public/.htaccess
angmeng 2008-04-07   回复
请问这两行
# RewriteCond %{HTTP_HOST} ^www.domain.com$ 
# RewriteRule ^/?(.*)$ /rails_app/public/$1 [QSA,L]
是不是加载下面4行的后面?

RewriteRule ^$ index.html [QSA]
RewriteRule ^([^.]+)$ $1.html [QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]
weskycn 2008-03-18   回复
仙人指路
发表评论

您还没有登录,请登录后发表评论

swordray
搜索本博客
最近加入圈子
存档
最新评论