Что позволяет ПК быть веб-сервером, а что нет?


43

У меня есть вопрос об использовании компьютера в качестве веб-сервера. Почему определенный компьютер может быть веб-сервером? Какие функции позволяют ему быть веб-сервером? Есть ли случай, когда компьютер не может выступать в качестве веб-сервера?


Сетевая карта.
el.pescado

1
Наименьшее, что я видел, - это Wi-Fi SD-карта производства Apacer. Он имеет 4 МБ оперативной памяти и работает под управлением Linux и может отвечать на веб-запросы и передавать изображения, когда он находится в камере.
user3528438

@ el.pescado Если клиент не находится на том же хосте.
Дмитрий Григорьев

Ответы:


96

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

Большая проблема - сетевая сторона. Чтобы система действовала как сервер, другие машины должны иметь доступ к ней. Если это только для использования в локальной сети, нет никаких проблем; однако, если это для использования из более широкого Интернета, то данные должны быть направлены на него. Это требует либо статического IP-адреса, связанного с сервером (или порта, пересылаемого через маршрутизатор), либо внешней службы, которая может сопоставить доменное имя / поддомен с изменяющимся динамическим IP-адресом.

(FWIW, вы можете купить компьютеры за 10 долларов, которые могут выступать в качестве основного веб-сервера.)

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

Я отмечаю, что все вышеизложенное говорит о веб-серверах - но то же самое можно сказать почти для любого типа сервера.


2
Другая проблема заключается в том, что дешевые устройства могут быть не такими надежными, как «настоящие» серверы, поскольку их компоненты не сертифицированы для работы в течение очень длительного времени, а их память не имеет никаких средств для предотвращения гниения, как ECC RAM. Я видел, как мои коллеги оставляли свои компьютеры в течение нескольких месяцев и
оказались

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 - это хорошо, но нет технической причины, по которой вы не можете подключиться к веб-серверу, работающему по Wi-Fi), и возможность маршрутизации от клиента была бы лучше.

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

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

Статическое содержание скучно. Добавьте динамические языки, и вам нужно начать думать о более тяжелых системах веса. Вещи, которые работают под Linux или Windows, хороши.

На этом этапе вы говорите о потребительских маршрутизаторах, небольших приложениях, использующих веб-страницы в интерфейсе пользователя, и все такое.

Веб-сервер не является даже сложной проблемой и может быть написан на пяти строках bash и работать в Linux. Теперь Doom ... Но любая система, которая может запустить Doom, может запустить веб-сервер.

Хорошая настройка веб - сервер , способный обрабатывать заданную нагрузку несколько сложнее.


11
Можно даже спаять несколько чипов TTL и запустить веб-сервер. См. Эту веб-страницу для деталей
Йозеф

7
Это примерно то же самое, что сказать: «Можно даже собрать немного стали и построить Эйфелеву башню. Это так круто,
подмастерье, выродок

1
Забавно, но ваш «бессмысленный» веб-сервер - это именно то, как какая-то помощь использовалась для определенных продуктов :) - я не могу вспомнить примеры, но был хотя бы один случай, когда помощь выполнялась на сервере (не только рендеринг HTML-страницы). браузером) и последующие проблемы (мои страницы справки не загружаются при включенном брандмауэре!).
djsmiley2k - CoW

5
@ djsmiley2k Справка по Eclipse использует локальный веб-сервер. Потому что Java.
user253751

2
Распи мощнее, чем вероятно, 99,9% коммерческих веб-серверов были в 2000 году. И тогда люди уже делали очень динамичные вещи.
rackandboneman

11

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

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

  • Сетевое подключение
  • Очень простое приложение веб-сервера, подобное этому .

Но будет ли этого достаточно? Теперь это сложный вопрос.

Обслуживание Интранета

Чтобы компьютер стал веб-сервером, который предоставляет современные веб-страницы или веб-приложения всему сообществу (например, школе, компании, музею):

  • Аппаратное обеспечение, способное реагировать на несколько компьютеров одновременно. Возможно, подойдет старый компьютер под управлением Linux или Windows XP.
  • Высокоскоростное сетевое соединение с достаточной пропускной способностью, скажем, 1 Гбит / с Ethernet или 802.11g Wi-Fi.
  • Хорошее приложение веб-сервера, такое как IIS , Apache , Nginx или другие . (Удивительно, но эти трое бесплатны.)

