Điều gì làm cho PC có thể trở thành một máy chủ web và điều gì làm cho nó không thể?


43

Tôi có một câu hỏi về việc sử dụng máy tính như một máy chủ web. Tại sao một máy tính nhất định có thể là một máy chủ web? Những tính năng làm cho nó có thể là một máy chủ web? Có trường hợp nào máy tính không thể hoạt động như một máy chủ web không?


Một card mạng.
el.pescado

1
Cái nhỏ nhất tôi từng thấy là thẻ SD wifi do Apacer sản xuất. Nó có 4 MB ram và chạy linux và có thể đáp ứng các yêu cầu web và truyền hình ảnh khi nó ở trong máy ảnh.
dùng3528438

@ el.pescado Trừ khi khách hàng ở trên cùng một máy chủ.
Dmitry Grigoryev

Câu trả lời:


96

Khá nhiều máy tính có thể được sử dụng như một máy chủ [web], miễn là nó có thể kết nối với mạng và có thể chạy phần mềm máy chủ web. Vì một máy chủ web có thể khá đơn giản và có các máy chủ web nguồn mở và miễn phí, trên thực tế, bất kỳ thiết bị nào cũng có thể hoạt động như một máy chủ web.

Vấn đề lớn hơn là phía mạng. Để một hệ thống hoạt động như một máy chủ, các máy khác cần có khả năng truy cập nó. Nếu nó chỉ để sử dụng trong mạng LAN, không có mối quan tâm nào; tuy nhiên, nếu nó được sử dụng từ Internet rộng hơn, thì dữ liệu cần phải được chuyển đến nó. Điều này yêu cầu địa chỉ IP tĩnh được liên kết với máy chủ (hoặc cổng được chuyển tiếp qua bộ định tuyến) hoặc dịch vụ bên ngoài có thể ánh xạ tên miền / tên miền phụ sang địa chỉ IP động thay đổi.

(FWIW, bạn có thể mua máy tính $ 10 có thể hoạt động như một máy chủ web cơ bản.)

Tất nhiên, trong khi bất kỳ thiết bị nào có thể hoạt động như một máy chủ web, chức năng của các trang web có thể thay đổi rất nhiều và một thiết bị giá rẻ (hoặc kết nối chậm) có thể không thể theo kịp nhu cầu tùy thuộc vào trang web cụ thể là gì.

Tôi lưu ý rằng tất cả mọi thứ ở trên đều nói về máy chủ web - nhưng điều tương tự cũng có thể nói với hầu hết mọi loại máy chủ.


2
một vấn đề khác là các thiết bị giá rẻ có thể không đáng tin cậy như máy chủ "thực" vì các thành phần của chúng không được chứng nhận để chạy trong một thời gian rất dài và bộ nhớ của chúng không có bất kỳ biện pháp nào để ngăn chặn sự thối bit như RAM ECC. Tôi đã thấy các đồng nghiệp của mình rời khỏi máy tính của họ trong vài tháng và kết thúc ở BSOD
phuclv

11
Có và không. Ive chạy nhiều hệ thống 24/7 mà không cần ram ecc và hầu hết các bộ định tuyến doanh nghiệp nhỏ / gia đình - vốn là các máy chủ wenb cũng chạy khá đáng tin cậy mà không cần bsod. Tất nhiên, tương đương BSOD không phổ biến ngoài thế giới Windows.
davidgo

9
@davidgo Lỗi Bugcheck cũng không phổ biến trong thế giới Windows, trừ khi bạn gặp lỗi trình điều khiển phần cứng hoặc tinh ranh. Điều này gây ra vấn đề tương tự cho bất kỳ hệ điều hành. Mất số lượng các sự cố liên quan đến trình điều khiển video trên cả Windows và Linux.
Bob

7
@davidgo BSOD chỉ là một lỗi an toàn, không phải là vấn đề của riêng nó. Đây là một nỗ lực cuối cùng để ngăn chặn tham nhũng mã / dữ liệu lén lút và thiệt hại phần cứng. Trong mọi trường hợp, bằng chứng giai thoại hoàn toàn vô dụng trong những điều như thế này - có khả năng rất cao bạn sẽ không bao giờ gặp phải vấn đề có thể nhìn thấy với điều này, hoặc bạn sẽ phân phối sai, và có một số lượng lớn các yếu tố môi trường tạo ra nó ít nhiều khả năng (nhiệt độ, vĩ độ, nhiễu EM, chất lượng mạng điện, tải hệ thống, độ tin cậy của một thành phần nhất định). Chi phí và giá trị của RAM ECC và đó là một quyết định kinh doanh.
Luaan

