Поддерживаемое ПО
На данный момент ISPmanager работает со следующими серверами:
- Nginx версии не ниже 1.1.15
- Apache 2.2 и apache 2.4
Настройка web-сервера
Следующая группа параметров используется вне зависимости от того, какой web сервер вы используете
path php-cgi <полный путь>
Путь до исполняемого файла php-cgi
WebDefaultAliases <список алиасов>
Набор дополнительных имен, которые будут предложены автоматически при создании web домена. Вы можете использовать макрос _name_, чтобы подставить в строку основное имя домена
BackendBind <ip адрес+порт>
Адрес, на котором будет поднят backend (web сервер, на который будет передавать запросы frontend сервер). При одновременной установке nginx и apache backend — apache.
WebModules <список модулей>
Список используемых web серверов
WebUser <имя>
Имя пользователя, с правами которого работает web сервер (необходимо указывать именно имя, а не uid)
WebGroup <имя>
Группа, с правами которой работат web сервер (необходимо указывать именно имя, а не gid)
WebRestartDelay <секунды>
Минимальное время, которое должно проходить между перезапусками web сервера
SSLSecureProtocols <список протоколов>
Список протоколов, указываемых web-серверу для использования в случае, если используется повышенная безопасность SSL (например, SSLSecureProtocols TLSv1 TLSv1.1 TLSv1.2)
SSLSecureChiphers <список шифров>
Список шифров в формате openssl, указываемых web-серверу для использования в случае, если используется повышенная безопасность SSL (например, SSLSecureChiphers HIGH:!RC4:!aNULL:!eNULL:!MD5:!EXPORT:!EXP:!LOW:!SEED:!CAMELLIA:!IDEA:!PSK:!SRP:!SSLv2)
ApsExtRepository <URL репозитария>
Путь до xml-файла внешнего репозитория APS
Option ApsRepositoryUpdated
Наличие этой опции указывает, что при старте панели управления не нужно выполнять обновления списка APS-скриптов
Option DisableSecurePhpBin
Наличие этой опции отключает создание защищенной директории php-bin (DefaultHomeDir/php-bin/username) для пользователя и создание хардлинок для php и php.ini из домашней директории пользователя в защищенную директорию (применяется в режимах работы php как CGI или FastCGI (Apache)). Вместо этого php и php.ini будут создаваться в директории php-bin пользователя
Список доступных кодировок web домена берется из файла etc/charset. По умолчанию в нем указана только utf-8.
Пример
Если прописать
path php_open_basedir none
то в конфиг VirtualHost будет добавлено
php_admin_value open_basedir "none"
Настройка Apache
Во время запуска панели происходит опрос загруженных модулей apache. Так мы определяем список возможных настроек
cgi_module
возможность работы с CGI скриптами
fastcgi_module или fcgid_module
возможность работы с php в режиме fastcgi
php5_module
возможность работы c php через модуль apache
Если есть поддержка CGI и найден файл, указанный в path php-cgi, появляется возможность работы с php в режиме CGI
Далее приведен список параметров, используемых для настройки панели под конкретную конфигурацию apache.
Option ApacheITK
Добавляется, если используется apache ITK. При этом в конфиг вместо директивы SuexecUserGroup пишется AssignUserID
path apachectl <имя>
Путь до программы/скрипта, используемого для перезапуска apache. Должен уметь обрабатывать следующие параметры: -M (получить список модулей), graceful (мягкая перезагрузка), restart (жесткая перезагрузка, используется при добавлении/удалении IP адресов)
path apache-vhosts <каталог>
Имя каталога, в котором будут создаваться файлы с настройками web доменов
path apache.conf <путь>
Путь до основного файла конфигурации apache. В него будут записываться директивы Listen и NameVirtualHost
ApacheWidePorts <список портов>
Для указанных портов в apache будет добавляется Listen для всех IP адресов сервера. По умолчанию: 80 443. Это позволяет уменьшить количество жестких перезапусков apache.
Настройка Nginx
Во время запуска панели проверяется наличие сервиса php-fpm. Если он найден, будет доступно использовать в настройках web доменов php в режиме fastcgi.
Далее приведен список параметров, используемых для настройки панели под конкретную конфигурацию nginx.
path nginx-vhosts <каталог>
Имя каталога, в котором будут создаваться файлы с настройками web доменов
path nginx-vhosts-includes <список каталогов>
Пути до файлов с дополнительными настройками, которые будут добавлены в секцию server каждого web домена (используется директива Include)
path fpm-pool.d <каталог>
Имя каталога, в котором будут создаваться файлы с настройками php-fpm
path fpm-service <имя>
Имя сервиса php-fpm. Используется для его перезапуска при добавлении новых пользователей.
path nginx-static <регулярное выражение>
Используется для определения файлов, которые nginx должен отдавать самостоятельно.
path nginxctl <команда>
Используется для перезапуска nginx при добавлении новых web доменов. Должна обрабатывать параметры: reload (перечитать настройки web доменов), restart (перезапустить nginx, используется при добавлении/удалении IP адресов), stop/start (запустить nginx, используется при конвертации настроек в случае добавления/удаления web сервера)
path nginx-configtest <команда>
Используется для проверки корректности содержимого конфигурационных файлов Nginx. По умолчанию равна [path nginxctl] configtest
path nginx <команда>
Используется при запуске панели для проверки работоспособности nginx. Должна корректно обрабатывать параметр -V
ForwardedSecret <строка>
Используется для защиты от подделки IP адреса.
Пример
Если установить
path nginx-static ~* ^youscript\.ext$
То создастся location
location ~* ^youscript\.ext$ { try_files $uri $uri/ @fallback; }
вместо
location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf)$ { try_files $uri $uri/ @fallback; }
ForwardedSecret
В случае, если вы переправляете запросы из nginx в панель, мы определяем обратный адрес по HTTP заголовку X-Forwarded-For. Злоумышленник получает возможность подменить обратный адрес, используя этот заголовок, что, в свою очередь, позволяет ему воспользоваться чужими COOKIE для выполнения запросов от имени другого пользователя. Панель игнорирует заголовок X-Forwarded-For, если запрос не содержит заголовка X-Forwarded-Secret с таким же значением, как то, что записано в конфиге.
Перезапуск web сервера
Попытка перезапуска web сервера происходит через 2 секунды после последнего изменения настроек. Если в течение этого времени происходят другие изменения, то перезапуск будет отложен еще на 2 секунды. Дополнительно вы можете задать параметр WebRestartDelay — минимальную задержку между последовательными перезапусками web сервера.
В случае, если изменения не затрагивали списка прослушиваемых IP адресов/портов, делается мягкая перезагрузка web сервера, в противном случае сервер перезапускается полностью.
Ротация журналов
Все журналы web сервера записываются в каталог httpd-logs, недоступный пользователям. В домашнем каталоге пользователя создается каталог logs куда создаются жесткие ссылки на журналы посещений и ошибок web доменов пользователя. Кроме того, в каталог logs сохраняются старые копии журналов после ротации.
ISPmanager 5 использует logrotate для ротации журналов web сервера.
path logrotate.d <каталог>
Указывает каталог, куда будут сохраняться настройки logrotate (отдельные файлы для каждого web домена)
LogrotateInfiniteValue <целое число>
Указывает количество хранимых архивов, если в панели указано бесконечное значение
Переконфигурирование web-сервера
В процессе эксплуатации web-сервера и панели управления может возникнуть ситуация, когда нужно произвести полную переконфигурацию web-сервера. При этом действии конфигурационные файлы всех созданных с помощью панели управления web-доменов будут созданы заново.
Внимание! Данное действие не сохранит изменения в конфигурационных файлах, внесенные вручную!
Для выполнения операции последовательно нужно выполнить следующие функции:
webreconfigure.initialize с параметром shutdown=on webreconfigure.restore
Пример выполнения с помощью mgrctl для ISPmanager Lite:
/usr/local/mgr5/sbin/mgrctl -m ispmgr webreconfigure.initialize shutdown=on /usr/local/mgr5/sbin/mgrctl -m ispmgr webreconfigure.restore