使用移动设备在局域网中连接到本地构建的Jekyll服务器

104

在一台电脑上使用jekyll serve后,会设置一个WEBrick服务器,可以通过该特定PC上的localhost:4000访问该站点。

但是,我想知道如何从局域网中的其他计算机访问此Web服务器,尤其是移动设备? 在将代码推送到Github之前,我正在尝试在移动设备上测试jekyll站点。

2个回答

216

当您在命令行上调用Jekyll时,请尝试使用jekyll serve --host=0.0.0.0

这将使Jekyll的HTTP服务器绑定到所有可用的IP,而不仅仅是localhost

您还可以将此添加到您的_config.yml中,具体方法是使用host: 0.0.0.0。如果您不介意在您的网络上公开访问工作内容,GitHub会在您推送时忽略此内容,因此这样使用是安全的。


如果您没有使用--host=0.0.0.0,那么当您启动Jekyll时,它会输出类似以下内容:

$ jekyll serve
[...]
Server address: http://127.0.0.1:4000/
Server running... press ctrl-c to stop.

但是使用--host=0.0.0.0(或者在_config.yml中使用host: 0.0.0.0)后,您会发现它正在侦听所有接口(由0.0.0.0表示),而不仅仅是侦听环回接口(由127.0.0.1表示)。

$ jekyll serve --host=0.0.0.0
[...]
Server address: http://0.0.0.0:4000/
Server running... press ctrl-c to stop. 
如果您仍无法访问服务器,则可能有防火墙阻止了它。暂时禁用防火墙,或为端口4000添加端口转发规则。
一旦Jekyll适当地在所有接口上进行监听,您就可以使用LAN IP地址(从类似于ifconfigipconfig的内容检索操作系统)从移动设备访问此内容。

3
第一部分按照指示工作了(jekyll 2.5.3),没有测试第二部分(有关配置文件中的条目)。 - j4v1
7
要访问您的网站,需在另一台电脑或移动设备上输入托管计算机的IP地址(类似于192.168.1.5:4000)。以下链接是找到您的IP地址的方法:https://dev59.com/K2Yr5IYBdhLWcg3w499-#13322549。 - Ross R
1
但是由于它们指向 http:0.0.0.0:4000,而该端口在主机上无法打开,因此它会崩溃所有带有{{site.url}}的图片。 - GorvGoyl
1
这并没有完全回答问题,应该使用什么地址?localhost:4000还是0.0.0.0:4000或其他什么地址? - Andy
1
@Andy,这是你的电脑的局域网IP地址,例如192.168.0.100:4000。 - Yogesh Umesh Vaity
显示剩余2条评论

-7

假设您的移动设备与开发机器连接到同一局域网。

  1. 确定您的开发机器的局域网IP地址。通常是:192.168.0.XXX。其中,XXX是您的开发机器局域网IP的唯一后三位数字。

  2. 将您的移动设备的Web浏览器指向:http://192.168.0.XXX:4000

这就是我在我的笔记本电脑和iPhone上进行Jekyll开发的方法。


2
在启动服务器时,我需要指定 --host=0.0.0.0 吗?(目前无法测试。) - Yi Zeng
@user1177636,不需要的,只需运行jekyll serve即可。这将启动WebBrick服务器,并可供任何本地设备或机器使用。顺便说一句,我假设您正在运行Jekyll >=1.0.0,对于旧版本,命令是不同的。如果使用<= 0.12.1,请运行jekyll --server - J W
没有指定 --host=0.0.0.0,对我来说它无法运行。你用了什么防火墙设置解决这个问题? - skjoshi
2
对我而言,运行“jekyll serve”也没有效果。除非我运行“jekyll serve --host=0.0.0.0”,否则我的移动设备无法访问服务器。有人能解释一下吗? - fraxture
2
@fraxture 默认情况下,jekyll serve 监听本地主机(127.0.0.1),只能通过运行它的计算机上的环回适配器访问。通过告诉它绑定到 0.0.0.0,您告诉它绑定到所有接口,因此它会绑定到您的(以太网/无线等)接口,从而也可以通过局域网侧访问。 - Doon

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