【问题标题】:Running Rails 4 on Dreamhost shared hosting在 Dreamhost 共享主机上运行 Rails 4
【发布时间】:2015-06-14 19:52:57
【问题描述】:

Ruby on Rails 非常棒,但开始使用它可能会令人沮丧,尤其是对于新开发人员而言。我碰巧有一本做 Rails 4 的书,但是 Dreamhost 共享主机支持 Rails 3.2。制作 Web 应用程序但无法将它们部署到我已经付费的主机上让我很伤心,但是在实际学习语言的同时了解 3.2 和 4 之间的差异并不有趣。

4 > 3.2,所以看起来让 Rails 4 在 Dreamhost 共享主机上运行是可行的方法。原来有instructions online 这样做,我在尝试遵循它们时遇到了许多问题。在登录到远程服务器的命令行上工作很困难,部分原因是您会收到错误消息,当您使用 Google 搜索时,这些错误消息不会产生您可能需要的答案,或者假设您没有知识。

我怎样才能让它发挥作用,以便继续学习 Rails?

【问题讨论】:

  • 您在使用 VPN 吗?我只能通过 VPN 而非共享主机运行它。
  • 我正试图让它在共享主机上运行。刚刚更新了问题以反映这一点,并更新了反映最新进展的答案。欢迎输入。 @JasonMorelandDigitalrecline
  • 无法在共享主机上更新它,因为您无法更改环境内容。唯一的方法是dreamhost VPN。然后它基本上是你的盒子,你有改变环境和安装你自己的软件的 root 访问权限。共享主机不允许进行必要的更改,因为它可能会破坏其他设置
  • wiki.dreamhost.com/RVM 是您最好的选择。
  • @JasonMorelandDigitalrecline VPN 并不是一个真正的选择。但事情是这样的——我已经从命令行运行了 Ruby 1.9.3 和 Rails 4.2.1。虽然还没有得到它来托管一个网站。你是说它仍然没有希望吗?

标签: ruby-on-rails ruby-on-rails-4 dreamhost