15
Có thể bạn đã có một vài máy chủ web ở nhà: Bộ định tuyến / điểm truy cập, máy in của bạn và tất cả các loại thiết bị tự động hóa gia đình có thể định cấu hình khác như đồng hồ thông minh, camera IP, điện thoại VoIP, bộ điều nhiệt có thể lập trình, TV của bạn. Những cái nhỏ hơn cung cấp cho bạn một ý tưởng về việc cần ít phần cứng. Một lưu ý khác: Mạng không phải là một yêu cầu nghiêm ngặt đối với máy chủ web - việc có một máy chủ chỉ phục vụ các trang cho người dùng trên cùng một máy là điều hoàn toàn hợp lý .
Peter - Tái lập Monica

25

Nó không khó khăn chút nào. Nó chỉ phụ thuộc vào định nghĩa của bạn về "máy chủ web".

Hoàn toàn có thể chạy "máy chủ web" trên các thiết bị đơn giản như vi điều khiển.

Hãy xem xét những gì máy chủ web tối thiểu cần phải làm. Nó sẽ cần xuất một số văn bản - không nhất thiết phải bằng HTML cho khách hàng. Nó sẽ cần phải biết một yêu cầu là một yêu cầu, và trả lời thích hợp. Bạn thậm chí sẽ không cần kết nối mạng nếu "khách hàng" của bạn là cục bộ. Nó sẽ là một máy chủ web hoàn toàn vô nghĩa.

Nó sẽ là máy chủ web tương đương với một trong số này .

nhập mô tả hình ảnh ở đây

Thêm kết nối mạng cho máy khách (Ethernet là tốt, nhưng không có lý do kỹ thuật nào bạn không thể kết nối với máy chủ web chạy bằng wifi) và có thể định tuyến từ máy khách sẽ tốt hơn.

Một chiếc ESP8266 giá 5 đô la - một bộ vi điều khiển tối thiểu, giá rẻ có wifi có thể xử lý phần lớn điều đó, và thậm chí có thể là nội dung động cơ bản

Tôi sử dụng một cái gì đó như thế để chia sẻ tập tin nhanh bằng Python. Bạn vẫn hoàn toàn có thể viết một cái gì đó như thế này trên một vi điều khiển hoặc thậm chí chạy nó trên điện thoại.

Nội dung tĩnh là nhàm chán. Thêm ngôn ngữ động và bạn cần bắt đầu nghĩ đến các hệ thống nặng hơn. Những thứ chạy Linux hoặc Windows đều tốt.

Tại thời điểm này, bạn đang nói về bộ định tuyến người tiêu dùng, các ứng dụng nhỏ sử dụng các trang web tại UI và tất cả những thứ đó.

Một máy chủ web thậm chí không phải là một vấn đề phức tạp và có thể được viết thành năm dòng bash và chạy trên Linux. Bây giờ diệt vong ... Nhưng bất kỳ hệ thống có thể chạy diệt vong có thể chạy một máy chủ web.

Một thiết lập máy chủ web tốt có khả năng xử lý một tải nhất định có phần phức tạp hơn.


11
Thậm chí có thể hàn cùng một số chip TTL và chạy máy chủ web. Xem trang web này để biết chi tiết
Josef

7
Điều đó gần giống như nói rằng "Thậm chí có thể kết hợp một số thép và xây dựng tháp Eiffel. Thật tuyệt vời
Journeyman Geek

1
Thật thú vị, máy chủ web 'vô nghĩa' của bạn chính xác là cách một số trợ giúp được sử dụng để làm việc cho một số sản phẩm nhất định :) - Tôi không thể nhớ các ví dụ, nhưng có ít nhất một trường hợp trợ giúp đang chạy trên máy chủ (không chỉ là trang html được hiển thị bởi một trình duyệt) và các vấn đề tiếp theo đã xuất hiện (các trang trợ giúp của tôi không tải khi tường lửa của tôi được bật!).
djsmiley2k - CoW

5
@ djsmiley2k Trợ giúp Eclipse sử dụng máy chủ web cục bộ. Vì Java.
dùng253751

