Stellen Sie über mobile Geräte im LAN eine Verbindung zu einem lokal erstellten Jekyll-Server her

86

Nach der Verwendung jekyll serveauf einem Computer wird ein WEBrick-Server eingerichtet, auf den von localhost:4000diesem bestimmten PC aus auf die Site zugegriffen werden kann .

Ich frage mich jedoch, wie ich von anderen Computern im LAN auf diesen Webserver zugreifen kann, insbesondere für mobile Geräte. Ich versuche, die Jekyll-Site auf Mobilgeräten zu testen, bevor ich den Code an Github weitergebe.

Yi Zeng
quelle

Antworten:

183

Versuchen jekyll serve --host=0.0.0.0Sie es, wenn Sie Jekyll in der Befehlszeile aufrufen.

Dadurch wird der HTTP-Server von Jekyll an alle verfügbaren IPs gebunden und nicht nur an localhost.

Sie können dies auch zu Ihrem _config.ymlmit hinzufügen host: 0.0.0.0. GitHub ignoriert dies einfach, wenn Sie pushen. Es ist also sicher zu verwenden, wenn es Ihnen nichts ausmacht, Ihre Arbeit in Ihrem Netzwerk offen zugänglich zu machen.


Ohne --host=0.0.0.0Jekyll wird beim Start Folgendes ausgegeben:

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

Mit --host=0.0.0.0(oder host: 0.0.0.0in _config.yml) werden Sie jedoch feststellen, dass alle Schnittstellen (dargestellt durch 0.0.0.0) und nicht nur die Loopback-Schnittstelle (dargestellt durch 127.0.0.1) abgehört werden.

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

Wenn Sie immer noch nicht auf Ihren Server zugreifen können, wird er möglicherweise von einer Firewall gestoppt. Deaktivieren Sie vorübergehend Ihre Firewall oder fügen Sie eine Portweiterleitungsregel für Port 4000 hinzu.

pauljz
quelle
3
Der erste Teil funktionierte wie angegeben (jekyll 2.5.3), testete den zweiten Teil nicht (über den Eintrag in der Konfigurationsdatei).
J4V1
7
Um dann auf Ihre Site zuzugreifen, geben Sie auf Ihrem anderen Computer / Mobilgerät die IP-Adresse des Computers ein, auf dem das Hosting durchgeführt wird. (Etwas wahrscheinlich wie 192.168.1.5:4000). Und hier ist ein Weg, um Ihre IP zu finden: stackoverflow.com/a/13322549/1400991
Ross R
Wenn Sie versuchen, einen Server auf Chromebook unter Crouton auszuführen, müssen Sie auch ausführen /sbin/iptables -P INPUT ACCEPT, um die Firewall zu öffnen. Fügen Sie diese Zeile optional hinzu, /etc/rc.localwenn die Firewall bei Eingabe von chroot standardmäßig geöffnet sein soll. Siehe auch offizielle Anweisungen .
Alex Yursha
1
aber es stürzt alle Bilder mit {{site.url}} ab, weil sie auf http: 0.0.0.0: 4000 zeigen, das nicht in der Hauptmaschine
geöffnet wird
1
Dies beantwortet die Frage nicht vollständig. Wie lautet die zu verwendende Adresse? localhost: 4000 oder 0.0.0.0:4000 oder etwas anderes?
Andy
-8

Angenommen, Ihr Mobilgerät ist mit demselben LAN verbunden wie Ihr Entwicklungscomputer.

  1. Stellen Sie die LAN-IP-Adresse Ihres Entwicklungscomputers fest. Normalerweise so etwas wie: 192.168.0.XXX. Wobei .XXX die eindeutigen letzten 3 Ziffern der LAN-IP Ihres Entwicklungscomputers sind.

  2. Zeigen Sie mit dem Webbrowser Ihres Mobilgeräts auf: http://192.168.0.XXX:4000

So mache ich es auf meinem Laptop und iPhone für Jekyll dev.

JW
quelle
2
Muss ich --host=0.0.0.0beim Starten des Servers angeben ? (Ich kann es im Moment nicht testen.)
Yi Zeng
@ user1177636, nein, nicht notwendig, nur jekyll serve. Dadurch wird der WebBrick-Server gestartet, der für jedes lokale Gerät oder jeden lokalen Computer verfügbar ist. Übrigens, ich gehe davon aus, dass Sie Jekyll> = 1.0.0 ausführen. Die Befehle sind für ältere Versionen unterschiedlich. Ausführen, jekyll --serverwenn <= 0.12.1 verwendet wird.
JW
Irgendwie hat es bei mir nicht funktioniert, ohne --host = 0.0.0.0 anzugeben. Mit welchen Firewall-Einstellungen haben Sie das Problem behoben?
Skjoshi
2
Auch für mich hat das Laufen jekyll servenicht funktioniert. Mein Mobilgerät konnte nur dann auf den Server zugreifen, wenn ich angerufen habe jekyll serve --host=0.0.0.0. Hat jemand eine Erklärung dafür?
Fraxtur
2
@fraxture jekyll dienen standardmäßig auf localhost (127.0.0.1). Der Zugriff ist nur über den Loopback-Adapter auf dem Computer möglich, auf dem es ausgeführt wird. Indem Sie ihm sagen, dass er an 0.0.0.0 binden soll, sagen Sie ihm, dass er an alle Schnittstellen binden soll, und somit an Ihre (Ethernet / Wireless / etc ..) Schnittstelle und ist somit auch über die LAN-Seite zugänglich.
Doon