Но это был минимум для небольших операций. Когда ваша работа становится больше (то есть вы получаете более интенсивный трафик и обслуживаете сложные веб-приложения вместо статических страниц), ваши потребности растут. В конечном итоге вам понадобится:

  • Аппаратное обеспечение серверного класса, например стоечные серверы с несколькими процессорами Xeon и сотнями гигабайт оперативной памяти
  • Волоконно-оптические сети

Служить миру за пределами

Чтобы использовать инфраструктуру Интернета для обслуживания всего мира, вам потребуется:

Без них все, что у вас есть, - это потенциальный веб-сервер.


._. Я считаю, что распи - это минимум, а чертовски неприятно. Также стоит помнить, что многие вещи используют веб-страницу в качестве пользовательского интерфейса. Ваш маршрутизатор имеет, но не веб-сервер, например.
Подмастерье Компьютерщик

9
Не согласен с этими комментариями - роутер является веб-сервером (как и другие вещи). По логике комментариев, не существует такой вещи, как веб-сервер, потому что любая такая система имеет другие функции.
Давидго

5
Высокая нагрузка на ЦП и другие ресурсы гораздо больше связана с веб-приложениями и динамическими языками генерации HTML - например, с PHP, распространенным, но (особенно, если он настроен так, как обычно) веселым неэффективным таким языком - чем с веб-обслуживанием. 33 МГц 80486 с 16 МБ ОЗУ можно было бы обрабатывать при большой нагрузке статических страниц, если кто-то беспокоился.
rackandboneman

@ rackandboneman Очень хорошо. Я уточню значение «если ваша деятельность станет больше», чтобы решить вашу проблему.

@rackandboneman Не просто «можно» справиться, но «часто было».
JWG

8

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

Программа, которая может прослушивать порт 80 на сетевом адаптере. Это работает на ОС у вас есть. И может обрабатывать запросы в соответствии с определениями HTTP.

Программа, которая прослушивает любой порт, доступна с любого компьютера в той же сети. В идеале, это должен быть известный стандартный порт (80 и 8080 для серверов HTML; выберите 1024 для пользовательских приложений). Даже обычная практика - запускать программу, достижимую по сети, на том же компьютере, на котором вы ее разрабатываете.

Если вы можете связаться с ним через локальный хост, вы можете связаться с ним из любой точки той же сети, и из любого другого места есть путь к этой машине и ее сетевому адаптеру.

Предостережение. Многие универсальные среды разработки в установках по умолчанию ограничивают доступ к Localhost. В конце концов, вы не хотите, чтобы ваши инструменты администратора были доступны из Интернета.

Оборудование:

Аппаратное обеспечение начинается где-то с «того 10-летнего компьютера, который работает под управлением XP или Linux» и заканчивается где-то около «128 ядер, с 2 ТБ оперативной памяти и 256 ТБ твердотельных накопителей в рейде», причем БД работает на другом сервере. , Веб-приложения имеют тенденцию быть приятно распараллеливаемыми, поэтому вы можете / должны увеличить их еще с кластерами этих серверов. И геокаст. И распределенный дизайн. И много другого. Все зависит от того, о каком масштабе мы говорим.

Самым простым веб-сервером, который вы, вероятно, встретите, является маршрутизатор, который вы используете, кстати. Все они запускают веб-сервер для настройки, размещенный на Linux (который выполняет всю работу по DHCP и NAT).

Сеть:

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

  • У вас всегда есть возможность купить фиксированный IP-адрес у вашего интернет-провайдера, даже в качестве частного лица. Как это указывает, это, вероятно, будет стоить дополнительно. Запись в 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 лет назад во встроенном пространстве.
Дэн Нили

3

Если у вас под рукой есть компьютер любого типа (ПК, ноутбук, смартфон, raspberryPI ...) с установленным Python, просто введите:

$ python -m SimpleHTTPServer

Или, если у вас установлен Node.js:

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

Поздравляем, у вас есть веб-сервер!

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.