อะไรทำให้พีซีเป็นเว็บเซิร์ฟเวอร์และอะไรทำให้ไม่สามารถใช้งานได้


43

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


การ์ดเครือข่าย
el.pescado

1
เล็กที่สุดที่ฉันเคยเห็นคือการ์ด SD wifi ที่ Apacer ทำ มันมี RAM 4MB และใช้งาน linux และสามารถตอบสนองต่อคำขอของเว็บและส่งภาพเมื่ออยู่ในกล้อง
user3528438

@ el.pescado เว้นแต่ไคลเอ็นต์อยู่บนโฮสต์เดียวกัน
Dmitry Grigoryev

คำตอบ:


96

คอมพิวเตอร์เกือบทุกเครื่องสามารถใช้เป็นเซิร์ฟเวอร์ [เว็บ] ได้หากสามารถเชื่อมต่อกับเครือข่ายและสามารถใช้งานซอฟต์แวร์เซิร์ฟเวอร์เว็บได้ เนื่องจากเว็บเซิร์ฟเวอร์นั้นค่อนข้างง่ายและมีเว็บเซิร์ฟเวอร์ฟรีและโอเพ่นซอร์สในทางปฏิบัติอุปกรณ์ใด ๆ สามารถทำหน้าที่เป็นเว็บเซิร์ฟเวอร์ได้

ปัญหาที่ใหญ่กว่าคือด้านเครือข่าย เพื่อให้ระบบทำหน้าที่เป็นเซิร์ฟเวอร์เครื่องอื่น ๆ จะต้องสามารถเข้าถึงได้ หากเป็นเพียงเพื่อใช้ใน LAN ไม่มีข้อกังวล; อย่างไรก็ตามหากมีการใช้งานจากอินเทอร์เน็ตที่กว้างขึ้นข้อมูลจะต้องถูกส่งไปยังมัน สิ่งนี้ต้องการที่อยู่ IP แบบคงที่ที่เชื่อมโยงกับเซิร์ฟเวอร์ (หรือพอร์ตที่ส่งต่อผ่านเราเตอร์) หรือบริการภายนอกซึ่งสามารถแมปชื่อโดเมน / โดเมนย่อยกับที่อยู่ IP แบบไดนามิกที่เปลี่ยนแปลง

(FWIW คุณสามารถซื้อคอมพิวเตอร์ราคา $ 10ซึ่งสามารถทำหน้าที่เป็นเว็บเซิร์ฟเวอร์พื้นฐานได้)

แน่นอนว่าในขณะที่อุปกรณ์ใด ๆ สามารถทำหน้าที่เป็นเว็บเซิร์ฟเวอร์ฟังก์ชันการทำงานของเว็บไซต์อาจแตกต่างกันอย่างมากและอุปกรณ์ราคาถูก (หรือการเชื่อมต่อที่ช้า) อาจไม่สามารถตอบสนองความต้องการได้ทั้งนี้ขึ้นอยู่กับความต้องการของเว็บไซต์

ฉันทราบว่าทุกอย่างที่พูดถึงเกี่ยวกับเว็บเซิร์ฟเวอร์ - แต่สิ่งเดียวกันอาจกล่าวได้ว่าเซิร์ฟเวอร์ประเภทใดก็ได้


2
ปัญหาอีกประการหนึ่งคืออุปกรณ์ราคาถูกอาจไม่น่าเชื่อถือเท่ากับเซิร์ฟเวอร์ "ของจริง" เนื่องจากส่วนประกอบของอุปกรณ์เหล่านี้ไม่ได้รับการรับรองให้ทำงานในเวลานานมากและหน่วยความจำไม่มีวิธีป้องกันบิตเน่าเหมือน ECC RAM ฉันเห็นเพื่อนร่วมงานของฉันออกจากคอมพิวเตอร์เป็นเวลาหลายเดือนและสิ้นสุดใน BSOD
phuclv

