Конфигурация веб-сервера
- Информация о настройках сайта хранится во внутренней базе ispmanager. Т.е. никакие изменения, вносимые в конфигурационные файлы вручную, не влияют на состояние, отображаемое в панели, и могут быть потеряны при изменении параметров из панели, если настройки, сделанные вручную, и настройки, сделанные из панели, конфликтуют. Тем не менее вы можете вносить изменения в конфигурацию сервера вручную. Эти изменения будут сохранены при редактировании домена, если это возможно.
- Все настройки отдельного сайта находятся в отдельном файле. Файлы раскладываются по каталогам по имени владельца сайта.
- Настройки доступа к каталогам (diraccess) записываются в конфигурационный файл веб-сервера, в тот же файл, что и настройки соответствующего сайта (раньше для этого использовался .htaccess).
- PHP может работать как через Apache, так и через nginx (используется PHP-FPM). В связи с тем, что появилась возможность пользоваться PHP, не используя Apache, при совместном использовании Apache и nginx сервер Apache может быть не запущен, если запрос может быть обработан средствами nginx.
- Появилась возможность использовать несколько IP-адресов для сайта.
- При включении SSL в настройках nginx создается отдельная секция server.
- Для ротации журналов запросов и ошибок используется logrotate.
Настройка веб-сервера
Следующая группа параметров используется вне зависимости от того, какой веб-сервер вы используете.
path php-cgi <полный путь>
Путь до исполняемого файла php-cgi.
WebDefaultAliases <список алиасов>
Набор дополнительных имен, которые будут предложены автоматически при создании сайта. Вы можете использовать макрос _name_, чтобы подставить в строку основное имя сайта.
BackendBind
Адрес, на котором будет поднят backend (веб-сервер, на который будет передавать запросы frontend-сервер). При одновременной установке nginx и Apache backend — Apache.
WebModules <список модулей>
Список используемых веб-серверов.
WebUser <имя>
Имя пользователя, с правами которого работает веб-сервер (необходимо указывать именно имя, а не uid).
WebGroup <имя>
Группа, с правами которой работает веб-сервер (необходимо указывать именно имя, а не gid).
WebRestartDelay <секунды>
Минимальное время, которое должно проходить между перезапусками веб-сервера.
SSLSecureProtocols <список протоколов>
Список протоколов, указываемых веб-серверу для использования в случае, если используется повышенная безопасность SSL (например, SSLSecureProtocols TLSv1 TLSv1.1 TLSv1.2)
SSLSecureChiphers <список шифров>
Список шифров в формате openssl, указываемых веб-серверу для использования в случае, если используется повышенная безопасность SSL (например, SSLSecureChiphers HIGH:!RC4:!aNULL:!eNULL:!MD5:!EXPORT:!EXP:!LOW:!SEED:!CAMELLIA:!IDEA:!PSK:!SRP:!SSLv2)
ApsExtRepository
Путь до 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 пользователя.
Список доступных кодировок сайта берется из файла etc/charset. По умолчанию в нем указана только utf-8.
Настройка 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 <каталог>
Имя каталога, в котором будут создаваться файлы с настройками сайтов.
path apache.conf <путь>
Путь до основного файла конфигурации Apache. В него будут записываться директивы Listen и NameVirtualHost.
ApacheWidePorts <список портов>
Для указанных портов в Apache будет добавляться Listen для всех IP-адресов сервера. По умолчанию: 80 и 443. Это позволяет уменьшить количество жестких перезапусков Apache.
Настройка Nginx
Во время запуска панели проверяется наличие сервиса PHP-FPM. Если он найден, будет доступно использовать в настройках сайтов PHP в режиме FastCGI.
Далее приведен список параметров, используемых для настройки панели под конкретную конфигурацию nginx.
path nginx-vhosts <каталог>
Имя каталога, в котором будут создаваться файлы с настройками сайтов.
path nginx-vhosts-includes <список каталогов>
Пути до файлов с дополнительными настройками, которые будут добавлены в секцию server каждого сайта (используется директива Include).
path fpm-pool.d <каталог>
Имя каталога, в котором будут создаваться файлы с настройками PHP-FPM.
path fpm-service <имя>
Имя сервиса PHP-FPM. Используется для его перезапуска при добавлении новых пользователей.
path nginx-static <регулярное выражение>
Используется для определения файлов, которые nginx должен отдавать самостоятельно.
path nginxctl <команда>
Используется для перезапуска nginx при добавлении новых сайтов. Должна обрабатывать параметры: reload (перечитать настройки сайтов), restart (перезапустить nginx, используется при добавлении/удалении IP-адресов), stop/start (запустить nginx, используется при конвертации настроек в случае добавления/удаления веб-сервера).
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 с таким же значением, как то, что записано в конфигурационном файле.
Перезапуск веб-сервера
Попытка перезапуска веб-сервера происходит через 2 секунды после последнего изменения настроек. Если в течение этого времени происходят другие изменения, то перезапуск будет отложен еще на 2 секунды. Дополнительно вы можете задать параметр WebRestartDelay — минимальную задержку между последовательными перезапусками веб-сервера.
В случае, если изменения не затрагивали списка прослушиваемых IP-адресов/портов, делается мягкая перезагрузка веб-сервера, в противном случае сервер перезапускается полностью.
Ротация журналов
Все журналы веб-сервера записываются в каталог httpd-logs, недоступный пользователям. В домашнем каталоге пользователя создается каталог logs куда создаются жесткие ссылки на журналы посещений и ошибок сайтов пользователя. Кроме того, в каталог logs сохраняются старые копии журналов после ротации.
Ispmanager 6 использует logrotate для ротации журналов веб-сервера.
path logrotate.d <каталог>
Указывает каталог, куда будут сохраняться настройки logrotate (отдельные файлы для каждого сайта).
LogrotateInfiniteValue <целое число>
Указывает количество хранимых архивов, если в панели указано бесконечное значение.
Анализаторы журналов
Теоретически, ispmanager может работать с любыми анализаторами журналов. На данный момент через интерфейс могут быть установлены:
- awstats
- webalizer
path analyzer.d <каталог>
Указывает каталог, куда будут сохраняться скрипты для анализа журналов (отдельные файлы для каждого сайта).
При установке анализатора журналов в конфигурационный файл панели записывается следующая секция:
Analyzer awstats {
ConfPath /etc/awstats/awstats.__NAME__.conf
BinPath /usr/lib/cgi-bin/awstats.pl
Lang en
Lang ru
}
ConfPath
Указывает путь, куда будут сохраняться настройки анализатора для конкретного сайта.
BinPath
Указывает путь до исполняемого файла.
Lang
Указывает поддерживаемые языки. Секция Analyzer может содержать любое количество таких строк.
При включении анализатора журналов из каталога etc/template берется соответствующий шаблон скрипта (имя файла совпадает с именем анализатора). В нем происходит подстановка всех макросов (список макросов можно узнать, включив дебаг для модуля web) и копируется в каталог analyzer.d. Дополнительно формируется конфигурационный файл. Из etc/template берется соответствующий файл с расширением .conf, в нем так же заменяются все макросы и он сохраняется в файл, имя которого указано в ConfPath (вместо _NAME_ подставляется имя сайта).
Полученный скрипт вызывается всякий раз при ротации журнала через logrotate. Если вы задали периодический анализ, вызов этого скрипта будет добавлен в планировщик.
Для правильной настройки отображения статистики при настройке сайта также используются следующие параметры конфигурационного файла панели управления:
- AwstatsEncoding — кодировка генерируемых awstats HTML-страниц отчетов
- WebalizerEncoding — кодировка генерируемых webalizer HTML-страниц отчетов
По умолчанию данные параметры имеют значение "utf-8".
Переконфигурирование веб-сервера
В процессе эксплуатации веб-сервера и панели управления может возникнуть ситуация, когда нужно произвести полную переконфигурацию веб-сервера. При этом действии конфигурационные файлы всех созданных с помощью панели управления сайтов будут созданы заново.
Внимание! Данное действие не сохранит изменения в конфигурационных файлах, внесенные вручную!
Для выполнения операции последовательно нужно выполнить следующие функции:
webreconfigure.initialize с параметром shutdown=on
webreconfigure.restore
Пример выполнения с помощью mgrctl для ispmanager:
/usr/local/mgr5/sbin/mgrctl -m ispmgr webreconfigure.initialize shutdown=on
/usr/local/mgr5/sbin/mgrctl -m ispmgr webreconfigure.restore