43

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

5 ответов5

97

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

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

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

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

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

25

Это совсем не сложно. Это просто зависит от вашего определения «веб-сервер».

Вполне возможно запустить «веб-сервер» на таких простых устройствах, как микроконтроллер.

Давайте рассмотрим, что нужно будет сделать минимальному веб-серверу. Это должно было бы вывести некоторый текст - не обязательно даже в HTML клиенту. Необходимо знать, что запрос является запросом, и отвечать соответствующим образом. Вам даже не понадобится подключение к сети, если ваш "клиент" будет локальным. Это был бы совершенно бессмысленный веб-сервер.

Это был бы веб-сервер, эквивалентный одному из них.

Добавление сетевого подключения для клиента (Ethernet - это хорошо, но нет технической причины, по которой вы не можете подключиться к веб-серверу, работающему по Wi-Fi), и возможность маршрутизации от клиента была бы лучше.

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

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

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

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

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

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

11

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

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

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

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

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

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

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

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

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

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

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

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

8

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

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

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

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

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

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

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

Самым простым веб-сервером, который вы, вероятно, встретите, является маршрутизатор, который вы используете, кстати. Все они запускают веб-сервер для настройки, размещенный на 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-соединение к сети, имеющей серверы. Большинство маршрутизаторов поддерживают его.
3

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

$ python -m SimpleHTTPServer

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .