Що робить ПК здатним бути веб-сервером, а що не дає можливості?


43

У мене є питання щодо використання комп’ютера як веб-сервера. Чому певний комп'ютер може бути веб-сервером? Які функції дозволяють зробити його веб-сервером? Чи є випадок, коли комп'ютер не може виконувати функції веб-сервера?


Мережева карта.
el.pescado

1
Найменший, що я бачив, - це SD-карта Wi-Fi, виготовлена ​​компанією Apacer. Він має 4 Мб оперативної пам’яті та працює під управлінням linux та може реагувати на запити в Інтернеті та передавати зображення, коли він знаходиться в камері.
користувач3528438

@ el.pescado Якщо тільки клієнт не знаходиться на одному хості.
Дмитро Григор’єв

Відповіді:


96

Практично будь-який комп'ютер може використовуватися як [веб] сервер, за умови, що він може підключитися до мережі та може запускати програмне забезпечення веб-сервера. Оскільки веб-сервер може бути досить простим, а існують безкоштовні та відкриті веб-сервери, на практиці будь-який пристрій може виступати як веб-сервер.

Більша проблема полягає в роботі мережі. Для того, щоб система діяла як сервер, інші машини повинні мати доступ до неї. Якщо це просто для використання в локальній мережі, проблем немає; однак, якщо він використовується для широкого Інтернету, то дані потрібно перенаправляти до нього. Для цього потрібна або статична IP-адреса, пов'язана з сервером (або переадресований через маршрутизатор порт), або зовнішня служба, яка може зіставити доменне ім’я / піддомен на зміну динамічної IP-адреси.

(FWIW, ви можете придбати комп’ютери за 10 доларів, які можуть виконувати функції основного веб-сервера.)

Звичайно, хоча будь-який пристрій може діяти як веб-сервер, функціональність веб-сайтів може сильно відрізнятися, а дешевий пристрій (або повільне підключення) може не встигати відповідати вимогам залежно від конкретного веб-сайту.

Зауважу, що все вище йдеться про веб-сервери - але те саме можна сказати і для будь-якого сервера.


2
Інша проблема полягає в тому, що дешеві пристрої можуть бути не настільки надійними, як "справжні" сервери, оскільки їх компоненти не сертифіковані для роботи протягом дуже тривалого часу, а їх пам'ять не має жодних засобів, щоб запобігти гниттю бітів, як ECC RAM. Я бачив, як мої колеги залишають свої комп’ютери протягом декількох місяців і опиняються в BSOD
phuclv

11
Так і ні. Я запускаю безліч систем 24/7 без ecc ram, і більшість маршрутизаторів для домашнього / малого бізнесу - які є серверами Wenb, а також працюють досить надійно без bsod. Звичайно, еквіваленти BSOD не такі поширені за межами Windows.
Давидго

9
Помилки помилки @davidgo Bugcheck також не часто зустрічаються у світі Windows, якщо у вас немає несправних апаратних засобів або хитрі драйвери. Які викликають подібні проблеми для будь-якої ОС. Втрачена кількість кількості проблем, пов’язаних із драйверами відео, як у Windows, так і в Linux.
Боб

7
@davidgo BSOD - це просто безвідмовна робота, а не проблема сама по собі. Це остання спроба канави, щоб запобігти підступному коду / даних та пошкодження обладнання. У будь-якому випадку, анекдотичні докази є абсолютно марними у подібних речах - є дуже великий шанс, що ви ніколи не зіткнетесь із видимою проблемою з цим, або ви неправильно розподілите це, і існує величезна кількість факторів навколишнього середовища, які роблять це більш-менш вірогідні (температура, широта, шум ЕМ, якість електричної мережі, навантаження системи, надійність певного компонента). Вартість та вартість оперативної пам’яті ECC, і таке бізнес-рішення.
Луаан

15
Напевно у вас вже є кілька веб-серверів: ваш маршрутизатор / точка доступу, ваш принтер та всі інші види налаштованих пристроїв домашньої автоматизації, такі як смарт-лічильники, IP камери, VoIP-телефони, програмовані термостати, телевізор. Менші з них дають уявлення про те, як мало обладнання потрібно. Ще одне зауваження: Мережа не є суворою вимогою до веб-сервера - це може мати ідеальний сенс мати сервер, який обслуговує сторінки лише користувачам на одній машині .
Пітер - Відновіть Моніку

