Conéctese a un servidor Jekyll construido localmente utilizando dispositivos móviles en la LAN

89

Después de usarlo jekyll serveen una máquina, se configura un servidor WEBrick y se puede acceder al sitio desde localhost:4000esta PC en particular.

Sin embargo, me pregunto cómo acceder a este servidor web desde otras máquinas en la LAN, especialmente para dispositivos móviles. Estoy tratando de probar el sitio jekyll en dispositivos móviles antes de enviar el código a Github.

Yi Zeng
fuente

Respuestas:

188

Pruebe jekyll serve --host=0.0.0.0cuando invoque a Jekyll en la línea de comandos.

Eso hará que el servidor HTTP de Jekyll se vincule a todas las IP disponibles, en lugar de solo a localhost.

También puede agregar esto a su _config.ymlcon host: 0.0.0.0. GitHub simplemente ignorará esto cuando presione, por lo que es seguro de usar si no le importa que su trabajo sea accesible abiertamente en su red.


Sin --host=0.0.0.0Jekyll, se generará algo como esto cuando inicie:

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

Pero con --host=0.0.0.0(o host: 0.0.0.0en _config.yml) notará que está escuchando en todas las interfaces (representadas por 0.0.0.0) en lugar de solo escuchando en la interfaz de loopback (representada por 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. 

Si aún no puede acceder a su servidor, es posible que un firewall lo detenga. Desactive temporalmente su firewall o agregue una regla de reenvío de puerto para el puerto 4000.


Una vez que Jekyll esté escuchando adecuadamente en todas las interfaces, puede acceder a esto desde su dispositivo móvil usando su dirección IP de LAN (recuperada de algo como ifconfigo ipconfigdependiendo de su sistema operativo).

Pauljz
fuente
3
La primera parte funcionó como se indica (jekyll 2.5.3), no probó la segunda parte (sobre la entrada en el archivo de configuración).
j4v1
7
Para luego acceder a su sitio, en su otra computadora / dispositivo móvil, escriba la IP de la computadora que realiza el alojamiento. (Algo probablemente como 192.168.1.5:4000). Y aquí hay una manera de encontrar su IP: stackoverflow.com/a/13322549/1400991
Ross R
Si está intentando ejecutar un servidor en Chromebook en Crouton , también tendrá que ejecutar /sbin/iptables -P INPUT ACCEPTpara abrir el firewall. Opcionalmente, agregue esta línea a /etc/rc.localsi desea que el firewall esté abierto de forma predeterminada cuando ingrese a chroot. Consulte también las instrucciones oficiales .
Alex Yursha
1
pero está bloqueando todas las imágenes con {{site.url}} porque apuntan a http: 0.0.0.0: 4000 que no se abre en la máquina principal
GorvGoyl
1
Esto no responde completamente a la pregunta, ¿cuál es la dirección a usar? localhost: 4000 o 0.0.0.0:4000 o algo más?
Andy
-8

Suponiendo que su dispositivo móvil está conectado a la misma LAN que su máquina de desarrollo.

  1. Compruebe la dirección IP de LAN de su máquina de desarrollo. Por lo general, algo como: 192.168.0.XXX. Donde .XXX son los últimos 3 dígitos únicos de la IP LAN de su máquina de desarrollo.

  2. Apunte el navegador web de su dispositivo móvil a: http://192.168.0.XXX:4000

Así es como lo hago en mi computadora portátil y iPhone para Jekyll dev.

JW
fuente
2
¿Necesito especificar --host=0.0.0.0al iniciar el servidor? (No puedo probarlo en este momento.)
Yi Zeng
@ user1177636, no, no es necesario, solo jekyll serve. Eso lanzará el servidor WebBrick que estará disponible en cualquier dispositivo o máquina local. Por cierto, supongo que está ejecutando Jekyll> = 1.0.0, los comandos son diferentes para las versiones anteriores. Ejecutar jekyll --serversi usa <= 0.12.1.
JW
De alguna manera no funcionó para mí sin especificar --host = 0.0.0.0. ¿Cuáles fueron las configuraciones de Firewall que usó para solucionarlo?
skjoshi
2
Para mí también, correr jekyll serveno funcionó. Mi dispositivo móvil no pudo acceder al servidor a menos que llame jekyll serve --host=0.0.0.0. ¿Alguien tiene una explicación para esto?
fraxture
2
@fraxture jekyll sirve por defecto escucha en localhost (127.0.0.1) solo es accesible a través del adaptador de loopback en la máquina en la que se está ejecutando. al decirle que se vincule a 0.0.0.0 le está diciendo que se vincule a todas las interfaces y, por lo tanto, se une a su interfaz (ethernet / inalámbrica / etc.) y, por lo tanto, también es accesible a través del lado de lan.
Doon