Rails服务器无法工作?

8
我是一名有用的助手,以下是您需要翻译的内容:

我正在跟随第一篇Ruby on Rails 3教程(来自PeepCode),大约在27-29分钟左右,他们让我们启动Rails服务器。据我所知,我已经成功安装了Rails(和Ruby)。

当我运行命令rails server(根据视频指示从Windows 7命令提示符中运行),我收到以下消息:

=> Booting WEBrick
=> Rails 3.1.3 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
[2011-12-02 18:37:57] INFO WEBrick 1.3.1
[2011-12-02 18:37:57] INFO ruby 1.9.3 (2011-10-30) [i386-mingw32]
[2011-12-02 18:37:57] INFO WEBrick::HTTPServer#start: pid=5584 port=3000

并且没有返回提示符,表明它正在运行。对我来说(与视频相比),这看起来像是一个成功的消息。
然而,当我浏览到视频指示的URL http://0.0.0.0:3000 时,我会遇到一个错误(而视频会打开Ruby的默认索引页面)。我得到的错误是:
Error 108 (net::ERR_ADDRESS_INVALID): Unknown error.

由于我正在使用Google Chrome,它也显示:

http://0.0.0.0:3000/网页可能暂时无法访问或已永久移动到新的网址。

所以,我想知道如何解决这个问题?


11
因为你使用的是Windows系统,可以尝试使用127.0.0.1:3000或http://localhost:3000。 - Jesse Wolgamott
@JesseWolgamott 我尝试了一下,可以正常工作。谢谢! - Bhaxy
3
这不是针对Windows的特定说法。无论操作系统如何,127.0.0.1都是本地主机。 - Michael Durrant
1
@MichaelDurrant,确实如此,但您仍然可以在Mac和Linux上连接到0.0.0.0,但在Windows上无法连接。老实说,我不知道您可以连接到该地址......我认为它只是表示绑定到所有地址。 - Sean Hill
我很惊讶教程告诉你要连接到0.0.0.0,并且惊讶于它甚至可以在任何操作系统上运行。我很少认为Windows做了一些Linux做不好的事情。 - Jim Stewart
在Windows上,如果您的网站从外部访问,则不要在127.0.0.1或localhost上打开。 - Andre Figueiredo
2个回答

13

0.0.0.0是Webrick绑定的IP地址,意思是“监听所有接口”。换句话说,您可以从内部地址(localhost或127.0.0.1)以及网络上的外部地址(192.168.1.x或10.0.10.x或将域名解析为该机器在网络上的地址)连接到此应用程序。服务器不关心请求来自哪里。

但是,如果您使用“-b”或“--binding”选项启动rails服务器并告诉服务器绑定到127.0.0.1,则服务器将无法响应对外部接口的请求。您仍然可以使用127.0.0.1或localhost,但无法从本地或其他计算机使用其外部IP地址连接到此服务器。

在我的Linux系统上,访问http://0.0.0.0:3000是有效的,而且很可能您正在观看的屏幕录像是在Mac上进行的,也能够正常工作。我猜想Windows不支持0.0.0.0。

如果您在计算机上,请使用localhost;如果您从另一台计算机访问它,请使用该计算机的IP地址。即使我在运行了解0.0.0.0的计算机时,也是这样做的。


3
你可以使用以下命令启动服务器:
rails server -b localhost

但是作为一个懒惰的打字员,在我的.bash_aliases中,我有这个别名。
alias rs='r s -b localhost'

有了别名,我只需执行以下命令即可启动服务器:
rs

只是为了澄清,绑定到本地主机意味着您只能从本地计算机访问该站点。如果您正在进行教程,或者不希望其他人能够访问您的站点,那么这就是您想要的。否则,只需保留默认绑定并使用http://localhost:3000来访问您的应用程序即可。 - Matt Hulse

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接