2
Một raspi được cung cấp năng lượng cao hơn khả năng 99,9% máy chủ web thương mại là vào năm 2000. Và mọi người đã làm những thứ rất năng động hồi đó.
rackandboneman

11

Mức tối thiểu

Theo nghĩa đen, bất kỳ máy tính nào cũng có thể trở thành máy chủ web nếu có:

  • Kết nối mạng
  • Một ứng dụng máy chủ web rất đơn giản, như thế này .

Nhưng nó sẽ đủ? Bây giờ, đó là câu hỏi khó.

Phục vụ mạng nội bộ

Để máy tính trở thành máy chủ web phục vụ các trang web hoặc ứng dụng web hiện đại cho toàn bộ cộng đồng (ví dụ: trường học, công ty, bảo tàng):

  • Phần cứng có khả năng đáp ứng nhiều máy tính cùng một lúc. Có lẽ một máy tính cũ chạy Linux hoặc Windows XP sẽ làm được.
  • Kết nối mạng tốc độ cao với đủ băng thông, giả sử Ethernet 1 Gbit / giây hoặc Wi-Fi 802.11g.
  • Một ứng dụng máy chủ web tốt, như IIS , Apache , Nginx hoặc các ứng dụng khác . (Đáng ngạc nhiên, ba người này là miễn phí.)

Nhưng đó chỉ là mức tối thiểu cho các hoạt động nhỏ. Khi hoạt động của bạn trở nên lớn hơn (tức là bạn có lưu lượng truy cập lớn hơn và phục vụ các ứng dụng web phức tạp thay vì các trang tĩnh), nhu cầu của bạn sẽ tăng lên. Cuối cùng bạn sẽ cần:

  • Phần cứng cấp máy chủ như máy chủ gắn trên giá với một số CPU Xeon và hàng trăm GB RAM
  • Mạng cáp quang

Phục vụ thế giới bên ngoài

Để khai thác cơ sở hạ tầng Internet để phục vụ toàn thế giới, bạn sẽ cần:

  • Địa chỉ IP công cộng
  • Một máy chủ DNS công cộng
  • Chứng chỉ kỹ thuật số được cấp bởi các cơ quan chứng nhận có uy tín để thiết lập kết nối an toàn

Không có những thứ này, tất cả những gì bạn có là một máy chủ web tiềm năng .


._. Tôi coi một raspi là tối thiểu trần và janky là quái. Nó cũng đáng ghi nhớ nhiều thứ sử dụng một trang web như một giao diện người dùng. Bộ định tuyến của bạn nhưng không phải là một máy chủ web chẳng hạn.
Journeyman Geek

9
Diisagree với những bình luận này - một bộ định tuyến LÀ một máy chủ web (cũng như những thứ khác). Theo logic của các bình luận, không có thứ gọi là máy chủ web vì bất kỳ hệ thống nào như vậy đều có chức năng khác.
davidgo

5
CPU nặng và các nhu cầu tài nguyên khác liên quan nhiều đến các ứng dụng web và ngôn ngữ tạo HTML động - ví dụ: PHP, một ngôn ngữ phổ biến nhưng (đặc biệt là nếu được thiết lập theo cách thông thường) không hiệu quả về ngôn ngữ như vậy - hơn là về phục vụ web. Một 80486 33 MHz với 16 MB RAM có thể được tạo ra để xử lý tải nặng các trang tĩnh nếu có ai làm phiền.
rackandboneman

@rackandboneman Rất tốt. Tôi sẽ làm rõ ý nghĩa của "nếu hoạt động của bạn trở nên lớn hơn" để giải quyết mối quan tâm của bạn.

@rackandboneman Không chỉ "có thể" được thực hiện để xử lý, mà "thường là".
jwg

8

Quan điểm lập trình / phần mềm:

Một chương trình có thể nghe Cổng 80 trên Bộ điều hợp mạng. Điều đó chạy trên hệ điều hành bạn có. Và có thể xử lý các yêu cầu theo định nghĩa HTTP.

Một chương trình nghe bất kỳ cổng nào có thể truy cập từ mọi máy tính trong cùng một mạng. Lý tưởng nhất, đó phải là một cổng tiêu chuẩn đã biết (80 và 8080 cho các máy chủ HTML; vượt quá 1024 cho các ứng dụng tùy chỉnh). Nó thậm chí còn phổ biến để chạy phát triển một chương trình có thể truy cập mạng trên cùng một máy tính mà bạn đang thực hiện phát triển.