25

Це зовсім не хитро. Це просто залежить від вашого визначення поняття "веб-сервер".

Цілком можливо запустити "веб-сервер" на таких пристроях, як простий мікроконтролер.

Давайте розглянемо, що потрібно буде зробити мінімальним веб-сервером. Було б потрібно вивести якийсь текст - не обов'язково навіть у HTML для клієнта. Потрібно знати, що запит - це запит, і відповісти належним чином. Вам навіть не потрібно мережевого підключення, якби ваш "клієнт" був локальним. Це був би абсолютно безглуздий веб-сервер.

Це було б еквівалентом одного із цих веб-серверів .

введіть тут опис зображення

Додавання мережевого підключення для клієнта (Ethernet приємно, але немає технічної причини, що ви не можете підключитися до веб-сервера, що працює на wifi), і можливість маршрутизації з клієнта було б краще.

$ 5 ESP8266 - дешевий мінімальний мікроконтролер з Wi-Fi може впоратися з великою частиною цього, а може бути, і з базовим динамічним вмістом

Я використовую щось подібне для швидкого обміну файлами за допомогою Python. Все ще цілком можливо написати щось подібне на мікроконтролері або навіть запустити це по телефону.

Статичний вміст нудний. Додайте динамічні мови, і вам потрібно буде почати думати про більш важкі системи ваги. Корисні речі, які працюють під управлінням Linux або Windows.

На даний момент ви говорите про маршрутизатори споживачів, невеликі додатки, що використовують веб-сторінки в інтерфейсі та все таке.

Веб-сервер навіть не є складною проблемою, і його можна записати в п'ять рядків bash і запустити в Linux. Тепер дум ... Але будь-яка система, яка може запустити дому, може запустити веб-сервер.

Хороша настройка веб - сервер , здатний обробляти задану навантаження дещо складніше.


11
Можна навіть спаяти кілька TTL-фішок і запустити веб-сервер. Детальну інформацію див. На цій веб-сторінці
Йозеф

7
Це приблизно так, як сказати: "Можна навіть з'єднати сталь і побудувати Ейфелеву вежу. Це так круто
Journeyman Geek

1
Приємно, що ваш "безглуздий" веб-сервер - це саме те, як якась допомога використовувалась для роботи з певними продуктами :) - Я не можу пригадати прикладів, але був принаймні один випадок, коли допомога працювала на сервері (не просто надана HTML-сторінка браузером) та подані нижче проблеми (мої сторінки довідки не завантажуються, коли мій брандмауер увімкнено!).
djsmiley2k - CoW

5
@ djsmiley2k Довідка Eclipse використовує локальний веб-сервер. Тому що Java.
користувач253751

2
Рапі з більшою потужністю, ніж, ймовірно, 99,9% комерційних веб-серверів були у 2000 році. І тоді люди вже робили дуже динамічні речі.
rackandboneman

11

Голий мінімум

Буквально будь-який комп'ютер може стати веб-сервером, якщо він має наступне:

  • Мережеве з'єднання
  • Дуже простий додаток для веб-сервера, як це .

Але чи вистачило б це? Тепер це складне питання.

Обслуговування Інтранету

Щоб комп'ютер став веб-сервером, який обслуговує сучасні веб-сторінки або веб-додатки для всієї спільноти (наприклад, школи, компанії, музею):

  • Апаратне забезпечення, здатне реагувати відразу на кілька комп’ютерів. Можливо, старий комп'ютер під управлінням Linux або Windows XP зробив би.
  • Швидкісне мережеве з'єднання з достатньою пропускною здатністю, скажімо, 1 Гбіт / сек Ethernet або 802.11g Wi-Fi.
  • Хороший додаток для веб-сервера, наприклад IIS , Apache , Nginx та інші . (Дивно, але ці троє є безкоштовними.)

Але це був лише мінімум для невеликих операцій. Коли ваша операція зростає (тобто ви отримуєте більший трафік і обслуговуєте складні веб-програми замість статичних сторінок), ваші потреби зростають. Вам з часом знадобиться:

  • Обладнання серверного класу, як встановлені на стійці сервери з кількома процесорами Xeon і сотнями гігабайт оперативної пам’яті
  • Волоконно-оптичні мережі

