PHP с поддержкой LiteSpeed API

Установка и настройка PHP с поддержкой LS API (LiteSpeed)

Примечание

Альфа-версия.

LiteSpeed — протокол обмена информацией, а также модель работы PHP-интерпретатора. Данная модель в чём-то схожа с работой PHP в режиме FastCGID и позволяет PHP работать в режиме сервиса, который порождает процессы-потомки для обработки запросов. Данный режим реализован для работы с сервером LiteSpeed — это коммерческая версия. Также существует версия с открытым исходным кодом — OpenLiteSpeed. Открытым также является и протокол LSSAPI. При сборке PHP можно собрать PHP-интерпретатор с поддержкой протокола LSSAPI и на выходе получить двоичный файл lsphp. Но для его использования нужен или OpenLiteSpeed или коммерческий LiteSpeed.

Расширение mod_lsphp позволяет использовать lsphp с классическим веб-сервером Apache.

Предупреждение

Модуль находится на стадии альфа-тестирования, при использовании его на рабочих серверах следует проявлять осторожность.

Установка mod_lsphp и первичная настройка

Установка mod_lsphp достаточно проста. Подключите репозиторий Hosting от ОС МСВСфера 9 и выполните команду:

$ sudo dnf install mod_lsphp

После установки модуля в каталогах настройки Apache появятся несколько файлов:

/etc/httpd/conf.d/mod_lsphp.conf
/etc/httpd/conf.modules.d/11-mod_lsphp.conf

Для начала работы модуля в файле /etc/httpd/conf.modules.d/11-mod_lsphp.conf раскомментируйте строку:

#LoadModule  lsphp_module        modules/mod_lsphp.so

Т.е. приведите её к виду:

LoadModule  lsphp_module        modules/mod_lsphp.so

Перезапустите Apache:

$ sudo systemctl restart httpd

Если при перезапуске Apache не запустился и в логе ошибок сервера появилась строка:

# cat /var/log/httpd/error_log | grep mod_lsphp | grep failed
... MODLSPHP: mod_lsphp system check failed. Disable mod_lsphp for server work. Use mod_fcgid or etc or use correct MSVSphere installation

То нужно сначала зарегистрировать систему и запустить сервис лимитирования (см. «МСВСфера 9 Сервер редакция для хостинг-провайдеров, интеграция с другим программным обеспечением»).

Если система зарегистрирована и корректно настроена, то Apache перезапустится и будет выведено сообщение:

# cat /var/log/httpd/error_log | grep MODLSPHP
... [pid 21393:tid 21393] MODLSPHP: (version: 0.0.1) loaded ok
... [pid 21396:tid 21396] MODLSPHP: queen process is started with pd = 21396

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

Обработчики

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

Модуль по умолчанию предполагает, что в системе есть lsphp и находится он по пути:

/usr/local/bin/lsphp

Имя данного хендлера application/x-httpd-lsphp. Если данный файл присутствует в системе, то в VirtualHost можно добавить следующую строку:

<IfModule lsphp_module>
      lsphp_user_group user1 user1
      AddHandler application/x-httpd-lsphp .php
      php_admin_flag engine on
</IfModule>

И вызвать PHP-скрипт сайта. Он запустится и будет обрабатываться с помощью LSPHP от пользователя user1.

Проверить наличие lsphp можно командой:

$ sudo ps aux | grep lsphp
user1      21449  0.0  0.7 217304 29536 ?        S    23:48   0:00 lsphp
user1      21450  0.0  0.5 217304 19640 ?        Ss   23:48   0:00 lsphp

или

$ sudo lsps -p
              ID     PNO                       COM     PID       CPU       MEM      VMEM
           user1       2                       ---     ---         0        11         0
                     ---                     lsphp   21464         0         7         0
                     ---                     lsphp   21465         0         7         0

Утилита lsps видит данные процессы так как они сразу попадают в лимитированное и изолированное окружение LS и LFS.

Также модуль позволяет добавить пользовательские обработчики для различных версий LSPHP.

Например, контрольная панель ispmanager имеет в составе пакеты вида isp-php**-lsapi, которые приносят в систему бинарный файл lsphp:

