Подключитесь к локально созданному серверу Jekyll с помощью мобильных устройств в локальной сети

89

После использования jekyll serveна одной машине настраивается сервер WEBrick, и localhost:4000на этом конкретном ПК можно получить доступ к сайту .

Однако мне интересно, как получить доступ к этому веб-серверу с других машин в локальной сети, особенно для мобильных устройств? Я пытаюсь протестировать сайт jekyll на мобильных устройствах перед тем, как отправить код в Github.

И Цзэн
источник

Ответы:

188

Попробуйте, jekyll serve --host=0.0.0.0когда вы вызываете Jekyll из командной строки.

Это заставит HTTP-сервер Jekyll связываться со всеми доступными IP-адресами, а не только с localhost.

Вы также можете добавить это в свой файл _config.ymlwith host: 0.0.0.0. GitHub просто проигнорирует это, когда вы нажмете, поэтому его безопасно использовать, если вы не возражаете, чтобы ваша работа была открыто доступна в вашей сети.


Без --host=0.0.0.0Jekyll при запуске будет выводиться что-то вроде этого:

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

Но с --host=0.0.0.0(или host: 0.0.0.0внутри _config.yml) вы заметите, что он прослушивает все интерфейсы (представленные 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 надлежащим образом прослушивает все интерфейсы, вы можете получить к нему доступ со своего мобильного устройства, используя свой IP-адрес в локальной сети (полученный из чего-то вроде ifconfigили в ipconfigзависимости от вашей операционной системы).

Pauljz
источник
3
Первая часть работала, как указано (jekyll 2.5.3), вторую часть не тестировал (о записи в файле конфигурации).
j4v1
7
Чтобы затем получить доступ к своему сайту, на другом компьютере / мобильном устройстве введите IP-адрес компьютера, на котором размещен хостинг. (Что-то вроде 192.168.1.5:4000). А вот способ узнать свой IP: stackoverflow.com/a/13322549/1400991
Росс Р.
Если вы пытаетесь запустить сервер на Chromebook под Crouton, вам также придется запустить, /sbin/iptables -P INPUT ACCEPTчтобы открыть брандмауэр. При желании добавьте эту строку, /etc/rc.localесли хотите, чтобы брандмауэр был открыт по умолчанию при входе в chroot. См. Также официальные инструкции .
Alex
1
но это приводит к сбою всех изображений с {{site.url}}, потому что они указывают на http: 0.0.0.0: 4000, который не открывается на основной машине
GorvGoyl
1
Это не полностью отвечает на вопрос, какой адрес использовать? localhost: 4000 или 0.0.0.0:4000 или что-то еще?
Энди
-8

Предполагая, что ваше мобильное устройство подключено к той же локальной сети, что и ваша машина для разработки.

  1. Подтвердите IP-адрес LAN вашей машины разработки. Обычно что-то вроде: 192.168.0.XXX. Где .XXX - это уникальные последние 3 цифры сетевого IP-адреса вашего компьютера разработчика.

  2. В браузере мобильного устройства укажите: http://192.168.0.XXX:4000

Вот как я делаю это на своем ноутбуке и iPhone для разработчиков Jekyll.

JW
источник
2
Нужно ли указывать --host=0.0.0.0при запуске сервера? (На данный момент я не могу это проверить.)
Йи Цзэн
@ user1177636, нет, не обязательно, просто jekyll serve. Это запустит сервер WebBrick, который будет доступен для любого локального устройства или машины. Кстати, я предполагаю, что вы используете Jekyll> = 1.0.0, команды для более старых версий отличаются. Выполнить, jekyll --serverесли используется <= 0.12.1.
JW
Как-то у меня не сработало без указания --host = 0.0.0.0. Какие настройки брандмауэра вы использовали, чтобы это исправить?
skjoshi
2
У меня тоже бег jekyll serveне работал. Мое мобильное устройство не могло получить доступ к серверу, пока я не позвонил jekyll serve --host=0.0.0.0. У кого-нибудь есть объяснение этому?
fraxture
2
@fraxture jekyll serve по умолчанию прослушивает localhost (127.0.0.1), он доступен только через адаптер обратной связи на машине, на которой он запущен. сообщая ему о привязке к 0.0.0.0, вы говорите ему о привязке ко всем интерфейсам, и, таким образом, он привязывается к вашему (Ethernet / беспроводной / и т. д.) интерфейсу и, таким образом, также доступен через LAN.
Doon