Обслуговування світу зовні

Щоб використовувати Інтернет-інфраструктуру для обслуговування всього світу, вам знадобляться:

Без цього все, що у вас є, - це потенційний веб-сервер.


._. Я вважаю рашпі голим мінімумом і примхливим як чорт. Також варто пам’ятати, що багато речей використовують веб-сторінку як інтерфейс користувача. Маршрутизатор має , але НЕ веб - сервер, наприклад.
Подорожник Geek

9
Не згоден з цими коментарями - маршрутизатор IS веб-сервер (як і інші речі). За логікою коментарів, такого веб-сервера немає, тому що будь-яка така система має інші функціональні можливості.
davidgo

5
Інтенсивні потреби в процесорі та інших ресурсах набагато більше стосуються веб-додатків та динамічних мов генерування HTML - наприклад, PHP, загальної, але (особливо, якщо налаштовано так, як це зазвичай є) такої мови надзвичайно неефективно - ніж про розміщення в Інтернеті. 33MHz 80486 з 16 Мб оперативної пам’яті можна зробити для обробки великого навантаження статичних сторінок, якщо хтось турбує.
rackandboneman

@rackandboneman Дуже добре. Я проясню значення "якщо ваша операція зростає", щоб вирішити вашу проблему.

@rackandboneman Не просто "можна було б" поводитися, але "часто було".
jwg

8

Програмування / перспектива програмного забезпечення:

Програма, яка здатна прослуховувати порт 80 на мережевому адаптері. Це працює на вашій ОС. І може обробляти запити відповідно до визначення HTTP.

Програма, яка слухає будь-який порт, доступна на кожному комп’ютері в одній мережі. В ідеалі це повинен бути відомий стандартний порт (80 і 8080 для серверів HTML; вибирайте понад 1024 для користувацьких додатків). Це навіть звичайна практика запускати розробку мережі з доступною мережею на тому ж комп'ютері, на якому ви займаєтеся розробкою.

Якщо ви можете дістатися до нього через localhost, ви можете дістатися до нього з будь-якого місця в межах однієї мережі, а з будь-якого місця є шлях до цієї машини та її мережевого адаптера.

Caveat: Дуже багато середовищ розробки все в одному в установках за замовчуванням обмежують доступ до Localhost. Зрештою, ви не хочете, щоб ваші інструменти адміністратора були доступні з Інтернету.

Обладнання:

Апаратне забезпечення починається десь із "того 10-річного комп'ютера, який працює під управлінням XP або Linux" і закінчується десь біля "128-ядерної, з 2 TiB оперативної пам’яті та 256 TiB SSD в рейді", і БД також працює на іншому сервері . Веб-додатки, як правило, приємно паралелізуються, тому ви можете / доведеться ще більше доповнювати це кластерами цих серверів. І Geocast. І розподілений дизайн. І багато іншого. Це повністю залежить від того, про який масштаб ми говоримо.

Найпростіший веб-сервер, який ви, мабуть, зустрінете - це маршрутизатор, який ви використовуєте, btw. Всі вони запускають веб-сервер для цілей конфігурації, розміщений на Linux (що робить усі роботи DHCP та NAT).

Мережа:

Маючи шлях від інших мереж - в тому числі в будь-якому місці в Інтернеті - тепер , що це зовсім інша історія , а частина навіть складніше , ніж програмування додатки. Між NAT вашого маршрутизатора і NAT-класу, цей матеріал став дуже важким.

  • Ви завжди маєте можливість придбати фіксовану IP-адресу у свого провайдера, навіть як приватна особа. Як вказується, це, швидше за все, коштуватиме додатково. Запис у DNS - це річ якості життя.
  • Повернувшись до NAT Carrier Grade , ви могли працювати з вашою динамічною 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 років тому у вбудованому просторі.
Ден Нелі

3

Якщо у вас під рукою будь-який комп'ютер (ПК, ноутбук, смартфон, малиновий інтерфейс PI ...) із встановленим Python, просто введіть:

$ python -m SimpleHTTPServer

Або якщо у вас встановлений Node.js:

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

Вітаємо, у вас є веб-сервер!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.