# ls -1 /opt/php*/bin/lsphp
/opt/php53/bin/lsphp
/opt/php54/bin/lsphp
/opt/php55/bin/lsphp
/opt/php56/bin/lsphp
/opt/php70/bin/lsphp
/opt/php71/bin/lsphp
/opt/php72/bin/lsphp
/opt/php73/bin/lsphp
/opt/php74/bin/lsphp
/opt/php80/bin/lsphp
/opt/php81/bin/lsphp
/opt/php82/bin/lsphp
/opt/php83/bin/lsphp
/opt/php84/bin/lsphp

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

Пример. Создадим файл /etc/httpd/conf.d/lsphp_handlers.conf со следующим содержимым:

<IfModule lsphp_module>
    lsphp_custom_handler x-lsphp53 /opt/php53/bin/lsphp
    lsphp_custom_handler x-lsphp54 /opt/php54/bin/lsphp
    lsphp_custom_handler x-lsphp55 /opt/php55/bin/lsphp
    lsphp_custom_handler x-lsphp56 /opt/php56/bin/lsphp
    lsphp_custom_handler x-lsphp70 /opt/php70/bin/lsphp
    lsphp_custom_handler x-lsphp71 /opt/php71/bin/lsphp
    lsphp_custom_handler x-lsphp72 /opt/php72/bin/lsphp
    lsphp_custom_handler x-lsphp73 /opt/php73/bin/lsphp
    lsphp_custom_handler x-lsphp74 /opt/php74/bin/lsphp
    lsphp_custom_handler x-lsphp80 /opt/php80/bin/lsphp
    lsphp_custom_handler x-lsphp81 /opt/php81/bin/lsphp
    lsphp_custom_handler x-lsphp82 /opt/php82/bin/lsphp
    lsphp_custom_handler x-lsphp83 /opt/php83/bin/lsphp
    lsphp_custom_handler x-lsphp84 /opt/php84/bin/lsphp
</IfModule>

И настроим виртуальный хост сайта на использование lsphp версии 55.

Предупреждение

После изменения настроек в конфигурационных файлах необходимо перезапустить Apache.

Проверяем вывод phpinfo():

$ sudo curl http://user1.t/i.php 2>/dev/null | grep "PHP Version </td>"
<tr><td class="e">PHP Version </td><td class="v">5.5.38 </td></tr>

Или перенастроим на обработчик x-lsphp83:

$ sudo curl http://user1.t/i.php 2>/dev/null | grep "PHP Version </td>"
<tr><td class="e">PHP Version </td><td class="v">8.3.16 </td></tr>

Типовая настройка виртуального хоста

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

Например, вот как может выглядеть конфигурационный файл /etc/httpd/conf.d/user1.t.conf:

<VirtualHost *:80>
  ServerAdmin webmaster@user1.t
  DocumentRoot /var/www/user1/site/user1.t
  ServerName user1.t
  ServerAlias www.user1.t
  ErrorLog /var/www/user1/logs/user1.t.error.log
  CustomLog /var/www/user1/logs/user1.t.access.log common
  DirectoryIndex index.php
...
  <IfModule lsphp_module>
        lsphp_user_group user1 user1
        AddHandler x-lsphp83 .php
        php_admin_flag engine on
  </IfModule>
</VirtualHost>

За определение пользователя — владельца процесса lsphp отвечает директива lsphp_user_group user1 user1, можно также указать другую директиву SuexecUserGroup user1 user1. Если же не указать ни одну из данных директив, то сайт вернёт ошибку. Ошибки можно избежать, если в файл /etc/httpd/conf.d/mod_lsphp.conf добавить директиву lsphp_apache_uid On.

Пример:

<IfModule lsphp_module>
    lsphp_apache_uid On
</IfModule>

В этом случае lsphp запустится от пользователя Apache:

$ sudo ps aux | grep lsphp
apache     24030  0.5  0.8 242588 32068 ?        S    15:02   0:00 lsphp
apache     24031  0.0  0.6 242588 22584 ?        Ss   15:02   0:00 lsphp

Данная директива позволяет не производить настройку отдельно для каждого сайта. В любом случае для сайта будет запущен процесс lsphp, но все процессы будут запущены от пользователя apache.

Параметры настройки LSPHP

lsphp_custom_handler

Описание

Добавить собственный обработчик запроса. Данная опция связывает виртуальное имя (обработчик) и путь к бинарному файлу, который будет принимать запросы.

