Ограниченность ресурсов VDS приводит к тому, что, когда нагрузка резко возрастает, приходится менять хостера или тарифный план на более высокий либо пробовать выжать максимум из текущего сервера, оптимизировав установки и состав ПО. На слуху разные варианты: перейти с Apache на nginx, использовать связку nginx + Apache, установить кеширующий сервер Varnish. Но забывают о веб-сервере OpenLiteSpeed, который достоин внимания благодаря высокой производительности и низкому потреблению памяти.

 

Возможности OpenLiteSpeed

В середине 2013 года LiteSpeed Technologies, производитель проприетарного HTTP-сервера LiteSpeed, занимающего четвертое место по популярности (по статистике W3Techs), открыла код своего проекта под именем OpenLiteSpeed, сделав доступной бесплатно базовую функциональность. Со временем список функций расширился, а высокая производительность и низкое потребление памяти привлекли внимание пользователей. Особо хотелось бы отметить наличие веб-панели для настройки параметров и просмотра статистики. Многие пользователи с небольшим опытом администрирования для удобной настройки веб-сервера ставят хост-панели, нередко ограничивающие их в дальнейших возможностях ручной донастройки. Здесь же такой необходимости нет. Все уже идет в комплекте. Правда, есть и минус — отсутствие локализации.

В Сети можно найти большое количество тестов. При отдаче статики OpenLiteSpeed опережает по производительности Apache в несколько раз, а при выполнении PHP-скриптов выигрыш в скорости составляет до 50%. По сравнению с nginx OLS имеет аналогичные, если не лучшие показатели при выдаче статического контента. Здесь все зависит от конкретных настроек. По крайней мере, из коробки OLS обычно обходит стандартные установки nginx из дистрибутивных пакетов. Но OLS однозначно обыгрывает связку nginx + PHP-FPM. Специально разработанный для этого сервера PHP LSAPI (LiteSpeed Server Application Programming Interface) лучше масштабируется при более высоких нагрузках, чем PHP-FPM. По тестам разработчиков OLS обходит примерно на 20% FastCGI, на 50% — mod_php и на 75% связку nginx + PHP-FPM. Из коробки поддерживается запуск приложений на языках Python, Perl и Java.

Как и в nginx, в OLS архитектура событийно ориентированная, поддерживающая мультиплексирование соединений при помощи epoll (Linux), kqueue (FreeBSD, macOS) и /dev/poll (Solaris). Внешние приложения и дополнения запускаются как отдельные процессы, что позволяет разгрузить основной серверный процесс и увеличить эффективность обработки одновременных соединений. Обработка CGI-скриптов производится отдельным фоновым процессом. Поддерживает HTTP/2.

Реализованы различные функции, позволяющие создавать безопасные среды: suEXEC (выполнение скриптов с правами текущего пользователя), chroot, ограничение трафика и интенсивности запросов, правила на основе содержимого Referer, механизмы Accept-filter и sendfile. Есть и специфические установки. Например, LSAPI для suEXEC PHP предлагает три варианта использования: Daemon (скорость, кеширование, эффективное использование ресурсов), Worker (для узлов с ограниченными ресурсами) и ProcessGroup (скорость Daemon и настройки Worker). Есть возможность быстрой настройки и перестройки виртуальных хостов при помощи шаблонов.

Сервер поддерживает совместимые с mod_rewrite правила перезаписи запросов и SSI-вставки в стиле Apache, определение местоположения с GeoIP, сжатие контента (Gzip), возможность отдачи потокового медиаконтента (MP4 и F4V) и многое другое. В ранних версиях сервера по умолчанию использовались конфигурационные файлы в формате XML, но можно было переключаться на текстовый (скрипт /usr/local/lsws/conf/switch_config.sh). C версии 1.4 поддерживается только текстовый формат (как по мне, он более наглядный). При апгрейде все конфигурационные файлы автоматически преобразуются в текстовый формат; при необходимости даунгрейда на ранние версии сервера, для конвертации настроек в XML, разработчики приготовили скрипт /usr/local/lsws/backup/recover_xml.sh. Предусмотрена возможность применения новой конфигурации или обновления сервера без разрыва соединений (режим graceful).

