Оригинальная статья

Долгое время для управления мини сервером с сайтами я использовал Kloxo, потом KloxoMR для CentOS 7. Потом CentOS 7 устарел, а обновлений для Kloxo для более новых систем не появлялось.

Настало время переходить на более новые ОС, т. к. мне больше импонируют rpm based операционные системы хотелось бы найти Open Source контрольную панель управления сервером с возможностью расширения функционала именно для rpm based ОС.

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

И вот мне встретилась контрольная панель HestiaCP (https://hestiacp.com/).

hestiacp1

Возможности данной контрольной панели:

  • Создание и управление DNS-записями, пользователями, FTP ресурсами, базами данных, почтовыми ящиками
  • Поддержка SSL-сертификатов Let's Encrypt, а так же возможность установки других SSL сертификатов
  • Имеется файловый менеджер
  • В наличии планировщик заданий Cron
  • Поддержка быстрого способа установки популярных веб-приложений: WordPress, Drupal, Joomla, Opencart, Prestashop, Laravel и Symfony (забегу вперед, для rpm версии пока получилось адаптировать Laravel, Grav, Flarum, OpenCart)
  • Резервное копирование
  • Удобный и функциональный интерфейс
  • и т.д.

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

Оставалась одна проблема, HestiaCP корректно ставится и работает только под Ubuntu и Debian, но это не те системы, работать с которыми мне было бы комфортно.

Исследовав ветки исходных кодов контрольной панели на github было обнаружено, что имеется ветка с инсталлятором для AlmaLinux, что несколько воодушевило. Поэтому на использовании панели не был поставлен крест, я решил развернуть ее на rpm based системе, в качестве испытуемой выбрал МСВСфера 9 (https://msvsphere-os.ru/). Почему в качестве испытуемой была выбрана именно МСВСфера — потому, что пакетные базы ОС расположены в России, это rpm-based система и система данного класса хорошо мне знакома для организации на ней сервера.

Подготовка к адаптации

Исходные коды HestiaCP даже в master ветке содержат шаблоны для использования в RPM системах, так же был найден скрипт установки hst-install-rhel.sh. Но как показала проверка данного скрипта, он не делает корректную настройку и установку контрольной панели, к тому же скрипт контрольной панели устанавливает сервисы недоступные в России, например базы сигнатур clamav.

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

Поэтому было решено привести систему к рабочему состоянию.

Итак исходная позиция:

1) скрипт hst-install-rhel.sh 2) исходные коды контрольной панели с шаблонами и заготовками для rpm-base 3) минимальная установка МСВСфера 9

Адаптация к HestiaCP RPM Edition

Было решено: 1) произвести установку пошагово до ошибки, 2) произвести анализ ошибки, 3) исправить ошибку установочного скрипта и опять итерационно вернуться к пункту 1. Шаг за шагом удалось выявить проблемные места, некорректные команды установки и наконец установочный скрипт отработал. Первый этап пройден, система установлена, теперь нужно проверить рабочий функционал уже установленной системы.

Вот здесь опять пошли проблемы и ошибки, часть шаблонов оказалась не доработана, а часть скриптов не готовы к именам и названиям сервисов в RHEL based системах.

Хорошо, что систему во многом уже адаптировали для использования PHP из remi репозитория, что несколько облегчило адаптацию, но было решено еще добавить установку с альтернативными самосборными версиями PHP.

После ревизии проблемных скриптов, удалось оживить и привести в работоспособное состояние контрольную панель и для rpm системы. Осталось дело за малым, инсталляционный скрипт требует наличие: контрольной панели, специальный php для контрольной панели и nginx в виде пакетов. Поэтому была изучена система подготовки пакетов hestia, были собраны пакеты и выложены в отдельный репозиторий. Что было сделано дополнительно по мере адаптации контрольной панели

Для контрольной панели был русифицирован сайт документации: характеристики, установка, документация - https://hestiadocs.brepo.ru Добавлена установка баз сигнатур clamav с зеркала доступного в России, чтоб сервис вновь стал рабочим в контрольной панели.

Кроме PHP из remi репозитория, была добавлена возможность установки альтернативных сборок PHP. Т.е remi теперь не единственный поставщик PHP пакетов для HestiaCP RPM. При установке по умолчанию выбирается именно второй вариант. Установка из remi требует отдельной настройки установщика. Для альтернативных PHP из веб-интерфейса контрольной панели можно включить/отключить модули PHP, а не только из командной строки как оригинальной HestiaCP.

Был добавлен режим определения текущего IP сервера не за NAT. Этот режим включен по умолчанию, для того, чтоб панель можно было без дополнительных телодвижений поставить на сервере в локальной сети.

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

Добавлен PHP cli selector, cPanel подобная утилита, которая подменяет системный php, и которая при вызове анализирует какой пользователь вызывает php и запускает настроенную для пользователя версию PHP.

