Ruby on rails 在Dreamhost共享主机上运行Rails 4
RubyonRails非常棒,但是使用RubyonRails进行开发和运行可能是一种令人沮丧的经历,尤其是对于一个新开发人员来说。我碰巧有一本书支持Rails 4,但Dreamhost共享主机支持Rails 3.2。制作网络应用程序,却无法将它们部署到我已经付费的主机上,这让我很难过,但在学习3.2和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共享主机上运行似乎是一条可行之路。事实证明,做这件事是有道理的,我在尝试遵循它们时遇到了很多问题。在
4>3.2
,因此让Rails 4在Dreamhost共享主机上运行似乎是一条可行之路。事实证明,做这件事是有道理的,我在尝试遵循它们时遇到了很多问题。在登录到远程服务器的命令行上工作是很困难的,部分原因是你会收到错误消息,当谷歌搜索时,这些消息不会给出你可能需要的答案,或者假设你没有知识
我怎样才能让它工作起来,这样我就可以继续学习Rails了
ssh-l[username][hostname]
。此处的用户名不是您登录web面板时使用的用户名,而是您在web面板的“管理用户”下看到的用户名。您可能需要将该用户帐户切换为“Shell user”。(您还需要该帐户的密码。)主机名是您网站的url。我键入ssh-l alesh-alesh.com
cd
mkdir build
cd build
接下来,您应该键入http://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p247.tar.gz
,但您将得到一个无此类文件或目录错误的提示。您需要使用wgetwget
,也可以使用最新版本的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时,我收到了错误消息,整个过程都崩溃了。如果您遇到问题,可以跳过下一步并返回到它,但您必须重新安装Rubysudo
。但这应该是可行的:
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或用户名。将滚动显示大量内容,但您不应看到任何可怕的错误消息cd ..
tar xzf ruby-1.9.3-p551.tar.gz
cd ruby-1.9.3-p551
./configure --prefix /home/alesh/ruby
make install
同样,您不应该看到任何重大错误消息。bash\u配置文件
。您可能需要启用显示隐藏文件。将这些行添加到末尾并保存:
export GEM_HOME="$HOME/.gems"
export GEM_PATH="$GEM_HOME"
export PATH=~/ruby/bin:$PATH
完全可选,但当您在这里时,您可以设置一个变量来修改命令提示符。我添加了行PS1='\w$'
,它将我的提示符设置为我所在的目录,并添加了四个前导空格,以便在需要向后滚动终端输出时可以轻松找到我的命令gem安装Rails——下一步应该没有文档,但这也给了我一条错误消息。我想这可能是因为Ruby 1.9.x,在这种情况下,gem安装Rails——没有ri——没有rdoc
应该可以工作。我最终让它工作
gem install rails
这将安装最新版本的Rails。我相信您可以指定如下版本:gem安装Rails:4.0.0
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)