• 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

  • 相关阅读:
    如何卸载服务(转)
    The Frightening Science of Prediction: How Target & 10 Others Make Money Predicting Your Next Life Event(转摘)
    如果你迷恋厚实的屋顶,就会失去浩瀚的繁星
    李开复:移动互联网创业不要总是“入口思维”(转)
    [微言]增长与幸福 zz
    缔元信
    Tabledriven Approach
    北京医院排名 很有用,留下了
    青春期企业如何突围(转)
    意大利罗马&佛罗伦萨 攻略
  • 原文地址:https://www.cnblogs.com/sinkzephyr/p/1277756.html
Copyright © 2020-2023  润新知