Hubungkan ke Server Jekyll yang dibangun secara lokal menggunakan perangkat seluler di LAN

90

Setelah menggunakan jekyll servepada satu mesin, server WEBrick disiapkan dan situs dapat diakses dari localhost:4000PC khusus ini.

Namun, saya bertanya-tanya bagaimana cara mengakses server web ini dari mesin lain di LAN, terutama untuk perangkat seluler? Saya mencoba menguji situs jekyll di perangkat seluler sebelum memasukkan kode ke Github.

Yi Zeng
sumber

Jawaban:

190

Coba jekyll serve --host=0.0.0.0saat Anda memanggil Jekyll di baris perintah.

Itu akan membuat server HTTP Jekyll mengikat ke semua IP yang tersedia, bukan hanya ke localhost.

Anda juga dapat menambahkan ini ke _config.ymldengan Anda host: 0.0.0.0. GitHub hanya akan mengabaikan ini saat Anda melakukan push, jadi aman digunakan jika Anda tidak keberatan pekerjaan Anda dapat diakses secara terbuka di jaringan Anda.


Tanpa --host=0.0.0.0Jekyll akan menghasilkan sesuatu seperti ini saat Anda memulai:

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

Tetapi dengan --host=0.0.0.0(atau host: 0.0.0.0di _config.yml) Anda akan melihat bahwa itu mendengarkan di semua antarmuka (diwakili oleh 0.0.0.0) daripada hanya mendengarkan di antarmuka loopback (diwakili oleh 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. 

Jika Anda masih tidak dapat mengakses server Anda, mungkin ada firewall yang menghentikannya. Nonaktifkan firewall Anda untuk sementara, atau tambahkan aturan penerusan port untuk port 4000.


Setelah Jekyll mendengarkan dengan tepat di semua antarmuka, Anda dapat mengaksesnya dari perangkat seluler Anda menggunakan alamat IP LAN Anda (diambil dari sesuatu seperti ifconfigatau ipconfigtergantung pada sistem operasi Anda).

pauljz
sumber
3
Bagian pertama berfungsi seperti yang ditunjukkan (jekyll 2.5.3), tidak menguji bagian kedua (tentang entri di file konfigurasi).
j4v1
7
Untuk kemudian mengakses situs Anda, di komputer / perangkat seluler Anda yang lain, ketik ip komputer yang melakukan hosting. (Sesuatu mungkin seperti 192.168.1.5:4000). Dan inilah cara untuk menemukan ip Anda: stackoverflow.com/a/13322549/1400991
Ross R
Jika Anda mencoba menjalankan server di Chromebook di bawah Crouton, Anda juga harus menjalankan /sbin/iptables -P INPUT ACCEPTuntuk membuka firewall. Secara opsional tambahkan baris ini ke /etc/rc.localjika Anda ingin firewall dibuka secara default saat Anda masuk ke chroot. Lihat juga instruksi resmi .
Alex Yursha
1
tetapi merusak semua gambar dengan {{site.url}} karena mengarah ke http: 0.0.0.0: 4000 yang tidak terbuka di mesin utama
GorvGoyl
1
Ini tidak menjawab pertanyaan sepenuhnya, apa alamat yang akan digunakan? localhost: 4000 atau 0.0.0.0:4000 atau yang lainnya?
Andy
-8

Dengan asumsi perangkat seluler Anda terhubung ke LAN yang sama dengan mesin pengembangan Anda.

  1. Pastikan alamat IP LAN mesin pengembangan Anda. Biasanya sesuatu seperti: 192.168.0.XXX. Di mana .XXX adalah 3 digit terakhir unik dari IP LAN mesin dev Anda.

  2. Arahkan browser web perangkat seluler Anda ke: http://192.168.0.XXX:4000

Begitulah cara saya melakukannya di laptop dan iPhone untuk Jekyll dev.

JW
sumber
2
Apakah saya perlu menentukan --host=0.0.0.0saat memulai server? (Saya tidak bisa mengujinya saat ini.)
Yi Zeng
@ user1177636, tidak, tidak perlu, cukup jekyll serve. Itu akan meluncurkan server WebBrick yang akan tersedia untuk perangkat atau mesin lokal apa pun. BTW, saya berasumsi Anda menjalankan Jekyll> = 1.0.0, perintah berbeda untuk versi yang lebih lama. Jalankan jekyll --serverjika menggunakan <= 0.12.1.
JW
Entah bagaimana itu tidak berhasil untuk saya tanpa menentukan --host = 0.0.0.0. Apa pengaturan Firewall yang Anda gunakan untuk memperbaikinya?
skjoshi
2
Bagi saya juga, berlari jekyll servetidak berhasil. Perangkat seluler saya tidak dapat mengakses server kecuali saya menelepon jekyll serve --host=0.0.0.0. Ada yang punya penjelasan untuk ini?
Faktur
2
@fraxture jekyll melayani secara default mendengarkan di localhost (127.0.0.1) itu hanya dapat diakses melalui adaptor loopback pada mesin yang menjalankannya. dengan menyuruhnya mengikat ke 0.0.0.0 Anda memerintahkannya untuk mengikat ke semua antarmuka, dan dengan demikian mengikat ke antarmuka (ethernet / nirkabel / dll ..) Anda dan dengan demikian dapat diakses melalui sisi LAN juga.
Doon