Оглавление
В качестве операционной системы для VPS мы решили использовать Ubuntu Server v20.04 или v22.04 – простая, стабильная, хорошо настраиваемая система. Следующая задача – выбор веб-сервера для VPS актуального не только на текущий 2024 год, но и в последующие годы
Что такое веб-сервер
Веб-сервер это набор (стек) программного обеспечения для хранения контента – текстовой и мультимедийной информации.
Обеспечивает быструю, надежную, безопасную доставку контента по протоколам HTTP(s) от СМS, статических HTML сайтов, проектов написанных PHP, JS, Java [ 1 ], Go, Python, других языках программирования и различных framework этих языков в браузер пользователя, приложение на компьютере, мобильном устройстве.
Функции веб сервера могут быть гораздо шире, чем просто хранение, подготовка и доставка контента [ 2 ]
Все веб-серверы в той, или иной степени справляются со своей задачей. Выбор веб-сервера для VPS на самом деле простая задача. Нужно только понимать, какие технологии использует и какой контент предоставляет ваш сайт – статический, динамический, смешанный и представлять потребности сайтов в ресурсах [ 3 ].
Что необходимо знать для правильного выбора веб-сервера
Помимо “железа”, пусть и “виртуального” и операционной системы для нормального функционирования веб-сервера на VPS необходима поддержка ряда языков программирования и технологий:
- Панель управления web-сервером и сайтами [ 4 ]
- PHP, JS, Python…
- База данных SQL (MS SQL, MariaDB, PostgreSQL…)
- Redis + LSMCD (Mencache(d))
- Mail, DNS, SFTP – вспомогательные технологии
Все, что нужно для нормальной работы веб-сервера устанавливается в ручном, реже в автоматическом режиме вместе с веб сервером [ 5 ]. Если вы устанавливаете панель управления VPS и веб сервером, то почти все необходимые компоненты будут установлены автоматически исходя из ваших предпочтений.
Как выбрать веб-сервер
На управляемом хостинге вопрос выбора не стоит. Там вы вынуждены использовать то, что установил поставщик услуг. Иногда есть возможность выбора из двух зол – Apache или Nginx.
Реже можно выбрать их связку или PHP-FPM + Nginx. Очень редко можно в качестве веб – сервера выбрать Open Lite Speed или его платную версию – LiteSpeed Server. Но это исключение из правил.
Другие веб-сервера для linux на shared хостингах никогда не предлагаются хотя и популярны в узких кругах профессионалов.
На Linux VPS можно установить и настроить любой веб-сервер, необходимое программное обеспечение исходя из своих потребностей, опыта и знаний.
Веб сервера работающие на Linux
Веб-серверов работающих на VPS под управлением Linux больше двух десятков, некоторые из них даже не попали в википедию. Мы рассмотрим только на универсальные веб-серверы работающие под управлением Ubuntu Server v.18.04 – 22.04. Все эти сервера работают и на других операционных системах c ядром linux, BSD…
Веб-сервер Apache
- мощный, гибкий, совместимый с HTTP/1.1 веб-сервер
- реализует стандартные протоколы, включая HTTP/1.1 (RFC2616)
- обладает широкими возможностями конфигурирования и расширения с помощью модулей сторонних производителей
- может быть настроен путем написания ‘модулей’ с использованием API модулей Apache
- предоставляет полный исходный код и поставляется с неограниченной лицензией
- работает под управлением Windows Server, Netware 5.x и выше, OS/2 и большинства версий Unix, Linux, OSX, а также других операционных систем
- активно развивается
Ядро Apache включает в себя основные функциональные возможности, такие как обработка конфигурационных файлов, протокол HTTP и система загрузки модулей.
Веб-сервер Apache может функционировать в чистом виде, без использования модулей. Однако, функциональность будет крайне ограничена. Ядро Apache полностью написано на языке программирования C.
Система конфигурации Apache основана на текстовых конфигурационных файлах. Имеет три условных уровня конфигурации:
- Конфигурация сервера (httpd.conf)
- Конфигурация виртуального хоста (httpd.conf c версии 2.2, extra/httpd-vhosts.conf)
- Конфигурация уровня директории (.htaccess)
Apache HTTP Server поддерживает модульность. Существует более 500 модулей, выполняющих различные функции. Часть из них разрабатывается командой Apache Software Foundation, но основное количество написано и поддерживается независимыми open-source разработчиками.
Модули могут быть как включены в состав сервера в момент компиляции, так и загружены динамически, через директивы конфигурационного файла.
Веб-сервер Apache очень старый и надежный, умеет делать всё! Он универсален. Он не требует тщательной настройки и отладки под конфигурацию сервера или проекта.
На нём почти всё просто работает почти всегда. Сервер Apache посредственный универсал — делает все, но медленно. Он хорош там, где нет нагрузки и нужна простота. Например для разработки сайтов, для тестов.
Apache не тянет нагрузку. Там где появляется нагрузка — она будет расти в геометрической прогрессии. Даже на очень мощных серверах сайты могут «тормозить».
Если в связку с Apache добавить Nginx для отдачи статического контента то он выдержит несколько сотен одновременных подключений. Но при нагрузке в десятки тысяч посещений apache начинает “захлёбываться”. Это могут подтвердить и многочисленные бенчмарки.
Системные требования веб-сервера Apache
Это самый “мутный” вопрос в истории и жизни Apache. Ни разработчики, ни документация не дает внятного ответа. С уверенностью можно утверждать, что на Ubuntu Server с 512Mb ОЗУ, 1 CPU, 20 Gb HDD запуск Apache вполне возможен.
Веб- сервер Nginx
Nginx – веб-сервер и почтовый прокси-сервер, работающий на Unix-подобных операционных системах. Это простой, быстрый и надёжный сервер, не перегруженный функциями. Nginx как правило применяют прежде всего для статических веб-сайтов и как прокси-сервер перед динамическими сайтами, что является повсеместной идиотской практикой [ 6 ].
Ядро nginx отвечает за базовый функционал web-сервера и функционал обратного проксирования web и электронной почты, что позволяет предоставлять доступ к реализованным в ядре сетевым протоколам, создавать необходимые среды исполнения и обеспечивать “бесшовное” взаимодействие между модулями. Тем не менее, большинство функций, специфичных для протоклов и приложений, реализуется модулями, а не ядром.
Внутри себя nginx обрабатывает соединения с помощью каналов (pipeline), цепочек команд (chain) или модулей. Другими словами, для каждой операции находится модуль, который и выполняет соответствующую работу (например, сжатие, преобразование данных, выполнение серверных сценариев, взаимодействие с вышестоящими серверами приложений с применением FastCGI или uwsgi протоколов, взаимодействие с memcached).
Веб-сервер Nginx более прогрессивное решение, но тоже не лишен недостатков. Главные из них — сложность отдачи динамического контента [ 6 ], сложность настройки и отладки. Не каждый webmaster и даже системный администратор способен его правильно настроить.
Системные требования веб-сервера Nginx
Официальный сайт не освещает этот вопрос. Но можно сказать, что Nginx запустится и будет работать на Ubuntu Server с 512Mb ОЗУ, 1 CPU, 20 Gb HDD как и Apache.
Веб-сервер Lighttpd
Веб-сервер Lighttpd претендент в фавориты по скорости отдачи контента. lighttpd (произносится /lighty/) — это безопасный, быстрый, совместимый и очень гибкий веб-сервер, оптимизированный для высокопроизводительных сред.
lighttpd эффективно использует память и процессор и оптимально использует ресурсы, по сравнению с Apache и Nginx.
Расширенный стек функций (FastCGI, CGI, Auth, Output-Compression, URL-Rewriting и многое другое) делает lighttpd идеальным веб-сервером для всех систем, малых и больших. lighttpd выпущен лицензией BSD с открытым исходным кодом.
Минусы веб-сервера Lighttpd для неопытных веб-мастеров и системных администраторов:
- не поддерживает HTTP/3
- Только ручная установка и настройка
- Установка PHP, SQL, Mail, SFTP, SSL только в ручном режиме
- Создание и настройка сайтов и хостов с помощью конфигурационных файлов. Панель управления отсутствует
Для опытных администраторов все минусы кроме первого, сплошной плюс.
Веб-сервер Open LiteSpeed
Open LiteSpeed / LiteSpeed сервер имеет бесплатную и платную версию. Бесплатная версия не имеет ограничений по скорости и функционалу. В Open LiteSpeed присутствует поддержка всех новейших технологий: HTTP3, TCP BBR congestion control, Bubblewrap — чем не могут похвастаться другие web серверы.
Главное достоинство семейства Litespeed Server это LiteSpeed PHP – оптимизированная сборка PHP для работы с продуктами LiteSpeed через LiteSpeed SAPI. LSPHP запускается как самостоятельный процесс и имеет отдельный исполняемый файл, который используется как обычный исполняемый файл командной строки для запуска скриптов PHP.
LSAPI – это максимально оптимизированный API, позволяющий LiteSpeed взаимодействовать с веб-движками и других производителей. Он имеет тот же протокол, что и FCGI, но гораздо более эффективный.
Цикл разработки и распространения сервера оригинален. Сначала разработчики коммерческой версии внедряют новое, наступают на все грабли, «вылизывают» код, через некоторое время уже отлаженные функции появляется в Open LiteSpeed.
СРАВНЕНИЕ OPEN LITESPEED И LITESPEED SERVER
Open Source и проприетарная версия Litesped имеют панель управления веб-сервером Webadmin. Но интерфейс и функционал их очень различается.
Версия для коммерческого сервера предельно упрощена. Позволяет быстро настроить веб сервер для массового хостинга сайтов.
Версия Webadmin для бесплатного OLS намного более функциональна, позволяет тонкую настройку веб-сервера и виртуальных хостов. Доступны настройки безопасности, быстродействия не только на уровне сервера, но и на уровне listeners и виртуальных хостов.
Open LiteSpeed
- Мощный механизм кэширования
- Совместимость с Apache на уровне mod_rewrite
- Неограниченные worker
- Открытый исходный код
- Бесплатная поддержка сообщества
LiteSpeed Server
- Еще более продвинутый движок кэша
- Полная совместимость с Apache
- Технология ESI (Edge Side Includes) [ 6 ]
- Количество worker и ресурсов ограничено лицензией (в наличии «вечная» бесплатная)
- Проприетарное программное обеспечение
- Платная коммерческая поддержка
Все версии LiteSpeed поддерживают:
- Панель управления веб-сервером Webadmin + панель управления VPS и сайтами, например CeberPanel, Cpanel, DirectAdmin
- V1 HTTP/3 Library LSQUIC
- Защита от DDos
- Mod_security
- Bubblewrap
- Websocket – поддерживаются безопасные соединения wss://
Архитектура сервера событийно ориентированная, поддерживает мультиплексирование соединений при помощи epoll (Linux), kqueue (FreeBSD, macOS) и /dev/poll (Solaris).
Внешние приложения и дополнения запускаются как отдельные процессы, что позволяет разгрузить основной серверный процесс и увеличить эффективность обработки одновременных соединений.
Обработка CGI-скриптов производится отдельным фоновым процессом. Поддерживает HTTP/2/3. Есть возможность быстрой настройки и перестройки виртуальных хостов при помощи шаблонов
Реализованы различные функции, позволяющие создавать безопасные среды: suEXEC (выполнение скриптов с правами текущего пользователя), chroot, ограничение трафика и интенсивности запросов, правила на основе содержимого Referer, механизмы Accept-filter и sendfile.
Поддерживается два вида виртуального хостинга: IP-based и Name-based. Первый вариант реализуется за счет отдельных Listener, и такой виртуальный хост имеет свой собственный IP-адрес или порт.
Binding, позволяет привязать отдельный Listener к lshttpd, который, в свою очередь, будет фактически привязан к своему CPU.
LSAPI для suEXEC PHP предлагает три варианта использования:
- Daemon (скорость, кеширование, эффективное использование ресурсов)
- Worker (для узлов с ограниченными ресурсами)
- ProcessGroup (скорость Daemon и настройки Worker).
Плагины кэширования доступны для:
- WordPress
- Magento
- Joomla
- Prestashop
- OpenCart
- Drupal
- XenForo
- Laravel
Для других CMS и “самописных” сайтов кэширование можно настроить на уровне сервера или виртуальных хостов, а так же в .htaccess.
Системные требования веб-сервера Open LiteSpeed
CPU
- Intel: 80486 и выше
- PowerPC: PowerPC G4
- ARM CPU
Memory
- от 32MB
Disk
- Установка: 200MB
- Работа: от 300MB
Как выбрать веб-сервер для VPS
Веб-сервер для VPS должен соответствовать ресурсам VPS, быть производительным и надежным, легко настраиваться и легко переносить всплески посещаемости или постоянную высокую нагрузку. Лучший веб-сервер для VPS это Open LiteSpeed или LiteSpeed Server.
Быстрый, надежный и функциональный. Кроме роли веб-сервера, он может выступать как web-proxy, балансировщик нагрузки, сервер приложений поддерживающий различные языки программирования и фреймворки.
В некоторых случаях, например, если ваш проект целиком написан на Java, можно попробовать в качестве веб-сервера Apache Tomcat.
Следующий шаг – выбор панели управления VPS и сайтами. Open LiteSpeed имеет свою панель управления Webadmin.
Webadmin позволяет полностью настроить сервер, listeners, виртуальные хосты, роли сервера и внешние приложения написанные на различных языках программирования.
Но кроме управления веб-сервером требуется инструмент администрирования пользователей, сайтов, баз данных, почты, SSL, DNS, SFTP и.т.п. Для этого нужна отдельная панель управления [ 4 ].
Примечания
[ 1 ] JS, Java на самом деле разные языки программирования. В самом простом варианте для понимания: JavaScript-фронтенд и Java-бэкенд.
[ 2 ] Веб сервер может выступать как генератор контента например, с помощью Servlet Engine, сервер приложений, балансировщик нагрузки и.т.п.
[ 3 ] На самом деле, мультимедийные данные – видео, аудио и.тп. файлы с точки зрения сервера статический контент.
Классический примеры статики — это картинки, видео, текстовые файлы, HTML-файлы и другие подобные данные. Все они изначально были кем-то созданы, размещены в интернете и уже не могут измениться.
Примеры использования статического контента:
- Ролики на YouTube.
- Фото товаров в интернет-магазинах.
- Статьи на новостных порталах.
- Страницы с описанием услуг, которые предлагает какая-нибудь компания.
- Статья, которую вы сейчас читаете, — это тоже пример статического контента.
Динамический контент – это постоянно меняющаяся информация. Данные, которые отображаются у пользователя на экране, будут меняться в зависимости от его поведения. При этом у каждого пользователя контент на экране будет индивидуально подготовленный для него, не такой, как у другого человека.
Динамический контент не хранится в готовом виде, он формируется в момент запроса и зависит от его параметров.
Классические примеры динамического контента — это веб-страницы, генерируемые кодом на PHP, Python или JS. Текст переписки в чатах — это тоже динамика. Пользователи обмениваются сообщениями, которые генерируется в реальном времени.
Примеры использования динамического контента:
- Контент в социальных сетях в большинстве своём динамический. Ваша лента во «ВКонтакте» будет совсем не такой, как лента вашего друга.
- Рекламные баннеры на сайтах. Обычно каждый пользователь видит на сайтах или в соцсетях индивидуальные рекламные предложения, которые основаны на его поведении в интернете.
- Подборки товаров, рекомендации в интернет-магазинах. Если зайти на главную страницу одного магазина со своего аккаунта и в режиме инкогнито, подборка рекомендаций будет отличаться.
[ 4 ] Опытным системным администраторам панели управления не нужны. Но для новичков и хостеров они необходимы, так как позволяют упростить и автоматизировать администрирование VPS сервера и сайтов.
[ 5 ] При установке панели управления VPS, например CyberPanel, или стеков LEMP, LAMP и подобных будет установлен весь набор необходимого ПО для функционирования веб-сервера: PHP, сервер баз данных, sftp сервер и прочее.
[ 6 ] Чаще всего динамический контент отображается на экране пользователя вместе со статическим. Возьмём, например, те же подборки товаров в онлайн-магазинах: сама подборка формируется динамически, но фото товаров, которые видит пользователь, — это статика.
Динамический контент постоянно меняется, его доставка пользователям организована сложнее.
- Браузер отправляет запрос на сервер, чтобы отобразить нужный контент.
- Сервер посылает запросы к базам данных, хранилищам и, возможно, каким-то сторонним сервисам, чтобы собрать уникальный ответ.
- Сформированная информация отправляется пользователю.
Из-за своей специфики динамический контент практически невозможно кешировать. Какую-то часть данных можно сохранить в кеше на короткое время, и они не потеряют свою актуальность. Но в большинстве случаев браузеру нужно будет каждый раз отправлять запросы непосредственно к источнику.
Веб сервер Nginx в силу своей специфики безнадежно проигрывает LiteSpeed Server с технологией ESI (Edge Side Includes).
ESI – это язык разметки, который отмечает части вашей динамической страницы как отдельные фрагменты, которые затем собираются вместе, чтобы получить всю страницу. Проще говоря, ESI позволяет «пробивать дыры» на уже кэшированной странице, а затем заполнять эти “дыры” динамическим контентом.
С помощью ESI выделенные фрагменты страницы обрабатываются иначе, чем остальная часть страницы. Они могут иметь разные TTL (время жизни в кэше) и обновляться по необходимости, не затрагивая целиком кэшированную страницу.
Кроме того, LSPHP / LSAPI минимум в пять раз быстрее “классического” PHP.