【解决方案1】:
  1. 登录 SSH: 您需要做的第一件事是在命令行上登录 Dreamhost 服务器。打开终端(在 Mac 上)并输入 ssh -l [username] [hostname]。此处的用户名不是您登录 Web 面板时使用的用户名,而是您在 Web 面板的“管理用户”下看到的用户名。您可能需要将该用户帐户切换为“Shell 用户”。 (您还需要此帐户的密码。)主机名是您网站的网址。我输入ssh -l alesh alesh.com
  2. 下载 Ruby:您将要下载和安装很多东西,并且需要一个临时目录来工作,因此请按照 Adam 的说明输入

    cd
    mkdir build
    cd build
    

    接下来你应该输入http://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p247.tar.gz,但你会得到一个没有这样的文件或目录错误。你需要使用wget,你也可以去获取最新版本的Ruby。或者,就我而言,我希望 1.9.3 版本与我在本地机器上所做的相匹配。将您的网络浏览器指向http://cache.ruby-lang.org/pub/ruby/ 并选择一个版本。我不确定选择的最佳策略是什么,但我知道 1.9.3 和 2.0.0 都适用于 Rails 4。复制文件的链接,以 .tar.gz 结尾,然后将其粘贴到终端中。你最终会得到这样的结果:

    wget http://cache.ruby-lang.org/pub/ruby/ruby-1.9.3-p551.tar.gz
    

    此时,当我尝试继续编译 Ruby 时,我收到了错误消息,整个事情都崩溃了。如果您遇到问题,您可以跳过下一步并返回,但您必须重新安装 Ruby。

  3. 下载并安装 YAML: Ruby 需要 YAML。不幸的是,我发现用于安装 YAML 的 instructions 也不起作用,原因与我们在让 Ruby 正常工作时遇到很多麻烦的原因相同:我们在共享的 Dreamhost 服务器上没有对 sudo 的完全访问权限。但这应该可行:

    wget http://pyyaml.org/download/libyaml/yaml-0.1.5.tar.gz
    tar xzf yaml-0.1.5.tar.gz
    cd yaml-0.1.5
    ./configure --prefix /home/alesh/ruby
    make
    make install
    

    (请记住在/home//ruby 之间替换您的家庭主管或用户名。一大堆内容会滚动显示,但您应该不会看到任何可怕的错误消息。

  4. 安装 Ruby: 现在 Ruby 应该可以正确安装了。替换您在这些说明中下载的任何版本。同样,其中一些步骤将需要很长时间才能运行:

    cd ..
    tar xzf ruby-1.9.3-p551.tar.gz
    cd ruby-1.9.3-p551
    ./configure --prefix /home/alesh/ruby
    make install
    

    同样,您应该不会看到任何重大错误消息。

  5. 编辑您的 bash 配置文件:您可以从命令行执行此操作,但打开 FTP 客户端到您的 Dreamhost 主目录并编辑文件 .bash_profile 会更容易。您可能需要启用显示隐藏文件。将这些行添加到末尾并保存:

    export GEM_HOME="$HOME/.gems"
    export GEM_PATH="$GEM_HOME"
    export PATH=~/ruby/bin:$PATH
    

    完全可选,但是当您在这里时,您可以设置一个变量来修改您的命令提示符。我添加了PS1=' \w$ ' 行,它将我的提示设置为我所在的目录,并添加了四个前导空格,因此如果我需要向后滚动终端输出,我可以轻松找到我的命令。 possibilities are many

  6. 安装 Rails: gem install rails --no-document 应该是下一步,但这也给了我一条错误消息。我认为这可能是因为 Ruby 1.9.x,在这种情况下 gem install rails --no-ri --no-rdoc 应该可以工作。我最终让它工作了

    gem install rails
    

    这将安装最新版本的 Rails。我相信您可以指定这样的版本:gem install rails:4.0.0

更新:这部分似乎是成功的。我可以从命令行运行 Rails,它报告它的版本是 4.2.1。当我创建一个项目并测试运行它时,遵循Adam's instructions 的其余部分,我得到Rails application failed to start properly。但我仍在努力。会回来报告的。

http://alesh.com/rails/demo/

这就是我目前所知道的!我会尽可能编辑这个答案。同时,请参阅Adam's blog post 了解如何继续,并在此处添加更正、建议和问题。

【讨论】:

    【解决方案2】:

    我也找到了这些说明。它们与 Dreamhost 上的大多数其他 Rails 文档一样,有点……过时了。

    我终于将我的应用程序上线了,并将以下所有内容发布到 codepen,但我真的很想分享我所做的事情,因为我花了数周时间才弄清楚这一切。

    这是我为使 Ruby 2.2.1p85 和 Rails 4.2.4 在 Dreamhost 共享服务器上工作所做的工作的完整列表。这是通过从头开始使用全新的托管域来完成的。这不能与使用Passenger 的VPS 一起使用。

    首先,通过添加新用户并授予该用户 shell 访问权限来设置 dreamhost 网络托管。您还需要取消选中禁止 FTP(用户应该能够使用 FTP)。

    Web 目录将是 /home/username/<domain-name>/public

    PHP 模式(当前)PHP 5.6 FastCGI(默认)

    检查额外的网络安全

    不检查乘客

    使用我在此处找到的说明:http://adamish.com/blog/archives/775 我做了以下操作:

    访问网站http://cache.ruby-lang.org/pub/ruby/ 并找到您想要使用扩展名*.tar.gz 的ruby 版本并将其下载到您的系统中。使用 FTP(例如 filezilla)将该文件上传到您的服务器中名为 build 的新文件夹中。

    通过转到终端并输入ssh <username>@<domain-name> 登录您的shell 帐户,这将提示您输入密码。输入它并转到您的构建文件夹。

    输入:tar xzf <your-ruby-filename.tar.gz>

    输入:cd <your-uncompressed-ruby-folder>

    输入:./configure --prefix /home/<username>/ruby

    输入:make install

    完成后(需要一段时间),输入cd ~ 并打开您的 .bash_profile(我使用 vim,nano 也应该可以)进入您的主目录。

    将以下内容添加到 .bash_profile:

    export GEM_HOME=”$HOME/.gems”
    export GEM_PATH=”$GEM_HOME”
    export PATH=~/ruby/bin:$PATH
    

    现在您可以通过键入:gem install rails -v <Rails-version-number>

    来安装 rails

    在您的个人计算机上,我建议您在上传之前清除缓存。您不必这样做,但它会节省一些时间。你可以通过输入rake tmp:cache:clear来做到这一点

    您现在可以通过 FTP 或 git 上传您的 rails 应用程序,但请确保您位于目录 /home/<username>/<domain-name>

    所有文件上传完毕后,首先通过 nano 或 vim 访问您的 Gemfile

    取消注释gem 'therubyracer' 行并添加gem 'fcgi'。保存并输入bundle install

    导航到您的<domain-name>/public 文件夹并创建两个新文件,.htaccessdispatch.fcgi

    您的.htaccess 文件应如下所示:

    <IfModule mod_fastcgi.c>
    AddHandler fastcgi-script .fcgi
    </IfModule>
    <IfModule mod_fcgid.c>
    AddHandler fcgid-script .fcgi
    </IfModule>
    
    Options +FollowSymLinks +ExecCGI
    
    RewriteEngine On
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ dispatch.fcgi/$1 [QSA,L]
    
    ErrorDocument 500 "Rails application failed to start properly."
    

    你的dispatch.fcgi 文件是这样的:

    #!/home/<username>/ruby/bin/ruby
    ENV['RAILS_ENV'] = 'production'
    ENV['HOME'] ||= `echo ~`.strip
    ENV['GEM_HOME'] = File.expand_path('~/.gems')
    ENV['GEM_PATH'] = File.expand_path('~/.gems')
    require 'fcgi'
    require File.join(File.dirname(\__FILE\__),     '../config/environment.rb')
    class Rack::PathInfoRewriter
      def initialize(app)
        @app = app
      end
      def call(env)
        env.delete('SCRIPT_NAME')
        parts = env['REQUEST_URI'].split('?')
        env['PATH_INFO'] = parts[0]
        env['QUERY_STRING'] = parts[1].to_s
        @app.call(env)
      end
    end
    Rack::Handler::FastCGI.run  Rack::PathInfoRewriter.new(<application-name>::Application)
    

    注意:应用程序名称可能与您的域名不同。

    这对我有用。我还是 Rails 的新手,还没有使用过任何类型的数据库。我敦促任何对此设置有疑虑的人发表评论或编辑这篇文章,因为当前没有很好的文档可以将现代 Ruby on Rails 与 Dreamhost 共享服务器结合使用。

    更新

    虽然这种方法有效并且让一切都在说话,但只要我设置了一个强大的应用程序,它就会被他们的 procwatch 杀死。他们的支持告诉我我使用了太多 RAM,但不会告诉我我使用了多少或他们的限制是什么。我已经切换了托管服务并且没有遇到任何问题。

    【讨论】:

      猜你喜欢
      • 2010-11-17
      • 2012-05-10
      • 2012-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多