本来以前就部署过,不过每次相隔时间都比较长,于是每次都Google一遍,实在太浪费时间,还是自己记下来比较好。
主要参考的是Radiant这个用rails写的内容管理系统的wiki文章,讲如何在Bluehost上部署Radiant。我觉得关键有这么几点:
1. 修改.htaccess文件
把Handler那几行改成:
# General Apache options AddHandler fcgid-script .fcgi # AddHandler cgi-script .cgi # Options +FollowSymLinks +ExecFCGI
2.修改dispatch.fcgi
加上这么几句:
ENV['RAILS_ENV'] = 'production' ENV["GEM_HOME"]= "/home/[USER_NAME]/ruby/gems" ENV["GEM_PATH"]= "/home/[USER_NAME]/ruby/gems:/usr/lib/ruby/gems/1.8"
不过我觉得后面两句应该用处不大,是跟他前面的相呼应的,如果你用到一些自己安装的gems,就应该follow这篇文章。
3. 修改文件夹权限
我是把public,tmp和log三个文件夹的权限都变成了755。cd到rails应用根目录下,比如说rails/yourapp:
chmod -R 755 public
chmod -R 755 tmpchmod -R 755 log
4. 建立符号链接
把rails/yourapp/public链接到public_html里面的一个子目录:
ln -s ~/radiant_app_folder_name/public ~/public_html/website_name
但是我这么弄了之后还是不行,后来找到Rails Google Group里面的讨论也有点用。正好我是要把应用作为账户的根目录使用,于是
$ mv ~/public_html ~/original_public_html
$ ln -s ~/rails-apps/myapp/public ~/public_html
然后就可以访问了:http://www.flexgtd.com
值得说明一下的是,bluehost上cpanel里面那个ruby on rails的安装向导一点也不好用,不要用那个来部署。我被搞得晕头转向也没搞明白怎么弄,而且觉得它的灵活性太差。