Сегодня пойдет речь о мониторинге Drupal сайтов. В нашей компании мы используем для этого модуль Drupal Remote Dashboard (drd).
Этот модуль предоставляет нужные нам возможности для мониторинга:
- отслеживание изменений версий ядер, модулей и тем;
- возможность удаленно запускать cron;
- включить режим обслуживания;
- очищать кэш;
И это только часть его возможностей. Также этот модуль поддерживает команды drush, что позволяет управлять им из консоли. Модуль считается хорошо защищенным, так как данные, передающиеся между модулем и его ядрами, шифруются с помощью алгоритма AES.
Модуль drd состоит из клиентской и серверной части: drd — сервер и drd server — клиент.
Модуль drd устанавливаем на тот сайт, с которого мы планируем мониторить сайты (поддерживается только Drupal 7), а модуль drd server устанавливаем на тот сайт, который планируем мониторить (поддерживается Drupal 6 и 7).
Что ж, перейдем от теории к практике...
Установка
Установка drd и drd server идентична, поэтому мы рассмотрим пример только с установкой drd server.
- С помощью drush. Самый быстрый и удобный вариант.
Переходим в корневой каталог и выполняем следующие команды:drush dl drd_server drush en drd_server
Если у Вас до этого не был установлен модуль AES, то при выполнении последней команды Вам будет предложено установить его. Соглашаемся, так как для работы drd server-а этот модуль необходим.
- Вручную.
- Переходим в каталог sites/all/modules, скачиваем туда архивы модулей AES, drd_server нужных версий (6 или 7, в зависимости от версии Вашего Drupal сайта).
- Распаковываем командой tar vxfz имя_архива.
- Переходим в панель администрирования сайта, на вкладку модули, включаем модуль AES и DRD server.
С установкой мы разобрались, переходим к настройке.
Настройка
Возможны два варианта настройки drd_server-a: удаленно или вручную.
- Для удаленной настройки нужно предварительно скопировать файл drd_server.install.php.txt из sites/all/modules/drd_server в корневую папку Вашего сайта, переименовать его в drd_server.install.php и дать права на выполнение (команда chmod +x имя_файла).
- Для ручной настройки никаких предварительных действий не требуется.
Настройка модуля drd_server
- Переходим в меню администрирования Конфигурация и выбираем пункт DRD Remote Settings, в поле Allowed referer IP addresses вводим IP адрес сайта, с которого будет производится мониторинг (на котором установлен drd модуль).
- Появится список с настройками для этого IP адреса. Пока ничего не вписываем.
Настройка модуля drd
- Переходим в панель администрирования сайта, с которого будем мониторить. После установки модуля drd в основном меню администрирования должна появиться вкладка Drupal Remote Dashboard. В ней есть пять вкладок: Cores, Domains. All domains, Modules, Settings. Переходим во вкладку Cores, выбираем Add new Drupal core.
- В поле Name указываем имя ядра (на Ваше усмотрение), в поле URL указываем адрес Вашего сайта.
- Если Вы хотите удаленно настроить drd_server и скопировали нужный файл в корневую директорию, то ставим галочку напротив Support remote installation и нажимаем кнопку Save. На этом настройка drd_server будет завершена, можно сразу переходить к пункту 10.
- Если настраивать drd_server планируется вручную, то галочку напротив Support remote installation не ставим и сразу нажимаем кнопку Save.
- После сохранения мы вновь вернемся на страницу Cores. Вверху страницы должен появиться текст. Его последняя строчка должна выглядеть примерно так:
or edit the remote AES keys manually: Implementation = "mcrypt", Cipher = "rijndael-128", Key = "ccbdAa4cxChhqLn", IV = "DJvK+AypvhL2nuXzO8nx0A=="
- Переходим на страницу администрирования сайта, на котором установлен модуль drd_server. До этого мы указали там только IP адрес, с которого будет производиться подключение. Теперь нужно вписать туда настройки AES: нажимаем кнопку Edit и заполняем поля значениями, что мы получили: Implementation = "mcrypt", Cipher = "rijndael-128", Key = "ccbdAa4cxChhqLn", IV = "DJvK+AypvhL2nuXzO8nx0A==".
- Нажимаем кнопку Save.
- Возвращаемся в меню администрирования сайта, на котором установлен drd модуль. Редактируем только что добавленный нами сайт, вписываем туда значение AES ключа: Key = "ccbdAa4cxChhqLn". Оно одинаковое для drd и drd_server модулей. Сохраняем.
- На этом настройка сайта на мониторинг завершена, осталось только обновить информацию о доменах.
- После установки у нас нет никакой информации о добавленном сайте, чтобы получить эту информацию нужно выбрать галочкой сайт, наверху страницы появится выпадающее меню с заголовком Actions. Выбираем Update server domains и нажимаем кнопку Execute.
- Переходим на вкладку Domains и выбираем галочкой новый домен. В выпадающем списке выбираем Update info и нажимаем кнопку Execute.
- Информация о домене обновлена, должна появиться версия Drupal-а, что установлен на этом сайте.
Во вкладке Modules можно посмотреть какие модули установлены, что нужно обновить. - На этом установка и настройка завершена, мы можем мониторить состояние сайта.
Скриншот основной панели мониторинга сайтов в модуле drd
Скриншот основной панели мониторинга сайтов в модуле drd по доменам
Для автоматического обновления информации о доменах и информации о них можно написать скрипт, использовать команды drush и запускать его с помощью cron.
Примеры команд
Обновление информации о доменах:
drush drd-action drd.server.domains
Обновление листа обновлений модулей и тем:
drush drd-action drd.list.updates
Возможные проблемы при настройке
-
Самая распространенная ошибка - это Failed connection.
Возникает она в том случае, если у Вас отсутствует файл xmlrpc.php в корневой директории, т.к. модулю drd для подключению к drd_server-у требуется этот файл. -
Модуль AES работает с двумя реализациями шифрования:
- PHP's Mcrypt extension.
- PHP Secure Communications Library (phpseclib).
Бывает такое, что php crypt (PHP's Mcrypt extension) не установлен на сервере и вы никак не можете его установить (к примеру, у Вас shared-хостинг), тогда Вам нужно вручную добавить phpseclib в директиву модуля AES:
- Скачиваем последнюю версию phpseclib с сайта http://phpseclib.sourceforge.net/.
- Создаем папку phpseclib в директории sites/all/modules/aes (команда mkdir phpseclib).
- Распаковываем архив phpseclib в эту папку.
- Переходим в панель администрирования —> Модули и включаем модуль AES.
Эту процедуру нужно проделать с обоими сайтами, на которых установлен drd и drd_server. После этого, при добавлении нового сайта мы сможем выбирать с помощью чего будем шифровать: PHP's Mcrypt extension или PHP Secure Communications Library (phpseclib).
-
Проблемы с мультисайтом.
Вы добавили новое ядро. Это мультисайтинг. Вы обновили информацию о доменах, никаких ошибок нет, но во вкладке Domains, в поле Installed напротив этих сайтов стоит значение No, т.е. модуль drd не видит установленного модуля drd_server на этих сайтах. Первый делом проверьте, на всех ли сайтах включен модуль drd_server. Если он включен, а информация всё равно не обновляется, то скорее всего проблема в редиректах. К примеру, у Вас редирект с "mydomains.com" на "www.mydomains.com", тогда Вам нужно выполнить следующие шаги:- Создать файл sites.php в директории sites, содержащий информацию о мультисайтинге:
- Сохраняем файл. После этого обновляем информацию о доменах. На этот раз всё должно пройти успешно.
<?php $sites = array( 'www.mydomain.com' => 'mydomain.com', 'mydomain.com' => 'mydomain.com', );
Как можно было так коряво объяснить какой модуль на какой сайт ставиться....
Есть сайт который мониторит, и те который мониторяться. На какой сайт какой модуль ставиться?
Заранее вам благодарен.
По тексту:
Модуль drd устанавливаем на тот сайт, с которого мы планируем мониторить сайты (поддерживается только Drupal 7), а модуль drd server устанавливаем на тот сайт, который планируем мониторить (поддерживается Drupal 6 и 7).