Пример

lsphp_custom_handler x-lsphp53 /opt/php53/bin/lsphp

Вы можете добавить несколько собственных обработчиков — в результате сохранится их список. Задаётся в конфигурационном файле или в VirtualHost.

lsphp_user_group

Описание

Задать пользователя (и группу), от которого запустится lsphp.

Пример

lsphp_user_group user1 user1

Задаётся в конфигурационном файле или в VirtualHost.

lsphp_uid_gid

Описание

Задать пользователя (и группу), от которого запустится lsphp (в виде идентификатора, а не имени).

Пример

lsphp_uid_gid 1000 1000

Задаётся в конфигурационном файле или в VirtualHost.

lsphp_apache_uid

Описание

Запускать lsphp для сайта от имени пользователя apache, если не определены ни lsphp_user_group, ни SuexecUserGroup. Может принимать значения On и Off.

Значение по умолчанию: On.

Пример

lsphp_apache_uid Off

Задаётся в конфигурационном файле или в VirtualHost.

lsphp_waiting_timeout

Описание

Задать время ожидания соединения при запросе запуска lsphp для виртуального хоста. Чем меньше значение, тем быстрее Apache сможет идентифицировать, что lsphp запустился, но больше вероятность того, что при задержке запуска сайт вернёт ошибку 503.

Время задаётся в микросекундах.

Значение по умолчанию: 500000 микросекунд, т.е. 0.5 секунды.

Задаётся в конфигурационном файле или в VirtualHost.

lsphp_reconnects

Описание

Задать число попыток соединения при запросе запуска lsphp для виртуального хоста. Чем меньше значение, тем быстрее Apache сможет идентифицировать, что lsphp запустился, но больше вероятность того, что при задержке запуска сайт вернёт ошибку 503.

Значение по умолчанию:: 20 микросекунд

Задаётся в конфигурационном файле или в VirtualHost.

Суммарное время ожидания запуска lsphp для виртуального хоста рассчитывается как lsphp_reconnects * lsphp_waiting_timeout и по умолчанию составляет 10 секунд.

lsphp_childs

Описание

Устанавливает значение параметра LSAPI_CHILDREN. Максимальное число обработчиков для пользователя.

Значение по умолчанию: 80

Пример

lsphp_childs 70

Задаётся в конфигурационном файле или в VirtualHost.

lsphp_max_idle

Описание

Устанавливает значение параметра LSAP_IMAX_IDLE. Число секунд до того, как бездействующий процесс lsphp погаснет.

Значение по умолчанию: 300

Пример

lsphp_max_idle 400

Задаётся в конфигурационном файле или в VirtualHost.

lsphp_pgrp_max_idle

Описание

Устанавливает значение параметра LSAPI_PGRP_MAX_IDLE. Число секунд до того, как главный процесс lsphp погаснет при отсутствии дочерних процессов.

Значение по умолчанию: 30

Пример

lsphp_max_idle 40

Задаётся в конфигурационном файле или в VirtualHost.

lsphp_process_life

Описание

Устанавливает значение параметра LSAPI_MAX_PROCESS_TIME. Максимальное число секунд, в течении которых будет обрабатываться запрос, потом процесс-обработчик гаснет.

Значение по умолчанию: 300

Пример

lsphp_process_life 400

Задаётся в конфигурационном файле или в VirtualHost.

lsphp_spath

Описание

Путь, где будут располагаться сокеты, соединяющие Apache с запущенными процессами lsphp.

Значение по умолчанию: /tmp/lsphp_httpd/, а для HTTPD-ITK: /tmp/lsphp_httpd_itk/.

Можно задать произвольный путь.

Пример

lsphp_spath /opt/sockets/

Также с модулем поставляется файл для настройки каталогов в очищаемых директориях — /usr/lib/tmpfiles.d/mod_lsphp.conf.

d /tmp/lsphp_httpd/   750 apache apache
d /tmp/lsphp_httpd_itk/   755 apache apache

Соответственно, задавая свой каталог, учитывайте, чтобы данные в нём были доступны от пользователя apache, на чтение и запись или в режиме itk для всех пользователей на чтение и исполнение.

Задаётся в конфигурационном файле или в VirtualHost.