Поддерживается два вида виртуального хостинга: IP-based и Name-based. Первый вариант реализуется за счет отдельных Listener, и такой виртуальный хост имеет свой собственный IP-адрес или порт. Доступна такая возможность, как Binding, позволяющая привязать отдельный Listener к lshttpd, который, в свою очередь, будет фактически привязан к своему CPU.

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

В коммерческой версии LSWS доступны: поддержка mod_security, возможность считывания конфигураций Apache, совместимость с панелями управления хостингом, поддержка mod_security, возможность использования .htaccess, кеширование контента на диске, поддержка chroot и некоторые другие функции. В общем, как видим, OLS здесь не сильно проигрывает nginx и не совсем подходит для организации хостинга. Зато отлично вписывается в небольшие и средние проекты и особенно удобен, когда на одном сервере нужно размещать большое количество своих сайтов. Также компания разрабатывает различные кеширующие плагины для некоторых CMS, совместимые с LSWS. Например, для WordPress.

Здесь бы хотелось сделать уточнение, чтобы не было путаницы. В OLS не поддерживаются файлы .htaccess, но вот сами правила rewrite можно перенести в настройки виртуального хоста в оригинальном виде. Также формат журнала изначально совместим с Apache, поэтому без дополнительных настроек будут работать все анализаторы логов, включая fail2ban. То есть с OLS меньше возни, чем при переходе с Apache на nginx. Это большой плюс.

 

Установка OpenLiteSpeed в Ubuntu

Проект предоставляет репозитории для CentOS 5/6/7, Debian 7/8 и Ubuntu 12/14/16. Остальные можно установить при помощи исходных текстов. На сайте есть инструкция, это в общем не очень запутанно. В Ubuntu процесс такой:

$ wget -O - http://rpms.litespeedtech.com/debian/enable_lst_debain_repo.sh | sudo bash
$ sudo apt install openlitespeed

В /usr/local/lsws будет создана структура каталогов с настройками, шаблонами и исполняемыми файлами. Проверяем:

$ /usr/local/lsws/bin/lshttpd -v
LiteSpeed/1.4.23 Open

Теперь PHP. В репозитории имеется несколько версий от PHP 5.4 до последней, 7-й. Смотрим список:

$ sudo apt search lsphp

Поставим для примера PHP 5.6. Для упрощения выберем все модули:

$ sudo apt install lsphp56-*

Проверяем, чтобы в /usr/local/lsws/fcgi-bin был файл или ссылка lsphp. Если нет, создаем вручную.

$ sudo ln -sf /usr/local/lsws/lsphp56/bin/lsphp /usr/local/lsws/fcgi-bin/lsphp5

Для управления стартом используется утилита lswsctrl. Все параметры можно узнать, введя

$ /usr/local/lsws/bin/lswsctrl help

Стартуем:

$ sudo /usr/local/lsws/bin/lswsctrl start

При установке из пакетов доступен init-скрипт, поэтому в обычной эксплуатации следует использовать его.

$ sudo service lsws start

По умолчанию сервер запускается с правами nobody:nogroup, веб-админка — lsadm/lsadm. В зависимости от установок сервера их, вероятно, потребуется изменить. Также следует проверить права доступа веб-сервера к каталогу временных файлов. По умолчанию это /tmp/lshttpd/swap, изменить его можно, переопределив переменную swappingDir в конфигурационном файле.

Продолжение статьи доступно только подписчикам

Вариант 1. Оформи подписку на «Хакер», чтобы читать все статьи на сайте

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

Вариант 2. Купи одну статью

Заинтересовала статья, но нет возможности оплатить подписку? Тогда этот вариант для тебя! Обрати внимание: этот способ покупки доступен только для статей, опубликованных более двух месяцев назад.


Комментарии

Подпишитесь на ][, чтобы участвовать в обсуждении

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

Check Also

LUKS container vs Border Patrol Agent. Как уберечь свои данные, пересекая границу

Не секрет, что если ты собрался посетить такие страны как США или Великобританию то, прежд…