Так же был добавлен раздел — Доп. модули, в Настройках, где добавлены дополнительные интерфейсы по расширению функционала панели: установка mod_passenger и поддержка ruby приложений и управление расширениями PHP. Все вышеописанные доработки описаны в документации.

А теперь хотелось бы подсветить несколько подробнее.

Что такое PHP cli selector?

PHP cli селектор заменяет системный - /usr/bin/php ссылкой на утилиту, которая анализирует конфигурационный файл пользователя HestiaCP и запускает установленную для пользователя версию PHP.

Пример:

# readlink -f /usr/bin/php
/usr/bin/hestiacp-php-selector

По умолчанию php cli селектор отключен и системным PHP является стандартный бинарный файл PHP приносимый пакетами системы. Для включения PHP cli селектора необходимо перейти в "Server Options"->"Options"->"Web-server". Найти селектор "System PHP" и под селектором установить чекбокс "Use PHP cli selector".

php_cli_selector

После данной операции, для пользователя(в первую очередь в командной строке терминала и в кроне станет доступным системный PHP установленной ему версии). Т.е. не только его сайт будет работать с версией PHP 7.4, но и cron.

Проксирование запросов во внутренние сервисы

Данная опция стала доступна в настройках домена. Если выбрать в качестве шаблона srvproxy.

Srvproxy - это шаблон для конфигурации прокси для любого внутреннего сервиса, например gitea, который запускается и присоединяется к порту. При выборе данного шаблона, появляется дополнительное поле Установить порт для локального сервиса, в котором нужно указать порт внутреннего сервиса. В качестве шаблона Backend в данном случае можно выбрать no-php, т.к. в данном случае бэкэндом будет внутренний сервис.

proxy_domain

Это избавляет от необходимости для популярных сервисов делать файлы шаблонов в файлов системе сервера.

Дополнительные модули и mod_passenger

Что такое модули

Модули расширения панели позволяют расширять функционал панели.

Как управлять модулями

Для доступа к модулям расширения необходимо из-под пользователя admin перейти в Настройки сервера:

ext_modules_step1

Далее в строке выбора настроек выбрать Доп. модули:

ext_modules_step2

Далее откроется страница доступных модулей и их состояния.

Пример страницы с демонстрационными модулями приведен ниже:

ext_modules_step3

Данная страница содержит следующую информацию:

  • ID модуля - числовой идентификатор модуля
  • Имя модуля - символьный идентификатор модуля
  • Описание модуля - краткая информация о модуле
  • Состояние - включен(enabled) или выключен(disabled)
  • Зависимости - список модулей, которые должны быть включены для работы текущего модуля
  • Конфигурация - дополнительные настройки модуля (при наличии)
  • Если модуль выключен, его состояние отображается как disabled.

Для включения модуля необходимо нажать на кнопку «Play», для выключения модуля необходимо нажать на кнопку «Stop».

Список предустановленных модулей (будет пополняться):

  • puppet_installer - установить puppet, для большинства модулей требуется puppet для изменения конфигурации системы, поэтому требуется, чтоб этот модуль был включен, при включении он установит puppet в систему.
  • empty_module - пустой модуль, его включение или выключение не начто не влияет, является примером написания модулей
  • passenger_manager - модуль по установке и настройке passenger в систему.
  • php_brepo_modules - модуль по управлению расширениями Local PHP. Описание интерфейса

Альтернативные PHP

Альтернативный PHP - это PHP интерпретатор из репозитория, из которого ставится HestiaCP RPM Edition.

Адаптированная HestiaCP имеет возможность работать или с PHP из Remi репозитория или с PHP из т.н. локального репозитория - Local PHP.

Если требуется более расширенный функционал пакетов из Remi репозитория, то следует отказаться при установке панели от опции --uselocalphp yes и установить панель с опцией --uselocalphp no.

Local PHP более ограниченный в наборе расширений, но занимает меньше места на диске и приносит меньше RPM пакетов. Подходит для большинства сборок CMS таких как Wordpress, Drupal и т.д.

Есть еще одна особенность, для данного типа PHP разработан графический интерфейс в HestiaCP по управлению подключенными расширениями. Вот как выглядит данный интерфейс:

local_php_2

На рисунке выше представлена панель выбора настраиваемой версии PHP.

На следующем рисунке представлена панель подключаемых модулей для версии PHP.

local_php_3

Итог

Итак на текущий момент HestiaCP выглядит работоспособной. Установка проверялась на МСВСфера 9, AlmaLinux 9, Rocky Linux 9, CentOS Stream 9.

Результаты доработки хранятся в репозитории на github: https://github.com/bayrepo/hestiacp-rpm.

Спасибо за внимание.

Добавить комментарий

Предыдущая запись