Nếu bạn có thể truy cập nó qua localhost, bạn có thể truy cập nó từ bất kỳ đâu trong cùng một mạng và từ bất kỳ nơi nào khác có đường dẫn đến máy này và bộ điều hợp mạng của nó.

Hãy cẩn thận: Rất nhiều môi trường phát triển tất cả trong một trong các cài đặt mặc định giới hạn quyền truy cập vào Localhost. Rốt cuộc, bạn không muốn các công cụ quản trị của mình có thể truy cập được từ Internet.

Phần cứng:

Phần cứng bắt đầu ở đâu đó tại "máy tính 10 tuổi chạy XP hoặc Linux" và kết thúc ở đâu đó xung quanh "lõi 128, với RAM 2 TiB và 256 TiB SSD trong một cuộc đột kích", với DB cũng chạy trên một máy chủ khác . Các ứng dụng web có xu hướng dễ dàng song song hóa, vì vậy bạn có thể / phải nâng cấp nó nhiều hơn với các cụm máy chủ đó. Và Geocast. Và thiết kế phân phối. Và rất nhiều thứ khác. Nó hoàn toàn phụ thuộc vào quy mô mà chúng ta đang nói về.

Máy chủ web đơn giản nhất bạn có thể gặp là bộ định tuyến bạn đang sử dụng, btw. Tất cả đều chạy máy chủ Web cho mục đích cấu hình, được lưu trữ trên Linux (đang thực hiện tất cả công việc DHCP và NAT).

Mạng:

Có một đường dẫn từ các mạng khác - bao gồm mọi nơi trên Internet - bây giờ đó là một câu chuyện hoàn toàn khác và một phần thậm chí còn khó hơn cả lập trình ứng dụng. Giữa NAT của Bộ định tuyến và NAT của nhà cung cấp, công cụ này thực sự khó khăn.

  • Bạn luôn có tùy chọn mua một địa chỉ IP cố định từ ISP của mình, ngay cả với tư cách cá nhân. Như nó chỉ ra, điều đó sẽ có khả năng chi phí thêm. Một mục DNS sẽ là một chất lượng của cuộc sống.
  • Quay lại trước Carrier Carrier NAT , bạn có thể làm việc với địa chỉ IP động của mình và dịch vụ DynDNS. Nhưng với NAT lớp tàu sân bay, giờ đây bạn có một NAT không thể kiểm soát khác để vượt qua - có thể. Phụ thuộc vào nhà cung cấp của bạn.
  • Giải pháp cuối cùng để vượt qua một loại NAT, bất kỳ số lớp nào là đục lỗ TCP / IP . Tất cả các giải pháp VPN đều sử dụng nó. Cũng như Skype, TeamViewer và tất cả những người khác. Vấn đề là: Để thực hiện việc bấm lỗ TCP / IP, bạn cần một máy chủ có thể truy cập được trên Internet.
  • Nếu đó là về quy mô nhỏ (1 đến 10 điểm cuối), thông thường, cách đơn giản nhất là chỉ cần kết nối VPN vào mạng có máy chủ. Hầu hết các bộ định tuyến có hỗ trợ cho nó.

2
"Máy tính 10 năm tuổi đó chạy Linux". Xem xét thời đại của web, chúng ta có thể đẩy nó trở lại một cách an toàn. Cá nhân tôi nhớ lại việc chạy một máy chủ web trên Intel 80386 gốc, khoảng 20 năm trước.
MSalters

@MSalters Bạn có thể đi đến cuối thấp hơn nhiều. Tôi không thể tìm thấy nó ngày hôm nay, nhưng một vài năm trước tôi đã gặp một máy chủ web shell script / CGI có thể chạy trên phần cứng với mức kết thúc thấp như một moto 68k. Nó rõ ràng là tương đối phổ biến 15-20 năm trước trong không gian nhúng.
Dan Neely

3

Nếu bạn có trong tay bất kỳ loại máy tính nào (PC, máy tính xách tay, điện thoại thông minh, raspberryPI ...) đã cài đặt Python, chỉ cần gõ:

$ python -m SimpleHTTPServer

Hoặc nếu bạn đã cài đặt Node.js:

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

Xin chúc mừng, bạn có một máy chủ web!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.