Kodokon kodokon.com

localhost, पोर्ट, और "मेरी मशीन पर तो चलता है"

अपने ही कंप्यूटर पर एक सर्वर चलाएँ और समझें कि उसे कोई और क्यों नहीं देख सकता।

7 मिनट · 3 प्रश्न

इस पाठ को Kodokon में खोलें

जब आप कोई साइट बना रहे होते हैं, तो हर एक बदलाव के बाद उसे इंटरनेट पर प्रकाशित नहीं करने जा रहे। आप अपने ही कंप्यूटर पर एक सर्वर चलाते हैं, और अपने ब्राउज़र से उसे देखते हैं। उस मशीन का, यानी आपकी मशीन का, एक आरक्षित नाम है: localhost, अक्षरशः "स्थानीय होस्ट"। इसका एक आरक्षित IP पता भी है, 127.0.0.1, जिसका दुनिया की किसी भी मशीन पर हमेशा मतलब होता है "मैं खुद"।

लेकिन एक कंप्यूटर एक ही समय में कई सर्वर चला सकता है। तो आप कैसे जानेंगे कि आप किससे बात कर रहे हैं? पोर्ट के ज़रिए। अगर IP पता इमारत का पता है, तो पोर्ट फ़्लैट का नंबर है: 1 और 65535 के बीच की एक संख्या जो बताती है कि जवाब कौन सा प्रोग्राम देगा। कुछ पोर्ट तय परंपरा से हैं: http के लिए पोर्ट 80, https के लिए 443। डेवलपमेंट में हम अक्सर 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 नाम किसे दर्शाता है?
    • आपके होस्टिंग प्रदाता का सर्वर
    • आपका अपना कंप्यूटर
    • वह वाईफ़ाई नेटवर्क जिससे आप जुड़े हैं
  2. http://localhost:3000 खोलने पर कोई सहकर्मी आपकी साइट क्यों नहीं देख पाता?
    • क्योंकि उनकी मशीन पर पोर्ट नंबर गलत है
    • क्योंकि localhost उनकी अपनी मशीन को दर्शाता है, आपकी नहीं
    • क्योंकि उन्हें https इस्तेमाल करना चाहिए
  3. http://localhost:8000 में पोर्ट नंबर किसलिए है?
    • यह बताने के लिए कि मशीन का कौन सा प्रोग्राम जवाब देगा
    • संचार को एन्क्रिप्ट करने के लिए
    • साइट के पेजों को क्रमांक देने के लिए