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

你可能感兴趣的:(Rails,Ruby,Apache,Unix,DOS)