11
ใช่และไม่. ฉันใช้ระบบมากมาย 24/7 โดยไม่มี ecc ram และเราเตอร์ที่บ้าน / ธุรกิจขนาดเล็กส่วนใหญ่ - ซึ่งเป็นเซิร์ฟเวอร์ wenb และทำงานได้อย่างน่าเชื่อถือโดยไม่ต้อง bsod แน่นอนว่า BSOD นั้นไม่ธรรมดานอกโลก Windows
davidgo

9
@davidgo ข้อผิดพลาด Bugcheck ไม่ได้มีอยู่ทั่วไปในโลกของ Windows เช่นกันเว้นแต่ว่าคุณจะมีความล้มเหลวของฮาร์ดแวร์หรือไดรเวอร์หลบ ซึ่งทำให้เกิดปัญหาที่คล้ายกันสำหรับระบบปฏิบัติการใด ๆ จำนวนที่หายไปของจำนวนของปัญหาเกี่ยวกับไดรเวอร์วิดีโอทั้งใน Windows และ Linux
Bob

7
@davidgo BSOD เป็นเพียงความล้มเหลวที่ปลอดภัยไม่ใช่ปัญหาของตัวเอง มันเป็นความพยายามครั้งสุดท้ายในการป้องกันรหัสลับ ๆ ล่อๆ / ข้อมูลเสียหายและความเสียหายของฮาร์ดแวร์ ไม่ว่าในกรณีใดก็ตามหลักฐานพอสังเขปไม่มีประโยชน์อย่างสิ้นเชิงในเรื่องนี้ - มีโอกาสสูงมากที่คุณจะไม่เจอปัญหาที่มองเห็นได้ด้วยสิ่งนี้หรือคุณจะทำสิ่งที่ผิดพลาดและมีปัจจัยด้านสิ่งแวดล้อมจำนวนมากที่ทำให้เกิด มีโอกาสมากขึ้นหรือน้อยลง (อุณหภูมิ, ละติจูด, เสียงรบกวน EM, คุณภาพเครือข่ายไฟฟ้า, โหลดระบบ, ความน่าเชื่อถือขององค์ประกอบที่กำหนด) ค่าใช้จ่ายและความคุ้มค่าของ ECC RAM และนั่นคือการตัดสินใจทางธุรกิจ
Luaan

15
คุณอาจมีเว็บเซิร์ฟเวอร์อยู่ที่บ้านอยู่แล้ว: เราเตอร์ / จุดเชื่อมต่อเครื่องพิมพ์ของคุณและอุปกรณ์อัตโนมัติอื่น ๆ ที่สามารถกำหนดค่าได้เช่น smart meter, กล้อง IP, โทรศัพท์ VoIP, เทอร์โมสตัทที่ตั้งค่าได้, ทีวีของคุณ อันที่เล็กกว่าทำให้คุณเข้าใจว่าฮาร์ดแวร์มีความจำเป็นเพียงเล็กน้อย ข้อสังเกตอีกประการหนึ่ง: เครือข่ายไม่ได้เป็นความต้องการที่เข้มงวดสำหรับเว็บเซิร์ฟเวอร์ - มันสามารถทำให้ความรู้สึกที่สมบูรณ์แบบที่จะมีเซิร์ฟเวอร์ที่ทำหน้าที่เพียงหน้าเพื่อให้ผู้ใช้ในเครื่องเดียวกัน
ปีเตอร์ - Reinstate Monica

25

มันไม่ยุ่งยากเลย มันขึ้นอยู่กับคำจำกัดความของ "เว็บเซิร์ฟเวอร์" ของคุณ

เป็นไปได้ทั้งหมดที่จะเรียกใช้ "เว็บเซิร์ฟเวอร์" บนอุปกรณ์ที่เรียบง่ายเหมือนไมโครคอนโทรลเลอร์