lsphp_phprc

Описание

Путь к файлу PHP Runtime coniguration.

Значение по умолчанию: не задан, конфигурация берётся из стандартного php.ini.

Пример

lsphp_phprc /var/www/user1/conf/.user.ini

Задаётся в конфигурационном файле или в VirtualHost.

lsphp_force_restart

Описание

Включить или выключить принудительный останов процессов lsphp при перезапуске Apache.

Значение по умолчанию: Off.

Задаётся в конфигурационном файле или в VirtualHost.

lsphp_secure_scripts

Описание

Проверить, что владельцем исполняемого файла PHP является тот же пользователь, от которого запущен процесс lsphp.

Значение по умолчанию: Off.

Задаётся в конфигурационном файле или в VirtualHost.

Взаимодействие с mod_php

mod_lsphp так же как и mod_php читает параметры php_value, php_admin_value, php_flag, php_admin_flag. Он может читать их как из глобальной конфигурации сервера, так и из виртуального хоста, а также из файла .httaccess (если его поддержка включена), поэтому параметр php_admin_flag engine off, установленный для mod_php, успешно прочитает и mod_lsphp, и PHP отрабатывать не будет. Поэтому возможны конфликты между mod_php и mod_lsphp.

Проверка конфигурации виртуального хоста

Если в конфигурационный файл /etc/httpd/conf.d/mod_lsphp.conf добавить следующую директиву:

<Location "/info">
    SetHandler lsphp-debug-handler
</Location>

То данный обработчик выведет настройки для виртуального хоста, где была запрошена страница /info.

Будет выдана страница вида:

# lynx --dump http://user1.t/info
                                 Server config

   Path to socket     not set
   PHPRC              not set
   Connection timeout -2
   Reconnect tries    -2
   Max children       -2
   Max idle           -2
   Max process time   -2
   Poll timeout       -2
   Stop backend       1
   Check permissions  1
   Use apache user    1
   Coredump           0

                                Directory config

   LSPHP uid  1000
   LSPHP gid  1000
   PHP params engine 1 adm:1 htaccess:0

                                 Handlers list

   application/x-httpd-lsphp /usr/local/bin/lsphp
   x-lsphp70                 /opt/php70/bin/lsphp
   x-lsphp53                 /opt/php53/bin/lsphp
   x-lsphp71                 /opt/php71/bin/lsphp
   x-lsphp80                 /opt/php80/bin/lsphp
   x-lsphp54                 /opt/php54/bin/lsphp
   x-lsphp72                 /opt/php72/bin/lsphp
   x-lsphp81                 /opt/php81/bin/lsphp
   x-lsphp55                 /opt/php55/bin/lsphp
   x-lsphp73                 /opt/php73/bin/lsphp
   x-lsphp82                 /opt/php82/bin/lsphp
   x-lsphp56                 /opt/php56/bin/lsphp
   x-lsphp74                 /opt/php74/bin/lsphp
   x-lsphp83                 /opt/php83/bin/lsphp
   x-lsphp84                 /opt/php84/bin/lsphp

Starter security info

   -D LSPHPS_ALLOWED_CMD=    lsphp
   -D LSPHPS_ALLOWED_DIR=    /usr/local/bin
   -D LSPHPS_DOC_ROOT=       /var/www
   -D LSPHPS_GID_MIN=        1000
   -D LSPHPS_HTTPD_USER=     apache
   -D LSPHPS_LOG_EXEC=       /var/log/httpd/lsphp_mod.log
   -D LSPHPS_SAFE_DIR=       /opt
   -D LSPHPS_UID_MIN=        1000
   -D LSPHPS_SAFE_PATH=      /usr/local/bin:/usr/bin:/bin
   -D LSPHPS_USERDIR_SUFFIX= public_html

Где можно получить все настройки для виртуального хоста. Здесь -2 — значение по умолчанию.

Параметры тонкой настройки

Данные параметры рекомендуетя использовать со значениями по умолчанию.

lsphp_ptime

Описание

Значение в миллисекундах, в течении которого poll-вызов будет ожидать событие в наборе дескрипторов.

Значение по умолчанию: 0.

Задаётся в конфигурационном файле или в VirtualHost.

lsphp_allow_coredump

Описание

