Веб-сервер - это компьютер, на котором хранятся файлы сайтов (HTML-документы, CSS-стили, JavaScript-файлы, различный контент), и который доставляет их на веб-браузер на устройстве конечного пользователя. Также под веб-сервером понимается ПО, с помощью которого контролируется доступ веб-пользователей к размещенным на сервере файлам. Такое ПО называется HTTP-сервером и работает с URL-адресами и HTTP-протоколами.

Что такое веб-сервер

Веб-серверы для публикации сайтов делятся на статические и динамические. Статические веб-серверы (стоки) - это «железо» с установленным на нем ПО для HTTP, которое направляет размещенные файлы в браузер в неизменном виде.

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

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

Для чего нужен веб-сервер

Основная задача веб-сервера - прием HTTP-запросов, их обработка и выдача HTTP-ответов на браузерах Google Chrome, Яндекс Браузер, Firefox, Internet Explorer, которые установлены в операционных системах пользователей.

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

Типы веб-серверов

На сегодняшний день среди веб-серверов выделяют несколько ведущих систем:

  • Apache HTTP Server - кроссплатформенный веб-сервер (ПО) с открытым исходным кодом, который может быть установлен на любую ОС, включая Linux, Unix, FreeBSD, Mac OS X. Для поддержки JSP и J2EE в серверах Apache предусмотрены модули tomcat;
  • Microsoft IIS Windows Server - информационная интернет-служба, поставляемая по умолчанию в комплекте с ОС Windows. Этот сервер легко администрировать, однако он не имеет кроссплатформенности и открытого исходного кода;
  • Lighttpd - популярный веб-сервер для ОС FREEBSD, изначально разработанный под данную ОС, также может быть установлен на Windows, Mac OS X, Linux, Unix. Отличается безопасностью, гибкостью в настройке, кроссплатформенный и бесплатный;
  • Sun Java System - веб-сервер от Sun Microsystems, который подходит для средних и крупных веб-сайтов. Этот сервер бесплатный, но не обладает открытым исходным кодом. Однако он подходит для платформ Windows, Linux и Unix. Веб-сервер Sun Java System поддерживает различные языки, скрипты и технологии, необходимые для Web 2.0, такие как JSP, Java Servlets, PHP, Perl, Python, Ruby on Rails, ASP и Coldfusion
  • Nginx - веб-сервер, известный своей высокой производительностью, стабильностью, большим набором различных функций и небольшой требовательностью к используемым ресурсам. Nginx  - это бесплатное решение с открытым исходным кодом. Широкий арсенал функций позволяет Nginx работать в качестве: обратного прокси-сервера; балансировщика нагрузки; HTTP-кеша; интерфейсного прокси;
  • X5 – сервер от компании IMatrix Corporation, сочетающий функции веб- и FTP-сервера. Обладает высокой скоростью, отличается компактностью и гибкостью, поддерживает различные популярные протоколы.

Рейтинг-2021 для веб-серверов

Наибольшее количество пользователей по всему миру в 2021 году имеют веб-серверы:

  • Apache - 40,86%;
  • Nginx - 27,66%;
  • IIS - 11,01;
  • LiteSpeed - 2,4%;
  • Apache Traffic Server - 0,53%;
  • OpenGSE - 0,44%;
  • Phusion Passenger - 0,36%;
  • Apache Tomcat - 0,16%.

Как настроить веб-сервер

В случаях, когда возникает задача настроить веб-сервер, администратором  выбирается одна достаточно производительная виртуальная или физическая машина, которая способна справиться с ожидаемой нагрузкой. На этой машине устанавливается стек LAMP, включающий в себя Apache, PHP, MySQL, а также, при необходимости, memcached, nginx и реверс-прокси, который одновременно выполняет функции сетевого экрана и балансировщика нагрузки в случае введения в строй новых инстанций Apache или MySQL. Для максимальной эффективности и безопасности все компоненты стека лучше будет распределить по разным виртуальным машинам.

Создание такого стека можно рассмотреть на примере системы управления ВМ libvirt в Linux/Ubuntu, которая используется во многих высокоуровневых облачных платформах. Для этого формируется инфраструктура, с помощью которой сможем быстро и легко подготовить ферму виртуальных серверов требуемой конфигурации. Данный процесс включает три этапа:

  • установка виртуального сетевого моста, который будет использоваться для коммуникации ВМ друг с другом и доступа реверс-прокси во внешнюю среду;
  • установка и настройка libvirt;
  • подготовка набора шаблонов ВМ.