ลองพิจารณาว่าเว็บเซิร์ฟเวอร์ขั้นต่ำสุดต้องทำอะไรบ้าง มันจะต้องส่งออกข้อความบางอย่าง - ไม่จำเป็นต้องแม้แต่ใน HTML ไปยังลูกค้า มันจะต้องรู้คำขอเป็นคำขอและตอบสนองอย่างเหมาะสม คุณไม่จำเป็นต้องเชื่อมต่อเครือข่ายด้วยซ้ำถ้า "ลูกค้า" ของคุณอยู่ในพื้นที่ มันจะเป็นเว็บเซิร์ฟเวอร์ที่ไม่มีจุดหมายเลย

มันจะเป็นเว็บเซิร์ฟเวอร์ที่เทียบเท่ากับหนึ่งในนั้น

ป้อนคำอธิบายรูปภาพที่นี่

การเพิ่มการเชื่อมต่อเครือข่ายสำหรับไคลเอนต์ (อีเธอร์เน็ตเป็นสิ่งที่ดี แต่ไม่มีเหตุผลทางเทคนิคที่คุณไม่สามารถเชื่อมต่อกับเว็บเซิร์ฟเวอร์ที่ทำงานบน wifi) และความสามารถในการกำหนดเส้นทางจากไคลเอนต์จะดีกว่า

A $ 5 ESP8266 - ไมโครคอนโทรลเลอร์ราคาถูกและ wifi น้อยที่สุดสามารถจัดการสิ่งเหล่านั้นได้มากและอาจเป็นเนื้อหาแบบไดนามิกขั้นพื้นฐานด้วยซ้ำ

ฉันใช้สิ่งนี้เพื่อการแบ่งปันไฟล์อย่างรวดเร็วโดยใช้ Python ยังคงเป็นไปได้ทั้งหมดที่จะเขียนบางสิ่งเช่นนี้ในไมโครคอนโทรลเลอร์หรือแม้แต่เรียกใช้บนโทรศัพท์

เนื้อหาคงน่าเบื่อ เพิ่มภาษาแบบไดนามิกและคุณจะต้องเริ่มคิดถึงระบบน้ำหนักที่หนักขึ้น สิ่งที่รัน Linux หรือ Windows นั้นดี

ณ จุดนี้คุณกำลังพูดถึงเราเตอร์ผู้บริโภคแอปพลิเคชันขนาดเล็กที่ใช้หน้าเว็บที่ UI และทุกสิ่ง

เว็บเซิร์ฟเวอร์ไม่ได้เป็นปัญหาที่ซับซ้อนและสามารถเขียนในห้าบรรทัดทุบตีและทำงานบน Linux ตอนนี้หายนะ ... แต่ทุกระบบที่สามารถเรียกใช้ doom สามารถเรียกใช้เว็บเซิร์ฟเวอร์ได้

การตั้งค่าเว็บเซิร์ฟเวอร์ที่ดีสามารถจัดการกับโหลดได้ค่อนข้างยาก


11
เป็นไปได้ที่จะประสานชิป TTL บางตัวเข้าด้วยกันและเรียกใช้เว็บเซิร์ฟเวอร์ ดูหน้าเว็บนี้สำหรับรายละเอียด
Josef

7
มันเป็นไปได้ที่จะพูดว่า "เป็นไปได้ที่จะรวมเหล็กบางส่วนเข้าด้วยกันและสร้างหอไอเฟลมันเจ๋งมาก
Journeyman Geek

1
อย่างน่าประหลาดใจเว็บเซิร์ฟเวอร์ 'ไร้จุดหมาย' ของคุณคือความช่วยเหลือบางอย่างที่ใช้ในการทำงานกับผลิตภัณฑ์บางอย่าง :) - ฉันจำตัวอย่างไม่ได้ แต่มีอย่างน้อยหนึ่งกรณีที่มีความช่วยเหลือทำงานอยู่บนเซิร์ฟเวอร์ โดยเบราว์เซอร์) และปัญหาที่ตามมาซึ่งนำเสนอ (หน้าช่วยเหลือของฉันจะไม่โหลดเมื่อเปิดไฟร์วอลล์)
djsmiley2k - CoW

