WEBrick不会使用Rails 4.2.0版本在Web浏览器中显示内容

时间:2014-12-28 06:35:30

标签: ruby-on-rails webrick

我一直在使用Amazon EC2进行我的开发练习。(我不是那么有经验并且现在自己学习)通常,我可以在Amazon linux EC2中使用ruby版本2.0.0和rails 4.0.1完成我的任务。我的第一个教程指示我用这些版本进行练习。(对于ruby和rails)当我运行rails server时,没有问题,这使WEBrick工作,我可以在Web浏览器上看到我的作品。

前几天我认识Ruby on Rails Tutorial,所以我想学习使用Ruby on Rails Tutorial(Michael Hartl)的rails。所以我制作了另一个Amazon EC2并使用putty访问并下载了我需要的内容。这就是我所做的。

#for rvm
gpg --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3
\curl -sSL https://get.rvm.io | bash -s stable

#with rvm
source .bash_profile
rvm install ruby

#and for rails
gem install rails -v 4.2.0.rc3 --no-ri --no-rdoc

#then I made my sample_app
rails new sample_app --skip-bundle

#made 'therubyracer' works with deleting the "#" sign
#and with "sudo yum install sqlite-devel"(I don't know what this part means but server said I need it, so I just did)

然后我用rails server

运行我的WEBrick
=> Booting WEBrick
=> Rails 4.2.0 application starting in development on http://localhost:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
[2014-12-28 05:54:29] INFO  WEBrick 1.3.1
[2014-12-28 05:54:29] INFO  ruby 2.0.0 (2014-11-13) [x86_64-linux]
[2014-12-28 05:54:29] INFO  WEBrick::HTTPServer#start: pid=25353 port=3000

这个非常常见的评论即将发布但我无法通过我的“IP:3000”访问我的服务器(我用于访问putty,所以我不认为这个IP是错误的)和Chrome浏览器只是说“这个网页不可用”。我的新EC2的安全组也与之前用于其他练习的安全组完全相同,所以这也不是导致此错误的原因。我使用亚马逊免费支持的其他AMI多次完成这些工作但是当我修补那些高版本的rails(4.2.0)时我失败了。

非常奇怪,因为终端说WEBrick正在运行,但实际上我无法访问。你能给我任何帮助或建议,找出问题所在吗?我是如此缺乏经验,任何帮助或评论对我来说都是一个巨大的教训,让我继续学习。谢谢。

4 个答案:

答案 0 :(得分:8)

默认情况下,Rails 4.2不再侦听所有接口:在同一台机器上运行时,您需要连接到

http://127.0.0.1:3000

(Localhost也应该工作)。

但是,因为它听起来像是连接到远程服务器所以你需要使用-b选项绑定到额外的IP地址,例如

rails s -b 192.168.1.1

答案 1 :(得分:0)

正如Frederick所说,现在需要-b选项,您通常可以使用公共IP,并确保指定您在安全组中打开的端口号。

rails s -b PUBLIC_IP_HERE -p 3000

此外,如果您使用的是亚马逊的VPC,您应该使用EC2控制台中提供的私有IP 和“rails s -b”,而不是公共IP

答案 2 :(得分:0)

确保您的安全组有TCP 3000规则。

然后,您可以使用公共DNS:

rails server -b ec2-XX-XX-XX-XX.us-west-2.compute.amazonaws.com -p 3000

这适合我。

答案 3 :(得分:0)

您需要将rails绑定到您的AWS实例专用 IP地址,以便在实例的公共IP上远程访问服务器。您将在AWS Instance仪表板描述选项卡中找到专用IP。

例如>> rails s -b -p 3000