Настройка сетевого моста происходит следующим образом: устанавливаются инструменты управления мостом, выбирается основной сетевой интерфейс и редактируются настройки. В качестве IP-адреса и маски подсети здесь следует использовать физические адреса. Предполагается, что сервер находится в локальной сети, а доступ во внешнюю среду организован с помощью шлюза. После этого проводятся подъем и проверка работоспособности бриджа, установка и отладка libvirt и создание виртуальной машины под шаблон ВМ.

Готовый шаблон ВМ используется для создания всех необходимых серверов из связки LAMP. Вначале проводятся настройки Apache/PHP. Чтобы создать новую ВМ на базе уже существующей, используется команда virt-clone: sudo virt-clone -o web_devel -n database_devel -f /path/to/database_devel.img \--connect=qemu:///system

где:

  • o: оригинальная виртуальная машина;
  • n: имя новой виртуальной машины;
  • f: путь к файлу, локальному тому или разделу для использования новой виртуальной машиной;
  • connect: определяет к какому супервизору подключаться.

Таким образом создается новая ВМ, аналогичная уже существующей. Теперь необходимо запустить эту машину, зайти на нее с помощью все того же virt-viewer, а дальше - установить и запустить на ней связку Apache/PHP и остальные серверы. Чтобы проверить, что машина действительно запустилась, используется команду virsh: virsh -c qemu:///system start web_devel

Вторую команду следует выполнять опять же с удаленной машины, имеющей графический интерфейс. В первую очередь потребуется изменить ее IP-адрес, который достался в наследство от шаблонной ВМ. Затем - установить и настроить MySQL, добавив в в файл необходимые строки конфигурации и перезапустив сервер. После этого вводятся пользователи и создается база данных. На завершающем этапе iptables конфигурируется так, чтобы он пропускал только пакеты для MySQL. Чтобы настройки вступили в силу после перезагрузки, эти строки следует добавить в /etc/rc.local (без sudo).

Теперь следует создать и настроить сервер memcached. Для этого, как и в случае с сервером MySQL, требуется создать клон заранее подготовленного шаблона, запустить виртуальный сервер и подключиться к нему, добавить правило iptables, закрывающее все порты, кроме порта memcached и установить аналогичные строки в /etc/rc.local.

Установка и настройка Apache/PHP проводится на одной виртуальной машине. Это связано с особенностями архитектуры PHP, выполненного в виде Apache-модуля. Процесс установки Apache/PHP будет выглядеть так:

  • создание и запуск клона;
  • правка сетевых конфигураций и постановка необходимых модулей;
  • размещение сайта в каталоге /var/www/html и перезапуск Apache;
  • добавление правила iptables для пропуска трафика на 80-й порт.

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

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

Подбираем оборудование

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

Чаще всего аппаратная платформа веб-серверов представляет собой компактные одноюнитовые решения с поддержкой одного-двух процессоров. К наиболее популярным из них относятся:

  • HP ProLiant DL360 Gen9 - сервер высокой плотности с одним или двумя процессорами (на выбор). Использование флагманских твердотельных накопителей NVMe PCIe в форм-факторе 2,5˝ объемом до 2 Тбайт позволяет снизить время задержки и повысить эффективность работы с данными.
  • HPE ProLiant DL360 Gen10. Высокопроизводительный двухпроцессорный сервер с возможностью установки процессоров Intel Xeon Scalable серий 3100, 4100, 5100, 6100 и 8100. Оснащается оперативной памятью DDR4 частотой 2666. Позволяет установить 10 SFF жестких дисков, или SSD-дисков, или NVMe.;
  • Dell R630 - двухпроцессорный стоечный сервер с большой плотностью установки. Поддерживает до 24 флэш-накопителей форм-фактора 1,8ʺ или до 10 дисков форм-фактора 2,5ʺ.

Компания ServerGate предлагает всем, кто ищет веб-сервер для частного использования в корпоративных целях или размещения внешних сайтов, б/у оборудование от перечисленных вендоров. Мы поможем вам сэкономить, подобрав оптимальное по скорости доступа к данным и производительности решение.

Наши рекомендации