5
@ djsmiley2k Eclipse ช่วยใช้เว็บเซิร์ฟเวอร์ท้องถิ่น เพราะจาวา
user253751

2
Raspi นั้นให้พลังงานสูงกว่าที่คาดการณ์ไว้ 99.9% ของเว็บเซิร์ฟเวอร์เชิงพาณิชย์ในปี 2000 และผู้คนก็เริ่มทำสิ่งต่าง ๆ มากมาย
rackandboneman

11

ขั้นต่ำเปลือย

แท้จริงคอมพิวเตอร์ทุกเครื่องสามารถเป็นเว็บเซิร์ฟเวอร์ได้หากมีสิ่งต่อไปนี้:

  • การเชื่อมต่อเครือข่าย
  • การตรวจสอบเว็บเซิร์ฟเวอร์ง่ายมากเช่นนี้

แต่มันจะเพียงพอหรือไม่ ตอนนี้เป็นคำถามที่ยุ่งยาก

การให้บริการอินทราเน็ต

เพื่อให้คอมพิวเตอร์กลายเป็นเว็บเซิร์ฟเวอร์ที่ให้บริการหน้าเว็บที่ทันสมัยหรือเว็บแอพกับชุมชนทั้งหมด (เช่นโรงเรียน บริษัท พิพิธภัณฑ์):

  • ฮาร์ดแวร์ที่สามารถตอบสนองคอมพิวเตอร์หลายเครื่องในครั้งเดียว อาจเป็นคอมพิวเตอร์เก่าที่ใช้ Linux หรือ Windows XP ก็ได้
  • การเชื่อมต่อเครือข่ายความเร็วสูงที่มีแบนด์วิดท์เพียงพอพูดได้ 1 Gbit / วินาที Ethernet หรือ 802.11g Wi-Fi
  • การตรวจสอบเซิร์ฟเวอร์เว็บที่ดีเช่นIIS , Apache , Nginxหรือคนอื่น ๆ (น่าแปลกที่ทั้งสามคนนี้ฟรี)

แต่นั่นเป็นเพียงขั้นต่ำสำหรับการปฏิบัติการขนาดเล็ก เมื่อการดำเนินการของคุณมีขนาดใหญ่ขึ้น (เช่นคุณได้รับปริมาณการใช้งานที่หนักกว่าและให้บริการเว็บแอปที่ซับซ้อนแทนหน้าคงที่) ความต้องการของคุณจะเพิ่มขึ้น ในที่สุดคุณจะต้อง:

  • ฮาร์ดแวร์ระดับเซิร์ฟเวอร์เช่นเซิร์ฟเวอร์แบบแร็คที่มีซีออนซีพียูหลายตัวและแรมนับร้อยกิกะไบต์
  • เครือข่ายใยแก้วนำแสง

ให้บริการโลกภายนอก

ในการใช้ประโยชน์จากโครงสร้างพื้นฐานอินเทอร์เน็ตเพื่อให้บริการทั่วโลกคุณจะต้อง:

หากไม่มีสิ่งเหล่านี้สิ่งที่คุณมีคือเว็บเซิร์ฟเวอร์ที่มีศักยภาพ


._ ฉันพิจารณา raspi ขั้นต่ำเปลือยและ janky เป็น heck มันก็คุ้มค่าที่จะจดจำหลาย ๆ อย่างที่ใช้เว็บเพจเป็น UI เราเตอร์ของคุณมีแต่ไม่ใช่เว็บเซิร์ฟเวอร์เป็นตัวอย่าง
Journeyman Geek

9
Diisagree กับความคิดเห็นเหล่านี้ - เราเตอร์เป็นเว็บเซิร์ฟเวอร์ (รวมถึงสิ่งอื่น ๆ ) โดยเหตุผลของความคิดเห็นที่ไม่มีสิ่งเช่นเว็บเซิร์ฟเวอร์เพราะระบบดังกล่าวมีฟังก์ชั่นอื่น ๆ
davidgo

