Kodokon kodokon.com

localhost พอร์ต และ "มันก็ทำงานได้บนเครื่องผมนะ"

รันเซิร์ฟเวอร์บนคอมพิวเตอร์ของคุณเอง แล้วเข้าใจว่าทำไมคนอื่นถึงมองไม่เห็นมัน

7 นาที · 3 คำถาม

เปิดบทเรียนนี้ใน Kodokon

ตอนที่คุณกำลังสร้างเว็บไซต์ คุณคงไม่เผยแพร่มันขึ้นอินเทอร์เน็ตทุกครั้งที่แก้ไขหรอก คุณจะรันเซิร์ฟเวอร์ บนคอมพิวเตอร์ของคุณเอง แล้วเข้าดูมันด้วยเบราว์เซอร์ เครื่องนั้น เครื่องของคุณ มีชื่อที่สงวนไว้ให้: localhost ซึ่งแปลตรงตัวว่า "โฮสต์ท้องถิ่น" มันยังมีที่อยู่ IP ที่สงวนไว้ด้วยคือ 127.0.0.1 ซึ่งหมายถึง "ตัวฉันเอง" เสมอ บนเครื่องไหนก็ตามในโลกนี้

แต่คอมพิวเตอร์เครื่องหนึ่งรันเซิร์ฟเวอร์ได้หลายตัวพร้อมกัน แล้วคุณจะรู้ได้อย่างไรว่ากำลังคุยอยู่กับตัวไหน? ก็ด้วย พอร์ต ไงล่ะ ถ้าที่อยู่ IP คือที่อยู่ของตึก พอร์ตก็คือหมายเลขห้อง: ตัวเลขระหว่าง 1 ถึง 65535 ที่ระบุว่าโปรแกรมไหนควรเป็นคนตอบ บางหมายเลขเป็นธรรมเนียมปฏิบัติ: พอร์ต 80 สำหรับ http และ 443 สำหรับ https ในการพัฒนา เรามักใช้ 3000, 5173 หรือ 8000 พอร์ตเขียนต่อท้ายชื่อ คั่นด้วยเครื่องหมายทวิภาค: http://localhost:8000

BASH
cd my-site
python3 -m http.server 8000

Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...
เว็บเซิร์ฟเวอร์ของจริงในคำสั่งเดียว บน Windows ให้เขียน py -m http.server 8000

ปล่อยหน้าต่างเทอร์มินัลนั้นเปิดทิ้งไว้: ตราบใดที่คำสั่งยังทำงานอยู่ เซิร์ฟเวอร์ก็จะตอบ ทีนี้เปิด http://localhost:8000 ในเบราว์เซอร์ของคุณ แล้วคุณจะเห็นไฟล์ต่าง ๆ ในโฟลเดอร์ my-site ถ้าจะหยุดเซิร์ฟเวอร์ ให้กลับไปที่เทอร์มินัลแล้วกด Ctrl + C

ทำไมต้องลำบากขนาดนั้น ในเมื่อดับเบิลคลิกที่ index.html ก็เปิดหน้าเว็บได้เหมือนกัน? เพราะการดับเบิลคลิกเปิดไฟล์ด้วยที่อยู่ file:///C:/Users/... ไม่ใช่ http:// และความสามารถหลายอย่างของเว็บก็ปฏิเสธที่จะทำงานนอกโปรโตคอล http ดื้อ ๆ เลย: คำขอไปยังเซิร์ฟเวอร์ โมดูล JavaScript ฟอนต์บางตัว คุณจะเจอข้อผิดพลาดชวนงงที่หายวับไปราวกับมีเวทมนตร์ทันทีที่คุณผ่าน localhost

BASH
lsof -i :8000

COMMAND   PID   USER   FD   TYPE  NODE NAME
python3  4821  sarah    3u  IPv4   TCP *:8000 (LISTEN)
ใครยึดพอร์ต 8000 อยู่? บน Windows: netstat -ano | findstr :8000

ทดสอบความรู้

ตรวจสอบว่าคุณจำประเด็นสำคัญของบทเรียนนี้ได้ครบถ้วน

  1. ชื่อ localhost หมายถึงอะไร?
    • เซิร์ฟเวอร์ของผู้ให้บริการโฮสติงของคุณ
    • คอมพิวเตอร์ของคุณเอง
    • เครือข่าย wifi ที่คุณเชื่อมต่ออยู่
  2. ทำไมเพื่อนร่วมงานถึงมองไม่เห็นเว็บไซต์ของคุณเมื่อเขาเปิด http://localhost:3000?
    • เพราะหมายเลขพอร์ตบนเครื่องของเขาผิด
    • เพราะ localhost หมายถึงเครื่องของเขาเอง ไม่ใช่ของคุณ
    • เพราะเขาควรจะใช้ https
  3. หมายเลขพอร์ตใน http://localhost:8000 มีไว้เพื่ออะไร?
    • บอกว่าโปรแกรมไหนบนเครื่องควรเป็นคนตอบ
    • เข้ารหัสการสื่อสาร
    • ใส่หมายเลขให้หน้าต่าง ๆ ของเว็บไซต์