Очистка Drupal, или...

Как очистить Drupal от накопившегося «мусора», сократить объем базы данных, восстановить исчезнувшие административные настройки модулей, обеспечить корректность установки новых модулей, повысить производительность движка и, в итоге, сделать так, чтобы Drupal снова заработал, как новенький - Круглые глаза Редакция от 20.06.2018.

Создан 28.01.2011 13:48:46

Все может быть, все может статься -

Машина может поломаться,

Девчонка может разлюбить...

Но бросить пить... НЕ МОЖЕТ БЫТЬ!!!

© - Смайл дринк

- Для крайних заболеваний...

Чем Drupal отличается от девчонки или машины? Ничем: такой же конечный автомат, совершает (накапливает) ошибки, требует внимания и ласки (технического обслуживания и ремонта), см. рисунок ниже.

- Очистка Drupal

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

- Друпал - нет установок модулей

Похожих постов в форуме немало, просто искать тщательнЕЕ надо - Подмигиваю (смайл) Но эффект суслика, упомянутого в статье «CMS Drupal + AuthorIT против CMS Drupal + CKEditor», - имеет место быть. Модуль есть, а настроек не видно.

Внезапное исчезновение (отсутствие) в админке меню настроек установленных модулей Drupal, появление «белых экранов» при попытке открыть их ссылкой /admin/settings/<название модуля> часто (и справедливо) связывают с недостатком памяти, выделяемой под php хостинг-провайдером: если объем оперативки менее 64 Мб, то стоит ли вообще рассчитывать на устойчивую работу Drupal? Но как объяснить причину того, что схожие проблемы проявились у автора на хостинге it-patrol, где php по умолчанию выделяется 256 Мб оперативной памяти даже на самых недорогих тарифах? Все дело, похоже, в кривых руках и в безудержном стремлении к звездам - Ржунимагу! (смайл)

Итак, в настоящей статье:

  • рассмотрены «расстройства» функционирования Drupal со схожей симптоматикой, выявлены возможные причины их возникновения и намечены пути чудесного исцеления;
  • расписан комплекс мероприятий, направленных на предотвращение возникновения побочных эффектов;
  • приведена пошаговая схема лечения Drupal через временное зеркалирование;
  • проведен разбор полетов и подведены итоги.

Начнем.

Смотрите:
Drupal: функциональные расстройства и возможные их причины
Drupal: путь к исцелению
Очистка Drupal: предотвращение возникновения побочных эффектов
Очистка Drupal: зеркалирование домена синонимом
Очистка Drupal: зеркалирование синонима доменом
Очистка Drupal: разбор полетов и подведение итогов

Drupal: функциональные расстройства и возможные их причины

... и отправился искать свою звезду...

© Крематорий, «Космос»

В статье «Мультисайтинг на Drupal, или...» было рассказано о пошаговой реализации оного на Drupal через создание синонима alias.ru к существующему домену domain.ru, а также показаны преимущества мультисайтинга, в частности - возможности макетирования и отладки на живом хостинге без фатальных последствий. Лучшее - враг хорошего - Ржу! (смайл): воодушевленный успехом автор, отлаживаясь на синониме alias.ru, включил aggregator, настроил его, после чего попытался перенести настройки ленты новостей на domain.ru... Но не тут-то было: меню Сборщик RSS-лент по адресу /admin/content/aggregator попросту отсутствовало...