5
ความต้องการซีพียูจำนวนมากและความต้องการทรัพยากรอื่น ๆ นั้นมีมากขึ้นเกี่ยวกับเว็บแอปพลิเคชันและภาษาในการสร้าง HTML แบบไดนามิกเช่น PHP ซึ่งเป็นเรื่องธรรมดา แต่โดยเฉพาะอย่างยิ่งถ้าตั้งค่าตามปกติ 33MHz 80486 ที่มี RAM ขนาด 16MB สามารถทำการโหลดหน้าแบบคงที่จำนวนมากหากใครก็ตามที่ต้องใส่ใจ
rackandboneman

@rackandboneman ดีมาก ฉันจะอธิบายความหมายของ "ถ้าการดำเนินการของคุณใหญ่ขึ้น" เพื่อแก้ไขข้อกังวลของคุณ

@rackandboneman ไม่เพียง 'สามารถ' ทำเพื่อจัดการ แต่ 'มักจะเป็น'
jwg

8

มุมมองการเขียนโปรแกรม / ซอฟต์แวร์:

โปรแกรมที่สามารถฟังพอร์ต 80 บนอะแดปเตอร์เครือข่าย ที่ทำงานบนระบบปฏิบัติการที่คุณมี และสามารถประมวลผลคำขอตามข้อกำหนด HTTP

โปรแกรมที่ฟังพอร์ตใด ๆ สามารถเข้าถึงได้จากคอมพิวเตอร์ทุกเครื่องในเครือข่ายเดียวกัน ควรเป็นพอร์ตมาตรฐานที่รู้จัก (80 และ 8080 สำหรับเซิร์ฟเวอร์ HTML เลือกเกิน 1024 สำหรับแอปพลิเคชันที่กำหนดเอง) มันก็เป็นเรื่องธรรมดาที่จะทำการพัฒนาโปรแกรมที่สามารถเข้าถึงเครือข่ายบนคอมพิวเตอร์เครื่องเดียวกับที่คุณกำลังพัฒนา

หากคุณสามารถเข้าถึงได้ผ่าน localhost คุณสามารถเข้าถึงได้จากทุกที่ภายในเครือข่ายเดียวกันและจากที่อื่นจะมีเส้นทางไปยังเครื่องนี้และอะแดปเตอร์เครือข่าย

Caveat: สภาพแวดล้อมการพัฒนาแบบ all-in-one จำนวนมากในการติดตั้งเริ่มต้นจะ จำกัด การเข้าถึง Localhost คุณไม่ต้องการให้เครื่องมือผู้ดูแลระบบของคุณสามารถเข้าถึงได้จากอินเทอร์เน็ตหลังจากทั้งหมด

ฮาร์ดแวร์:

ฮาร์ดแวร์เริ่มต้นที่ไหนสักแห่งที่ "คอมพิวเตอร์ 10 ปีที่รัน XP หรือ Linux" และจบลงที่ "128 core พร้อม 2 TiB RAM และ 256 TiB ของ SSD ในการโจมตี" ด้วย DB ที่ทำงานบนเซิร์ฟเวอร์ที่แตกต่างกันเช่นกัน . แอปพลิเคชันบนเว็บมีแนวโน้มที่จะทำให้เป็นคู่ขนานที่น่าพอใจดังนั้นคุณสามารถ / ต้องเพิ่มมากขึ้นด้วยกลุ่มของเซิร์ฟเวอร์เหล่านั้น และ Geocast และกระจายการออกแบบ และอีกหลายสิ่ง ทั้งหมดขึ้นอยู่กับขนาดที่เรากำลังพูดถึง

เว็บเซิร์ฟเวอร์ที่ง่ายที่สุดที่คุณจะพบคือเราเตอร์ที่คุณใช้งาน btw พวกเขาทั้งหมดเรียกใช้เว็บเซิร์ฟเวอร์เพื่อวัตถุประสงค์ในการกำหนดค่าซึ่งโฮสต์บน Linux (นั่นคือการทำงาน DHCP และ NAT ทั้งหมด)