Устанавливает параметр LSAPI_ALLOW_CORE_DUMP=1, который позволяет lsphp создавать отладочную информацию при сбое в работе.

Значение по умолчанию: Off.

Задаётся в конфигурационном файле или в VirtualHost.

lsphp_connection_details

Описание

Параметр включает и отключает вывод дополнительной информации при соединении.

Значение по умолчанию: Off.

Задаётся в конфигурационном файле или в VirtualHost.

lsphp_custom_env_variable

Описание

Параметр задаёт собственную переменную окружения для lsphp.

lsphp_custom_env_variable TEST test_value

Поддерживает ссылку на значение существующей переменной в формате $ORIG_ENV или ${ORIG_ENV}.

Например, если существует переменная окружения SHL=bash, то можно задать собственную переменную:

lsphp_custom_env_variable MY_OWN_SH $SHL

И для lsphp будет установлена переменная MY_OWN_SH=bash.

Задаётся в конфигурационном файле или в VirtualHost.

lsphp_user_init (экспериментальный параметр)

Описание

Добавляет флаг LSPHP_ENABLE_USER_INI=on при запуске lsphp. Документация LiteSpeed.

Значение по умолчанию: Off.

Задаётся в конфигурационном файле или в VirtualHost.

lsphp_user_init_homedir (экспериментальный параметр)

Описание

Добавляет флаг LSAPI_USERINI_HOMEDIR=1 при запуске lsphp. Документация LiteSpeed.

Значение по умолчанию: Off.

Задаётся в конфигурационном файле или в VirtualHost.

lsphp_notify (экспериментальный параметр)

Описание

Параметр включает и отключает режим работы lsphpLSAPI_ACCEPT_NOTIFY = 1. Документация LiteSpeed.

Значение по умолчанию: Off.

Задаётся в конфигурационном файле или в VirtualHost.

lsphp_debug

Описание

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

Значение по умолчанию: Off.

Задаётся в конфигурационном файле или в VirtualHost.

Установка для ispmanager вручную

Для работы модуля необходимо наличие пакетов isp-php*-lsapi.

Например, если нужен работающий PHP 8.1 в режиме LiteSpeed, для этого на машине с ispmanager необходимо установить пакет:

$ sudo yum install isp-php81-lsapi

И создать файл /etc/httpd/conf.d/lsphp_handlers.conf со следующим содержимым:

<IfModule lsphp_module>
    lsphp_custom_handler x-lsphp81 /opt/php81/bin/lsphp
</IfModule>

Шаблон для виртуального хоста для сайта с обработкой LSPHP должен выглядеть следующим образом:

