Обработчики событий (event handlers) в Plesk

Aug 04, 2011 13:16

Задача
При создании домена (или поддомена) нужно автоматизировать процесс настройки виртуального хоста Apache. Сложность в том, что это можно сделать только через специальные файлы-хуки vhost.conf и vhost_ssl.conf (для SSL), которые нужно создать в папке /var/www/vhosts/*/conf (для поддомена /var/www/vhosts/*/subdomains/*/conf).
Кроме этого, после их создания нужно выполнить "/usr/local/psa/admin/sbin/websrvmng --reconfigure-all".

Решение
Оказывается в Plesk предусмотрены события. На каждое из них можно настроить обработчик (например самописный скрипт). Другие панели устроены аналогично. Но в Plesk некоторые вещи очень плохо описаны в документации. Поэтому опишу все подробно.
Для создания обработчика сущствует программа /usr/local/psa/bin/event_handler.
Приведу несколько основных команд:
Краткая справка:
./event_handler -h

Список всех обработчиков:
./event_handler -l

Список возможных событий:
./event_handler -le
Наиболее интересные события:
31 Домен создан
39 Субдомен создан
46 Физический хостинг создан

Как оказалось, событие "31 Домен(Сайт) создан" не очень полезно, так как обработчик не получает переменной с именем системного пользователя $NEW_SYSTEM_USER. А искать имя пользователя косвенными методами (stat --printf=%U /var/www/vhosts/$NEW_DOMAIN_NAME/httpdocs) не надежно. Посему нужно использовать "46 Физический хостинг создан" и "39 Субдомен создан".

Создаем для каждого из них по скрипту.
/opt/psa/handlers/domain-add.sh

#!/bin/bash h=$NEW_DOMAIN_NAME p="/var/www/vhosts/$h" u=$NEW_SYSTEM_USER if [ ! -d $p/conf ]; then   mkdir $p/conf fi cat << __EOT > $p/conf/vhost.conf   AssignUserId $u psacln CustomLog $p/statistics/logs/access_vhost_log vhost_combined   php_admin_value open_basedir none __EOT cat << __EOT > $p/conf/vhost_ssl.conf   AssignUserId $u psacln CustomLog $p/statistics/logs/access_vhost_log vhost_combined   php_admin_value open_basedir none __EOT /usr/local/psa/admin/sbin/websrvmng --reconfigure-vhost --vhost-name=$h service apache2 reload
/opt/psa/handlers/subdomain-add.sh

#!/bin/bash /usr/local/psa/handlers/dump-args.pl h=$NEW_DOMAIN_NAME s=$NEW_SUBDOMAIN_NAME p="/var/www/vhosts/$h/subdomains/$s" u=$NEW_SYSTEM_USER if [ ! -d $p/conf ]; then mkdir $p/conf fi cat << __EOT > $p/conf/vhost.conf AssignUserId $u psacln CustomLog $p/statistics/logs/access_vhost_log vhost_combined php_admin_value open_basedir none __EOT /usr/local/psa/admin/sbin/websrvmng --reconfigure-vhost --vhost-name=$s.$h service apache2 reloadВозможно в Вашем случае настройки vhost*.conf будут иными (у меня настроен apache-mpm-itk для быстрой и безопасной работы php). Так что уберите лишнее.

Теперь настроим срабатывание этих обработчиков.
При добавлении домена:
./event_handler -c -command /usr/local/psa/handlers/domain-add.sh -priority 50 -user root -event 46
При добавлении субдомена:
./event_handler -c -command /usr/local/psa/handlers/subdomain-add.sh -priority 50 -user root -event 39

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

handler, plesk, скрипт, event, событие, обработчик

Previous post Next post
Up