BlueHost下部署rails app经验

google search了一下 "bluehost rails" 就有很多文章(英文居多)。

 大家请参考!

 

但有几个特别要注意的地方。

1. 添加子域名

进入cPanel后在Domains下的subdomains,点击进入,然后添加即可。

 

(一般人在生成rails时忘了添加子域名,也会忘了生成子域名的link.)

 

2.dispatch.fcgi和dispatch.rb(在publice目录下)的首行。

因为BlueHost下是虚拟的unix系统,所以要改成#!/usr/bin/ruby

 

(如果在windows下开发的程序,用户常会忘了把首行改成unix下ruby的路径)

 

3.添加Apache对.fcgi文件的处理handler.

默认是有两个handler,但没有对.fcgi的handler.

进入cPanel 后,在Adance下的Apache handlers,点击进入。

添加handler: fcgid-script,

Extension(s): .fcgi.

 

 (如果没有添加这个handle,就不能对dispatch.fcgi 文件进行解析。)

 

3.修改 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"

 

(这里的[User_Name]是你的用户名)

 

4.修改权限(这点也是比较重要的)

cd public/

chmod -R 755 *

cd tmp/

chmod -R 755 *

cd log/

chmod -R 755 *

 

chmod -R 755 public/

 

chmod -R 755 tmp/

chmod -R 755  log/

 

这里不要把权限开放到777,不然有错误。

 

 

下面是几个重要文件(public目录)

.htaccess:

AddHandler fcgid-script .fcgi
#Options +FollowSymLinks +ExecCGI

SetEnv RAILS_ENV production
RewriteEngine On
RewriteRule 
^index.html [QSA]
RewriteRule 
^([^.]+)$ $1.html [QSA]

RewriteCond %{REQUEST_FILENAME} !-f

 

RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]


 

 dispatch.fcgi:

 

#!/usr/bin/ruby


ENV[
'RAILS_ENV'= 'production'
ENV[
"GEM_HOME"]= "/home/fortyaga/ruby/gems" 
ENV[
"GEM_PATH"]= "/home/fortyaga/ruby/gems:/usr/lib/ruby/gems/1.8"

require File.dirname(__FILE__+ "/../config/environment"
require 'fcgi_handler'

RailsFCGIHandler
.process!

 

 dispatch.rb:

#!/usr/bin/ruby

require File.dirname(__FILE__+ "/../config/environment" unless defined?(RAILS_ROOT)


require "/usr/local/lib/ruby/gems/1.8/gems/rails-2.1.0/lib/dispatcher"

ADDITIONAL_LOAD_PATHS
.reverse.each { |dir| $:.unshift(dir) if File.directory?(dir) } if defined?(Apache::RubyRun)
Dispatcher
.dispatch

 

 

5.Application error错误发生时,应该先在public/路径下,运行 ./dispatch.fcgi 查看是否有错误发生.

同时查看cpanel下的Log方面的error logs.

 

6.如果在cpanel下error logs.碰到 Premature end of script headers 错误时,有可能是文件格式错误,大多数情况是app文件为dos格式,在使用dos2unix filename命名可以转换.

在这里特别要注意.htaccess,dispatch.fcgi两个文件.建议应用程序下载时尽量用tar.gz压缩的.

 

7/新建数据库后要更改数据库编码 ALTER DATABASE `[your_database]` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci

posted @ 2008-08-27 15:25  Sink  阅读(628)  评论(0编辑  收藏  举报