У меня есть вопрос об использовании компьютера в качестве веб-сервера. Почему определенный компьютер может быть веб-сервером? Какие функции позволяют ему быть веб-сервером? Есть ли случай, когда компьютер не может выступать в качестве веб-сервера?
У меня есть вопрос об использовании компьютера в качестве веб-сервера. Почему определенный компьютер может быть веб-сервером? Какие функции позволяют ему быть веб-сервером? Есть ли случай, когда компьютер не может выступать в качестве веб-сервера?
Ответы:
Практически любой компьютер может использоваться в качестве [веб-сервера] при условии, что он может подключаться к сети и может запускать программное обеспечение веб-сервера. Поскольку веб-сервер может быть довольно простым, и существуют бесплатные веб-серверы с открытым исходным кодом, на практике любое устройство может выступать в качестве веб-сервера.
Большая проблема - сетевая сторона. Чтобы система действовала как сервер, другие машины должны иметь доступ к ней. Если это только для использования в локальной сети, нет никаких проблем; однако, если это для использования из более широкого Интернета, то данные должны быть направлены на него. Это требует либо статического IP-адреса, связанного с сервером (или порта, пересылаемого через маршрутизатор), либо внешней службы, которая может сопоставить доменное имя / поддомен с изменяющимся динамическим IP-адресом.
(FWIW, вы можете купить компьютеры за 10 долларов, которые могут выступать в качестве основного веб-сервера.)
Конечно, в то время как любое устройство может выступать в качестве веб-сервера, функциональность веб-сайтов может сильно различаться, и дешевое устройство (или медленное соединение) может не справиться с требованиями, в зависимости от того, что представляет собой конкретный веб-сайт.
Я отмечаю, что все вышеизложенное говорит о веб-серверах - но то же самое можно сказать почти для любого типа сервера.
Это совсем не сложно. Это просто зависит от вашего определения «веб-сервер».
Вполне возможно запустить «веб-сервер» на таких простых устройствах, как микроконтроллер.
Давайте рассмотрим, что должен был бы сделать минимальный веб-сервер. Это должно было бы вывести некоторый текст - не обязательно даже в HTML клиенту. Необходимо знать, что запрос является запросом, и отвечать соответствующим образом. Вам даже не понадобится подключение к сети, если ваш «клиент» будет локальным. Это был бы совершенно бессмысленный веб-сервер.
Это был бы веб-сервер, эквивалентный одному из них .
Добавление сетевого подключения для клиента (Ethernet - это хорошо, но нет технической причины, по которой вы не можете подключиться к веб-серверу, работающему по Wi-Fi), и возможность маршрутизации от клиента была бы лучше.
ESP8266 за 5 долларов - дешевый, минимальный микроконтроллер с Wi-Fi может справиться с большей частью этого, и, возможно, даже с базовым динамическим контентом
Я использую что-то подобное для быстрого обмена файлами с помощью Python. Все еще можно написать что-то подобное на микроконтроллере или даже запустить его на телефоне.
Статическое содержание скучно. Добавьте динамические языки, и вам нужно начать думать о более тяжелых системах веса. Вещи, которые работают под Linux или Windows, хороши.
На этом этапе вы говорите о потребительских маршрутизаторах, небольших приложениях, использующих веб-страницы в интерфейсе пользователя, и все такое.
Веб-сервер не является даже сложной проблемой и может быть написан на пяти строках bash и работать в Linux. Теперь Doom ... Но любая система, которая может запустить Doom, может запустить веб-сервер.
Хорошая настройка веб - сервер , способный обрабатывать заданную нагрузку несколько сложнее.
Буквально любой компьютер может стать веб-сервером, если он имеет следующее:
Но будет ли этого достаточно? Теперь это сложный вопрос.
Чтобы компьютер стал веб-сервером, который предоставляет современные веб-страницы или веб-приложения всему сообществу (например, школе, компании, музею):
Но это был минимум для небольших операций. Когда ваша работа становится больше (то есть вы получаете более интенсивный трафик и обслуживаете сложные веб-приложения вместо статических страниц), ваши потребности растут. В конечном итоге вам понадобится:
Чтобы использовать инфраструктуру Интернета для обслуживания всего мира, вам потребуется:
Без них все, что у вас есть, - это потенциальный веб-сервер.
Перспектива программирования / программного обеспечения:
Программа, которая может прослушивать порт 80 на сетевом адаптере. Это работает на ОС у вас есть. И может обрабатывать запросы в соответствии с определениями HTTP.
Программа, которая прослушивает любой порт, доступна с любого компьютера в той же сети. В идеале, это должен быть известный стандартный порт (80 и 8080 для серверов HTML; выберите 1024 для пользовательских приложений). Даже обычная практика - запускать программу, достижимую по сети, на том же компьютере, на котором вы ее разрабатываете.
Если вы можете связаться с ним через локальный хост, вы можете связаться с ним из любой точки той же сети, и из любого другого места есть путь к этой машине и ее сетевому адаптеру.
Предостережение. Многие универсальные среды разработки в установках по умолчанию ограничивают доступ к Localhost. В конце концов, вы не хотите, чтобы ваши инструменты администратора были доступны из Интернета.
Оборудование:
Аппаратное обеспечение начинается где-то с «того 10-летнего компьютера, который работает под управлением XP или Linux» и заканчивается где-то около «128 ядер, с 2 ТБ оперативной памяти и 256 ТБ твердотельных накопителей в рейде», причем БД работает на другом сервере. , Веб-приложения имеют тенденцию быть приятно распараллеливаемыми, поэтому вы можете / должны увеличить их еще с кластерами этих серверов. И геокаст. И распределенный дизайн. И много другого. Все зависит от того, о каком масштабе мы говорим.
Самым простым веб-сервером, который вы, вероятно, встретите, является маршрутизатор, который вы используете, кстати. Все они запускают веб-сервер для настройки, размещенный на Linux (который выполняет всю работу по DHCP и NAT).
Сеть:
Имея путь от других сетей - в том числе в любом месте в Интернете - теперь , что это совершенно другая история , а часть даже сложнее , чем программирование приложения. Между NAT вашего Маршрутизатора и NAT операторского уровня все это стало действительно сложным.