Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在Dreamhost共享主机上运行Rails 4_Ruby On Rails_Ruby On Rails 4_Dreamhost - Fatal编程技术网

Ruby on rails 在Dreamhost共享主机上运行Rails 4

Ruby on rails 在Dreamhost共享主机上运行Rails 4,ruby-on-rails,ruby-on-rails-4,dreamhost,Ruby On Rails,Ruby On Rails 4,Dreamhost,RubyonRails非常棒,但是使用RubyonRails进行开发和运行可能是一种令人沮丧的经历,尤其是对于一个新开发人员来说。我碰巧有一本书支持Rails 4,但Dreamhost共享主机支持Rails 3.2。制作网络应用程序,却无法将它们部署到我已经付费的主机上,这让我很难过,但在学习3.2和4语言的同时学习它们的区别并不是一件有趣的事 4>3.2,因此让Rails 4在Dreamhost共享主机上运行似乎是一条可行之路。事实证明,做这件事是有道理的,我在尝试遵循它们时遇到了很多问题。在

RubyonRails非常棒,但是使用RubyonRails进行开发和运行可能是一种令人沮丧的经历,尤其是对于一个新开发人员来说。我碰巧有一本书支持Rails 4,但Dreamhost共享主机支持Rails 3.2。制作网络应用程序,却无法将它们部署到我已经付费的主机上,这让我很难过,但在学习3.2和4语言的同时学习它们的区别并不是一件有趣的事

4>3.2
,因此让Rails 4在Dreamhost共享主机上运行似乎是一条可行之路。事实证明,做这件事是有道理的,我在尝试遵循它们时遇到了很多问题。在登录到远程服务器的命令行上工作是很困难的,部分原因是你会收到错误消息,当谷歌搜索时,这些消息不会给出你可能需要的答案,或者假设你没有知识

我怎样才能让它工作起来,这样我就可以继续学习Rails了

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

    cd
    mkdir build
    cd build
    
    接下来,您应该键入
    http://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p247.tar.gz
    ,但您将得到一个无此类文件或目录错误的提示。您需要使用wget
    wget
    ,也可以使用最新版本的Ruby。或者,在我的例子中,我希望版本1.9.3与我在本地机器上的操作相匹配。将web浏览器指向
    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

  • 下载并安装YAML:Ruby想要YAML。不幸的是,我发现安装YAML的方法也不起作用,这与我们在让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
    之间替换您的home director或用户名。将滚动显示大量内容,但您不应看到任何可怕的错误消息

  • 安装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
    
    同样,您不应该看到任何重大错误消息

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

    export GEM_HOME="$HOME/.gems"
    export GEM_PATH="$GEM_HOME"
    export PATH=~/ruby/bin:$PATH
    
    完全可选,但当您在这里时,您可以设置一个变量来修改命令提示符。我添加了行
    PS1='\w$'
    ,它将我的提示符设置为我所在的目录,并添加了四个前导空格,以便在需要向后滚动终端输出时可以轻松找到我的命令

  • 安装Rails:
    gem安装Rails——下一步应该没有文档,但这也给了我一条错误消息。我想这可能是因为Ruby 1.9.x,在这种情况下,
    gem安装Rails——没有ri——没有rdoc
    应该可以工作。我最终让它工作

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

  • 更新:这一部分似乎很成功。我可以从命令行运行Rails,它报告它是4.2.1版。当我创建一个项目并测试运行它时,在接下来的部分中,我发现
    Rails应用程序无法正确启动
    。但我仍在处理它。我将报告


    这就是我目前得到的!我将在可能的情况下编辑此答案。同时,请参阅了解如何继续,并在此处添加更正、建议和问题。

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

    我终于把我的应用程序上网了,我把下面的内容都发到了codepen上,但我真的很想分享我所做的事情,因为我花了好几个星期才弄清楚

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

    首先,通过添加新用户并授予该用户shell访问权限来设置dreamhost web主机。您还需要取消选中不允许的FTP(用户应该能够使用FTP)

    Web目录将是
    /home/username//public

    PHP模式(当前)PHP5.6FastCGI(默认)

    检查额外的Web安全性

    不检查乘客

    使用我在这里找到的说明:我做了以下操作:

    转到该网站,找到您想要使用的ruby版本
    export GEM_HOME=”$HOME/.gems”
    export GEM_PATH=”$GEM_HOME”
    export PATH=~/ruby/bin:$PATH
    
    <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."
    
    #!/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)