<VirtualHost 127.0.0.1:8080>
        ServerName user1.my.brp
        DocumentRoot /var/www/user1/data/www/user1.my.brp
        ServerAdmin webmaster@user1.my.brp
        AddDefaultCharset off
        SuexecUserGroup user1 user1
        CustomLog /var/www/httpd-logs/user1.my.brp.access.log combined
        ErrorLog /var/www/httpd-logs/user1.my.brp.error.log
        ScriptAlias /cgi-bin/ /var/www/user1/data/www/user1.my.brp/cgi-bin/
        <FilesMatch "\.ph(p[3-5]?|tml)$">
                SetHandler x-lsphp81
        </FilesMatch>
        SetEnvIf X-Forwarded-Proto https HTTPS=on
        ServerAlias www.user1.my.brp
        DirectoryIndex index.php index.html
        Include /etc/httpd/conf/users-resources/user1/vhost.conf
        IncludeOptional /etc/httpd/conf/vhosts-resources/user1.my.brp/*.conf
        <IfModule lsphp_module>
                Include /etc/httpd/users-php/user1.conf
                Include /etc/httpd/vhosts-php/user1.my.brp.conf
                php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f webmaster@user1.my.brp"
                php_admin_value upload_tmp_dir "/var/www/user1/data/mod-tmp"
                php_admin_value session.save_path "/var/www/user1/data/mod-tmp"
                php_admin_value open_basedir "/var/www/user1/data:."
        </IfModule>
</VirtualHost>
<Directory /var/www/user1/data/www/user1.my.brp>
        Options +Includes +ExecCGI
        <IfModule lsphp_module>
                php_admin_flag engine on
        </IfModule>
</Directory>

Затем необходимо перезапустить Apache.

Интеграция с веб-интерфейсом ispmanager

Для интеграции с веб-интерфейсом ispmanager необходимо установить пакет ls-isp-plugin версии не ниже 0.6.1. А также пакет mod_lsphp (должны быть установлены и активированы сопутствующие сервисы ОС МСВСфера 9 Хостинговая редакция: klsd, lsctl, limited-fs и пр.).

Примечание

Модуль mod_lsphp успешно протестирован и поддерживается для работы с конфигурацией Apache Prefork. Рекомендуем использовать именно такую конфигурацию Apache.

Установка необходимых пакетов:

$ sudo dnf install mod_lsphp ls-isp-plugin

Предупреждение

ls-isp-plugin при установке перезапишет файлы /usr/local/mgr5/etc/templates/apache2-vhosts.template и /usr/local/mgr5/etc/templates/apache2-directory.template, поэтому если в данных файлах были изменения, то они пропадут, и необходимо будет внести их в новый файл.

Также необходимо установить пакеты isp-php*-lsapi, которые принесут в систему lsphp бинарные файлы. Пример установки некоторых версий lsphp:

$ sudo dnf install isp-php80-lsapi isp-php81-lsapi

Далее в файле /etc/httpd/conf.modules.d/11-mod_lsphp.conf необходимо раскомментировать загрузку модуля и перезапустить Apache:

LoadModule  lsphp_module        modules/mod_lsphp.so

Или зайдите в пункт “Настройки системы” и включите флажок “Включить/выключить модуль lsphp”:

Активация mod_lsphp

Если установка прошла без ошибок, то в шаблонах ispmanager должен появиться новый шаблон lsphp.

Шаблон lsphp

Теперь можно перейти к пользователю, для которого необходимо включить mod_lsphp, и перейти в меню редактирования пользователя.

Редактирование настроек пользователя

Здесь выберите в качестве шаблона lsphp.

Настройка lsphp

И сохраните.

Далее перейдите в настройки сайта пользователя и в разделе “Обработчик PHP” выберите необходимую версию LSPHP для сайта.

Выбор версии PHP

Сохраните изменения.

Для сайта пользователя должен быть сгенерирован конфигурационный файл вида:

<VirtualHost 127.0.0.1:8080>
        ServerName user1.my.brp
        ...
        <FilesMatch "\.ph(p[3-5]?|tml)$">
                SetHandler x-lsphp80
        </FilesMatch>
        <IfModule lsphp_module>
                lsphp_user_group user1 user1
        </IfModule>
        ...

</VirtualHost>
<Directory /var/www/user1/data/www/user1.my.brp>
        Options +Includes +ExecCGI
        <IfModule lsphp_module>
                php_admin_flag engine on
        </IfModule>
</Directory>

С этого момента сайт должен обрабатываться LSPHP.

Переход от Apache ITK к Apache Prefork в ispmanager

Для перехода от Apache ITK в Apache Prefork (если ранее уже был установлен mod_lsphp) необходимо выполнить следующие действия.

  1. Перейдите в настройку “Конфигурация ПО” и выберите “Веб-сервер (WWW)”, затем “Настройка работы ПО”.

    Переход на Apache Prefork
  2. В открывшемся окне в графе Apache выберите “Не использовать”, т.к. прямой переход от ITK к Prefork совершить нельзя. После того, как переконфигурация ПО завершится, выберите “Apache MPM-Prefork”, а также поставьте галочки напротив пунктов “Модуль PHP” и “PHP-FPM FastCGI”.

  3. Нажмите “Сохранить”.

После переконфигурации в командной строке запустите скрипт с параметром:

$ sudo msvsphere_hosting_convert lsisp

Он восстановит все удалённые хостинговые пакеты (которые удалились при переходе в тот момент, когда система была без Apache).

После этого в “Настройках системы” снова включите модуль mod_lsphp.

Активация mod_lsphp

Сохраните изменения.

Всех пользователей, у каторых был установлен шаблон lsphp, нужно вернуть к стандартному шаблону или “без шаблона”. И поменять обработчик PHP на “Модуль PHP” или любой другой, характерный для Apache.

После этого можно включать шаблон lsphp и устанавливать обработчики для LSPHP.