Conecte-se a um servidor Jekyll construído localmente usando dispositivos móveis na LAN

90

Depois de usar jekyll serveem uma máquina, um servidor WEBrick é configurado e o site pode ser acessado a partir localhost:4000deste PC específico.

No entanto, estou me perguntando como acessar este servidor web de outras máquinas na LAN, especialmente para dispositivos móveis? Estou tentando testar o site jekyll em dispositivos móveis antes de enviar o código para o Github.

Yi Zeng
fonte

Respostas:

190

Tente jekyll serve --host=0.0.0.0quando você invocar Jekyll na linha de comando.

Isso fará com que o servidor HTTP de Jekyll se ligue a todos os IPs disponíveis, ao invés de apenas a localhost.

Você também pode adicionar isso ao seu _config.ymlcom host: 0.0.0.0. O GitHub simplesmente ignora isso quando você empurra, por isso é seguro usar se você não se importar em ter seu trabalho abertamente acessível em sua rede.


Sem --host=0.0.0.0Jekyll irá produzir algo assim quando você iniciar:

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

Mas com --host=0.0.0.0(ou host: 0.0.0.0em _config.yml) você notará que ele está ouvindo em todas as interfaces (representadas por 0.0.0.0), em vez de apenas ouvindo na interface de loopback (representado 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. 

Se você ainda não conseguir acessar o servidor, pode haver um firewall que o está impedindo. Desative temporariamente seu firewall ou adicione uma regra de encaminhamento de porta para a porta 4000.


Uma vez que Jekyll está ouvindo apropriadamente em todas as interfaces, você pode acessar isso de seu dispositivo móvel usando seu endereço IP LAN (obtido de algo semelhante ifconfigou ipconfigdependendo do seu sistema operacional).

Pauljz
fonte
3
A primeira parte funcionou conforme indicado (jekyll 2.5.3), não testou a segunda parte (sobre a entrada no arquivo de configuração).
j4v1
7
Para então acessar seu site, no seu outro computador / dispositivo móvel, digite o ip do computador que está fazendo a hospedagem. (Algo provavelmente como 192.168.1.5:4000). E aqui está uma maneira de encontrar seu ip: stackoverflow.com/a/13322549/1400991
Ross R
Se você estiver tentando executar um servidor no Chromebook no Crouton , também terá que executar /sbin/iptables -P INPUT ACCEPTpara abrir o firewall. Opcionalmente, adicione esta linha /etc/rc.localse quiser que o firewall seja aberto por padrão quando você inserir chroot. Veja também as instruções oficiais .
Alex Yursha
1
mas está travando todas as imagens com {{site.url}} porque estão apontando para http: 0.0.0.0: 4000 que não está abrindo na máquina principal
GorvGoyl
1
Isso não responde totalmente à pergunta: qual é o endereço a ser usado? localhost: 4000 ou 0.0.0.0:4000 ou algo mais?
Andy
-8

Supondo que seu dispositivo móvel esteja conectado à mesma LAN que sua máquina de desenvolvimento.

  1. Verifique o endereço IP da LAN de sua máquina de desenvolvimento. Normalmente algo como: 192.168.0.XXX. Onde .XXX são os últimos 3 dígitos exclusivos do IP LAN de sua máquina de desenvolvimento.

  2. Aponte o navegador do seu dispositivo móvel para: http://192.168.0.XXX:4000

É assim que faço no meu laptop e iPhone para o Jekyll dev.

JW
fonte
2
Preciso especificar --host=0.0.0.0ao iniciar o servidor? (Não posso testar no momento.)
Yi Zeng
@ user1177636, não, não é necessário, apenas jekyll serve. Isso iniciará o servidor WebBrick que estará disponível para qualquer dispositivo ou máquina local. BTW, estou assumindo que você está executando Jekyll> = 1.0.0, os comandos são diferentes para as versões anteriores. Execute jekyll --serverse usar <= 0.12.1.
JW
De alguma forma, não funcionou para mim sem especificar --host = 0.0.0.0. Quais foram as configurações de firewall que você usou para corrigir isso?
skjoshi
2
Também para mim correr jekyll servenão funcionou. Meu dispositivo móvel não conseguiu acessar o servidor, a menos que eu liguei jekyll serve --host=0.0.0.0. Alguém tem uma explicação para isso?
fraxture
2
@fraxture jekyll serve por padrão escuta em localhost (127.0.0.1) e só pode ser acessado por meio do adaptador de loopback na máquina em que está sendo executado. ao dizer a ele para se ligar a 0.0.0.0, você está dizendo a ele para se ligar a todas as interfaces e, portanto, ele se liga à sua interface (ethernet / wireless / etc.) e, portanto, também pode ser acessado através do lado LAN.
Doon