(Примечание - Работа проводилась с реальным доменом http://tdocs.su и его синонимом http://техническая-документация.рф, но для простоты изложения материала реальным доменом считаем domain.ru, а его синонимом - alias.ru)

И господь бы с ним, но... история изо дня в день повторялась и с другими модулями: Live Translation сутки трудился на domain.ru, после чего перестал формировать ссылки для обновления переводов; pathauto также установился без настроек и тихо занялся своим делом, едва не порушив тысячу с лишним синонимов, введенных автором вручную (из корыстных соображений, см. «CMS Drupal + AuthorIT против CMS Drupal + CKEditor»).

Что происходит? Грешить на память грешно, поскольку на it-patrol ее достаточно, «ядреные» модули стандартны, какие-либо дополнительные супертяжеловесы не устанавливались, см. рисунок ниже, да и на alias.ru все прекрасно работает...

- Модули Drupal

Но вспомним: Drupal для domain.ru был установлен более года назад, претерпел множественные инсталляции-деинсталляции модулей и тем оформления, целый ряд восстановлений из резервных копий базы данных, переезд с хостинга на хостинг - судьба его нелегка. Сайт же alias.ru - свеженькая, только что установленная копия Drupal...

Известно, что после десятка-двух инсталляций-деинсталляций программ свежеустановленная операционная система (речь о винде, разумеется) начинает тормозить, терять настройки и т.д. Терапевтическое лечение вроде чистки реестра редко приводит к положительному эффекту, радикально вопрос решается лишь хирургическим вмешательством - сносом винды и повторной ее установкой. Подобным образом успешно «лечится» и Drupal.

Drupal: путь к исцелению

Подраздел добавлен 30.01.2011 г. с учетом отзывов читателей с drupal.ru, и задача его - досказать недосказанное в базовом варианте статьи. Действительно, изначально путь к исцелению Drupal был прописан неявно, что и привело ко множеству справедливых замечаний. Исправим ситуацию. Итак, путь к исцелению:

  1. Имеются два сайта с единой базой данных и общей файловой системой, см. рисунок ниже;

    - Структура данных Drupal после установки мультисайтинга
  2. Сайт domain.ru, который надо спасать, грязный и глючный. Сайт alias.ru - никакой. На нем ничего нет;
  3. Для спасения domain.ru мы создаем его ЧИСТОЕ зеркало на сайте alias.ru, для этого:
    • расшариваем таблицы сайта domain.ru, содержащие контент, таксономию и меню изменением настроек в файле settings.php, см. инструкции в соответствующем подразделе;
    • удаляем все «системные» таблицы, принадлежащие сайту alias.ru, см. инструкции в соответствующем подразделе;
    • запускаем установку Drupal на alias.ru, в результате чего alias.ru становится ЧИСТЫМ зеркалом domain.ru, поскольку все «системные» таблицы Drupal при установке создает заново, а расшаренные таблицы не трогает, см. инструкции в соответствующем подразделе.
  4. Теперь, когда у нас есть ЧИСТОЕ зеркало alias.ru сайта domain.ru:
    • удаляем все «системные» таблицы, принадлежащие сайту domain.ru, см. инструкции в соответствующем подразделе;
    • запускаем установку Drupal на domain.ru, в результате чего domain.ru становится ЧИСТЫМ зеркалом alias.ru, поскольку все «системные» таблицы Drupal при установке создает заново, а расшаренные таблицы не трогает, см. инструкции в соответствующем подразделе.
  5. Вот и все! Мы восстановили сайт domain.ru без потерь данных, он стал чистеньким, новеньким, на нем прекрасно устанавливаются и настраиваются любые модули, работать он стал очень шустро. Что было непонятно, камрады?

Далее - все по шагам, а не в виде тезисов - Ржунимагу! (смайл)

Очистка Drupal: предотвращение возникновения побочных эффектов

Перед очисткой необходимо провести ряд важных подготовительных процедур:

  1. Создать backup (резервную копию) базы данных Drupal;
  2. Создать копии настроек модулей и блоков, включая визуальное расположение блоков;
  3. Внести изменения в настройки файла settings.php синонима alias.ru;
  4. Удалить таблицы базы данных, относящихся к alias.ru.

Смотрите:
Создание backup'а базы данных Drupal
Создание копий настроек модулей и блоков Drupal
Внесение изменений в настройки файла settings.php синонима alias.ru
Удаление таблиц базы данных, относящихся к alias.ru

Создание backup'а базы данных Drupal

Для создания backup'а базы данных Drupal удобно воспользоваться бесплатным скриптом Sypex Dumper Lite 1.0.8. Детали установки и настройки излишни, поскольку с Dumper'ом все просто и до слез понятно, но стоит упомянуть вот что:

  • Dumper очень быстро сжимает огромные базы MySQL и умеет сохранять стомегабайтные архивы непосредственно в файловой структуре сайта, что немаловажно при слабом uplink'е, свойственном асимметричному доступу в интернет. phpMyAdmin возится гораздо дольше и норовит создать архив базы на локальном пользовательском компьютере (альтернативных вариантов сохранения архива автор не обнаружил);
  • Dumper так же лихо распаковывает архивы и восстанавливает БД, phpMyAdmin же импортирует архив с локального компьютера, причем долго и очень часто с ошибками.

Таким образом, для решения задач архивирования-восстановления Dumper можно считать вариантом наиболее предпочтительным. Единственная мелочь: сам dumper.php имеет смысл сначала перекодировать в utf-8, а затем уж устанавливать на хостинге. В винде перекодировку можно сделать с помощью Dreamweaver или Sysutilizer's Kaboom: последний является бесплатной программой и обеспечивает возможность пакетной перекодировки файлов. В линуксе вопросы перекодировки решаются вообще без заморочек.

Создание копий настроек модулей и блоков Drupal

С бумаги читать проще, чем переключаться между окнами, поэтому решено было снять и распечатать скриншоты настроек модулей и блоков Drupal. В редакторе изображений GIMP не обнаружилось возможности скопировать окно браузера со скроллингом, поэтому пришлось воспользоваться виндовой программой SnagIT, у которой опция захвата Scrolling window имеется.

Внесение изменений в настройки файла settings.php синонима alias.ru

Для внесения изменений в настройки файла settings.php синонима alias.ru следует:

  1. Изменить права каталога, содержащего settings.php, см. рисунок ниже. Автор воспользовался клиентом gFTP;

    - Drupal, смена прав каталога
  2. По аналогии изменить права самого settings.php, хранящегося в указанном каталоге;
  3. Скачать settings.php на локальный компьютер;
  4. Привести содержимое settings.php к виду, изображенному на рисунке ниже;

    - Drupal, правка settings.php
  5. Закачать скорректированный settings.php на хостинг, в каталог /domains/domain.ru/sites.

Удаление таблиц базы данных, относящихся к alias.ru

Удаление таблиц базы данных, относящихся к alias.ru, удобно выполнить с помощью phpMyAdmin. Для этого следует открыть собственно базу данных, отметить таблицы, подлежащие удалению (все таблицы с префиксом al_), а затем из списка С отмеченными выбрать Удалить. И подтвердить операцию удаления.

На этом все подготовительные мероприятия можно считать завершенными.

Очистка Drupal: зеркалирование домена синонимом

Для зеркалирования домена синонимом следует:

  1. Строкой http://alias.ru/install.php запустить установку Drupal для alias.ru . По завершении установки (см. Установка Drupal для синонима домена в статье «Мультисайтинг на Drupal, или...») Drupal откроет окно, изображенное на рисунке ниже;

    - Окно Drupal сразу после установки
  2. Войти в режим администрирования и включить ранее установленную тему оформления (/admin/build/themes). Окно изменит свой вид, см. рисунок ниже;

    - Окно Drupal после восстановления темы оформления
  3. Включить модули book и PHP filter, если контент domain.ru организован в виде страниц подшивки и подгружается оператором include. Если страницы подшивки и фильтр PHP не использовались, то включать их не обязательно. Сайт полностью воспроизвелся в синониме, см. рисунок ниже.

    - Сайт восстановлен в синониме

Итак, для домена создано зеркало в виде синонима.

Очистка Drupal: зеркалирование синонима доменом

Для зеркалирования синонима доменом следует:

  1. Удалить из базы данных (ВНИМАНИЕ!) все таблицы с префиксом dm_, ЗА ИСКЛЮЧЕНИЕМ указанных в файле settings.php, см. рисунок ниже;

    - Drupal, правка settings.php
  2. Строкой http://domain.ru/install.php запустить установку Drupal для domain.ru;
  3. Повторно выполнить пп. 2 и 3 предшествующего подраздела статьи.

Очистка Drupal: разбор полетов и подведение итогов

Теперь словами о том, о чем было рассказано ранее, а также ответы на всевозможные «зачем» и «почему». Вопросы ожидаемы: зачем использовать мультисайтинг, когда можно просто сделать backup базы данных, удалить лишние системные таблицы и заново установить Drupal, получив, в итоге, такой же результат?

Ответ: конечно, можно, но для этого необходимы некоторые навыки работы с Drupal. Имеется печальный опыт организации мультисайтинга, в результате которого рухнул сайт http://author-it.ru. Как такое могло случиться - совершенно непонятно, но факт остается фактом. И еще: где же вы были раньше, почему не поделились своими умными и исчепывающими советами? Быть может, не пришлось бы и писать эту статью, вызвавшую черно-белую реакцию читателей...

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

По подготовительным процедурам: первые две вопросов не вызовут, по третьей - в файл settings.php добавлены таблицы, содержащие контент, таксономию и меню, которые необходимо спасти. После установки Drupal на синониме по поведению синонима сразу становится понятно, какие таблицы были упущены при отборе. У автора, в частности, блоки, расположенные в левой и правой колонках страницы, частично поменяли свой вес, т.е. визуально поменялись местами. Правда, восстановить взаимное расположение блоков - минутное дело, поэтому разрабатывать тему глубже автор не счел необходимым.

По четвертой процедуре: удалив служебные таблицы базы данных синонима, не содержащие контент, таксономию и меню, мы, фактически, снесли Drupal на синониме. В винде аналогичная процедура выполняется форматированием логического диска (носителя данных), на котором винда была ранее установлена.

- Структура данных Drupal после установки мультисайтинга

Теперь по установке Drupal на синоним. При запуске установки строкой http://alias.ru/install.php Drupal читает файл settings.php и начисто создает недостающие (удаленные нами системные) таблицы, не задевая при этом таблицы с контентом, таксономией и меню - общие таблицы, изображенные на рисунке (выше). В файловой системе, судя по всему, никаких изменений не происходит. При включении темы оформления получаем ЧИСТОЕ и на все 100 % работоспособное зеркало alias.ru домена domain.ru. И теперь уже нечего бояться за функционирование domain.ru - чистая установка Drupal с сохранением контента, таксономии и меню у нас уже есть. Все вышеизложенное похоже на установку винды на логический диск C, при этом данные, хранящиеся на логическом диске D, установкой не затрагиваются.

О создании зеркала синонима на домене. Все то же самое, только удаляются системные таблицы домена (форматирование диска C), а затем строкой http://domain.ru/install.php выполняется чистая установка Drupal на боевом домене и воспроизводится настройка модулей либо по скриншоту, либо с нуля, что значительно интересней, познавательней и дает возможность «тряхнуть стариной»...

Вот и все. Зеркало alias.ru, чтобы не дразнить поисковые системы, лучше перевести в режим обслуживания, указав на соответствующей странице текст приглашения на domain.ru - получится такой честный doorway'чик - Подмигиваю (смайл) Именно так автор поступил и с http://техническая-документация.рф, поскольку от кириллических доменов пока толку мало - разве что забить название компании для попадания на первые страницы поисковиков, хотя...

- Тдокс рейтинг гугла

и

- Тдокс рейтинг яндекса

«значит, все не так уж плохо на сегодняшний день» - Ржу! (смайл), хотя ситуация меняется при любом неосторожном движении...

И еще: настройки settings.php для alias.ru следует НЕЗАМЕДЛИТЕЛЬНО вернуть на родину, как показано на рисунке ниже, иначе при дальнейшем экспериментировании «поползет» domain.ru.

- Файл settings.php

Наверное, очищать Drupal способом, описанным в настоящей статье, имеет смысл при малейших подозрениях на некорректную работу движка, а также при непонятках, когда «Не устанавливается (не работает, не настраивается) модуль xyz!!!» Следует отметить, что предложенный способ очистки Drupal с гарантией 99,(9) % сработает не только на it-patrol, но и на любом другом хостинге, не говоря уж о локальных установках Drupal.

Подведем итоги: сделано все, что задумано - Смайл дринк Показано, как:

  • очистить Drupal от скопившегося «мусора», сократить объем базы данных,
  • восстановить исчезнувшие административные настройки модулей,
  • обеспечить корректность установки новых модулей,
  • повысить общую производительность движка и, в итоге,
  • сделать так, чтобы Drupal снова заработал, как новенький - Круглые глаза