เชื่อมต่อกับเซิร์ฟเวอร์ Jekyll ที่สร้างขึ้นภายในเครื่องโดยใช้อุปกรณ์มือถือใน LAN


90

หลังจากใช้งานjekyll serveบนเครื่องเดียวเซิร์ฟเวอร์ WEBrick จะถูกตั้งค่าและสามารถเข้าถึงไซต์ได้จากlocalhost:4000บนพีซีเครื่องนี้

อย่างไรก็ตามฉันสงสัยว่าจะเข้าถึงเว็บเซิร์ฟเวอร์นี้จากเครื่องอื่นใน LAN โดยเฉพาะสำหรับอุปกรณ์มือถือได้อย่างไร? ฉันกำลังพยายามทดสอบไซต์ jekyll บนอุปกรณ์มือถือก่อนที่จะกดรหัสไปที่ Github

คำตอบ:


190

ลองjekyll serve --host=0.0.0.0เมื่อคุณเรียกใช้ Jekyll บนบรรทัดคำสั่ง

ที่จะทำให้การผูกเซิร์ฟเวอร์ HTTP Jekyll เพื่อ IP localhostที่มีอยู่ทั้งหมดมากกว่าเพียงเพื่อ

นอกจากนี้คุณยังสามารถเพิ่มนี้เพื่อคุณด้วย_config.yml host: 0.0.0.0GitHub จะเพิกเฉยต่อสิ่งนี้เมื่อคุณผลักดันดังนั้นจึงปลอดภัยที่จะใช้หากคุณไม่รังเกียจที่จะให้งานของคุณเข้าถึงได้อย่างเปิดเผยบนเครือข่ายของคุณ


หากไม่มี--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 รับฟังอินเทอร์เฟซทั้งหมดอย่างเหมาะสมแล้วคุณสามารถเข้าถึงสิ่งนี้ได้จากอุปกรณ์มือถือของคุณโดยใช้ที่อยู่ LAN IP ของคุณ (ดึงมาจากบางอย่างเช่นifconfigหรือipconfigขึ้นอยู่กับระบบปฏิบัติการของคุณ)


3
ส่วนแรกทำงานตามที่ระบุไว้ (jekyll 2.5.3) ไม่ได้ทดสอบส่วนที่สอง (เกี่ยวกับรายการในไฟล์ config)
j4v1

7
ในการเข้าถึงไซต์ของคุณบนคอมพิวเตอร์ / อุปกรณ์มือถืออื่นของคุณให้พิมพ์ ip ของคอมพิวเตอร์ที่ทำโฮสติ้ง (อาจเป็นเช่น 192.168.1.5:4000) และนี่คือวิธีค้นหา ip ของคุณ: stackoverflow.com/a/13322549/1400991
Ross R

หากคุณพยายามเรียกใช้เซิร์ฟเวอร์บน Chromebook ภายใต้Croutonคุณจะต้องเรียกใช้/sbin/iptables -P INPUT ACCEPTเพื่อเปิดไฟร์วอลล์ เลือกที่จะเพิ่มบรรทัดนี้/etc/rc.localหากคุณต้องการให้ไฟร์วอลล์เปิดตามค่าเริ่มต้นเมื่อคุณป้อน chroot ดูคำแนะนำอย่างเป็นทางการด้วย
Alex Yursha

1
แต่มันขัดข้องทุกภาพด้วย {{site.url}} เนื่องจากชี้ไปที่ http: 0.0.0.0: 4000 ซึ่งไม่ได้เปิดในเครื่องหลัก
GorvGoyl

1
สิ่งนี้ไม่ได้ตอบคำถามทั้งหมดที่อยู่ที่จะใช้คืออะไร? localhost: 4000 หรือ 0.0.0.0:4000 หรืออย่างอื่น?
Andy

-8

สมมติว่าอุปกรณ์มือถือของคุณเชื่อมต่อกับ LAN เดียวกันกับเครื่องพัฒนาของคุณ

  1. ตรวจสอบที่อยู่ IP LAN ของเครื่องพัฒนาของคุณ โดยปกติสิ่งที่ชอบ: 192.168.0.XXX โดยที่. XXX คือตัวเลข 3 หลักสุดท้ายที่ไม่ซ้ำกันของ LAN IP ของเครื่อง dev ของคุณ

  2. ชี้เว็บเบราว์เซอร์ของอุปกรณ์เคลื่อนที่ไปที่: http://192.168.0.XXX:4000

นั่นคือวิธีที่ฉันทำบนแล็ปท็อปและ iPhone สำหรับ Jekyll dev


2
ฉันจำเป็นต้องระบุ--host=0.0.0.0เมื่อเริ่มต้นเซิร์ฟเวอร์หรือไม่? (ฉันไม่สามารถทดสอบได้ในขณะนี้)
Yi Zeng

@ user1177636 ไม่จำเป็นไม่จำเป็นแค่jekyll serve. ซึ่งจะเปิดตัวเซิร์ฟเวอร์ WebBrick ซึ่งจะเป็นประโยชน์กับอุปกรณ์หรือเครื่องในพื้นที่ BTW ฉันสมมติว่าคุณกำลังเรียกใช้ Jekyll> = 1.0.0 คำสั่งจะแตกต่างกันสำหรับเวอร์ชันเก่า เรียกใช้jekyll --serverหากใช้ <= 0.12.1
เจดับบลิว

อย่างไรก็ตามมันไม่ได้ผลสำหรับฉันโดยไม่ระบุ --host = 0.0.0.0 การตั้งค่าไฟร์วอลล์ที่คุณใช้แก้ไขคืออะไร
skjoshi

2
สำหรับฉันเช่นกันการวิ่งjekyll serveไม่ได้ผล jekyll serve --host=0.0.0.0โทรศัพท์มือถือของฉันก็ไม่สามารถเข้าถึงเซิร์ฟเวอร์จนกว่าฉันรัง ใครมีคำอธิบายสำหรับเรื่องนี้
fraxture

2
@fraxture jekyll ให้บริการโดยค่าเริ่มต้นฟังบน localhost (127.0.0.1) สามารถเข้าถึงได้ผ่านอะแดปเตอร์ลูปแบ็คบนเครื่องที่ทำงานอยู่เท่านั้น โดยการบอกให้ผูกกับ 0.0.0.0 คุณกำลังบอกให้เชื่อมโยงกับอินเทอร์เฟซทั้งหมดดังนั้นจึงเชื่อมโยงกับอินเทอร์เฟซ (อีเธอร์เน็ต / ไร้สาย / ฯลฯ ) ของคุณและสามารถเข้าถึงได้ผ่านทางด้าน lan เช่นกัน
Doon
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.