เครือข่าย:

มีเส้นทางจากเครือข่ายอื่น ๆ - รวมทุกที่บนอินเทอร์เน็ต - ตอนนี้ว่าเป็นเรื่องที่แตกต่างกันโดยสิ้นเชิงและเป็นส่วนหนึ่งได้ยากกว่าการเขียนโปรแกรมแอพลิเคชัน ระหว่าง NAT ของเราเตอร์และผู้ให้บริการระดับ NAT สิ่งนี้กลายเป็นเรื่องยากจริงๆ

  • คุณมักจะมีตัวเลือกในการซื้อที่อยู่ IP คงที่จาก ISP ของคุณแม้เป็นส่วนตัว ตามที่บ่งชี้ว่ามีแนวโน้มว่าจะมีค่าใช้จ่ายเพิ่มเติม รายการ DNS จะเป็นสิ่งมีชีวิตที่มีคุณภาพ
  • ย้อนกลับไปก่อนCarrier Grade NATคุณสามารถทำงานกับที่อยู่ IP แบบไดนามิกและบริการ DynDNS แต่ด้วย NAT ระดับผู้ให้บริการตอนนี้คุณมี NAT ที่ไม่สามารถควบคุมได้อีกตัวเพื่อเอาชนะ - บางที ขึ้นอยู่กับผู้ให้บริการของคุณ
  • ทางออกที่ดีที่สุดเพื่อสำรวจชนิดของ NAT จำนวนชั้นใด ๆ ที่เป็นTCP / IP หลุมเจาะ โซลูชัน VPN ทั้งหมดใช้งานได้ เช่นเดียวกับ Skype, TeamViewer และอื่น ๆ ทั้งหมด ปัญหาคือ: ในการที่จะเจาะรู TCP / IP คุณต้องมีเซิร์ฟเวอร์ที่สามารถเข้าถึงได้บนอินเทอร์เน็ตแล้ว
  • หากเป็นเรื่องเกี่ยวกับเครื่องชั่งขนาดเล็ก (1 ถึง 10 จุดสิ้นสุด) โดยทั่วไปวิธีที่ง่ายที่สุดคือเพียงทำการเชื่อมต่อ VPN เข้าสู่เครือข่ายที่มีเซิร์ฟเวอร์ เราเตอร์ส่วนใหญ่มีการสนับสนุน

2
"คอมพิวเตอร์อายุ 10 ปีที่ใช้งาน Linux" เมื่อพิจารณาถึงอายุของเว็บเราสามารถผลักดันมันกลับมาได้อย่างปลอดภัย ฉันจำได้ว่าใช้เว็บเซิร์ฟเวอร์กับ Intel 80386 ดั้งเดิมเมื่อประมาณ 20 ปีที่แล้ว
MSalters

@MSalters คุณสามารถไปที่ต่ำกว่ามาก ฉันไม่สามารถหาได้ในวันนี้ แต่ไม่กี่ปีที่ผ่านมาฉันพบกับเชลล์สคริปต์ / CGI เว็บเซิร์ฟเวอร์ที่สามารถทำงานบนฮาร์ดแวร์ได้อย่างต่ำเมื่อ moto 68k เห็นได้ชัดว่าเป็นที่นิยมเมื่อ 15-20 ปีก่อนในพื้นที่ฝังตัว
Dan Neely

3

หากคุณมีคอมพิวเตอร์ทุกชนิด (PC, แล็ปท็อป, สมาร์ทโฟน, raspberryPI ... ) ที่ติดตั้ง Python เพียงแค่พิมพ์:

$ python -m SimpleHTTPServer

หรือถ้าคุณติดตั้ง Node.js:

$ npm install http-server -g
$ http-server

ขอแสดงความยินดีคุณมีเว็บเซิร์ฟเวอร์!

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.