Drupal собственный сервер обновлений для модулей. Как обновить Drupal — подробная инструкция с картинками. Обновление модулей и переводов Drupal
Обновлять Drupal до последней версии крайне необходимо, так как обновления содержат исправления ошибок, в том числе и таких, которые позволяют обойти защиту сайта.
В данной статье будет рассмотрен вопрос как обновить Drupal 7 с одной минорной версии к другой (например с 7.0 на 7.2 или 7.2 до 7.4. и так далее).
Обновление основных (мажорных) версий, таких как с 5 на 6 или с 6 на 7 версию - гораздо более обширный вопрос и рассматриваться не будет.
Перед обновлением, выработайте в себе привычку смотреть заметки к релизу, где вы можете получить исчерпывающую информацию о том какие изменения были сделаны. Также, там вы можете увидеть вносились-ли какие-либо изменения в файлы.htaccess, web.config, robots.txt, или default settings.php.
Прежде чем начинать процесс обновления, запомните основную вещь: Обязательно делайте резервную копию всего сайта, то есть файлов и базы данных!
Это позволит вам в случае возникновения каких-либо непредвиденных обстоятельств, в кратчайшие сроки вернуть работоспособность сайту, с дальнейшим поиском причин уже на тестовой инсталляции Drupal.
Для того, чтоб обновить Drupal есть два пути. Первый предусматривает работу исключительно руками, при помощи браузера, файлового менеджера и архиватора. Второй способ заключается в использовании командной оболочки Drupal - drush. Я, конечно же рекомендовал-бы вам использовать второй способ, но выбор всегда остается за вами.
Обновление Drupal через браузер, файловый менеджер и архиватор
Шаг 1: Проверка доступных обновлений
Для начала, для обновления Drupal, нажмите "Reports" (Отчеты), затем "Available updates" (Доступные обновления). Если проверка обновлений производилась давненько, нажмите ссылку Check manually (Проверить вручную).
На странице "Available updates" (Доступные обновления) будут показаны обновления, которые доступны для модулей и ядра системы. Ядро системы необходимо скачать отдельно, установить его непосрдственно из административной консоли нельзя.
Шаг 2: Загрузка файлов обновления
Шаг 3. Переведите сайт Drupal в режим обслуживания
Для того, чтоб у пользователей вашего сайта не возникло проблем, следует перевести сайт в режим обслуживания
- Откройте меню Конфигурация , или ссылку admin/config/development/maintenance
- В разделе разработка откройте ссылку Режим обслуживания .
- Установите чекбокс Перевести сайт в режим обслуживания
- Измените, если это критично, Сообщение о режиме обслуживания и нажмите кнопку Сохранить настройки
Шаг 4: Создайте резервную копию
Для того, чтоб создать резервную, имеется множество способов, например воспользоваться инструмекнтарием, предоставляемым вашим хостинг провайдером, с помощью модуля Backup and Migrate , или руками. Главное, чтоб вы сделали резервную копию как базы данных, так и файлов сайта.
Шаг 5: Обновите файлы ядра Drupal
- Перед выгрузкой файлов, в корневой папке вашего сайта удалите все содержимое, кроме директории sites (еще раз напоминаю про резервную копию).
- Разархивируйте только что скачанный архив
- Скопируйте распакованное содержимое, за исключением директории sites
, в корневую директорию сайта (напоминаю про директорию sites
).
Обратите внимание : Удалять директорию sites не обязательно, но ее копирование может привести к потере данных, созданных в ходе работы с сайтом. Убедитесь, что существующая на сервере директория sites осталась без изменений.
После выгрузки, обновите страничку "Доступные обновления" ("Available updates") . Версия сайта должна стать актуальной (зеленой вместо красной).
Шаг 6: Запустите менеджер обновления
Откройте страничку "Modules" ("Модули") и в строке "Always run the update script each time a module is updated" нажмите ссылку update script . Отктроется мастер обновления базы данных.
Overview - Нажмите "Continue".
Шаг 4. Переведите сайт назад в рабочий режим
$ drush vset --yes maintenance_mode 0;
Вот и все. Как видите, использование Drush существенно сократило работу. Всего пару команд и все готово. Так что, если есть возможность, обязательно используйте Drush и не только при обновлении Drupal.
(вполне полезна, содержит пояснения многих моментов), скажу, что изменений мало. По большому счёту – только движение по меню. А так, делали обновление в старой версии – сделаете и в новой. «Шаги», которые мы совершим – прежние, а сам процесс приятнее.
Надеюсь, вы уже включили модуль «Toolbar» («Панель инструментов администратора») и сделали локальную копию сайта? Тогда пройдёмся по пунктам:
- Заходим на сайт.
- Регистрируемся в качестве «первого» пользователя.
- Переводим в режим обслуживания.
По меню: «Конфигурация» => «Разработка», «Режим обслуживания». Ставим «галочку» на «Перевести сайт в режим обслуживания» и нажимаем «Сохранить конфигурацию».
- Если на сайте используется «своя» тема оформления, лучше вернуть стандартную:
Вверху в административном меню, щёлкаем на пункт «Оформление» (/admin/appearance ), под темой «Garland », а лучше – «Seven » (она более удобна для администрирования) нажимаем «Включить» и «Установить по умолчанию».
Чтобы не провоцировать лишние ошибки, по-прежнему рекомендую отключать нестандартные модули, если у вас такие имеются. Как попасть в список модулей:
открываем в административном меню, пункт «Модули» (/admin/modules ).
- Сбрасываем кэш:
«Конфигурация» => «Разработка», «Производительность». Жмём кнопку «Очистка кэша».
(/admin/config/development/performance )
Маленькое отступление .Что делать если вы случайно «разлогинились» , или пытаетесь зайти на сайт с другого компьютера, или на сайт потребуется зайти другим пользователям, тоже имеющим расширенные права (достаточные для работы с сайтом в режиме обслуживания)?
<имя сайта>/user/login или <имя сайта>/?q=user/login .
Например, если ваш сайт называется «Test.Ru», то это будет: Test.Ru/?q=user/login
- Дальше, заменяем (обновляем) файлы.
- 1. В случае, если обновляем ядро Друпала.
В «корневой» папке сайта удаляем все директории, кроме «Sites ». И все файлы, кроме:
- «.htaccess »;
- «favicon.ico » – если он у вас есть;
- «robots.txt »;
- при наличии – оставляем файлы подтверждения подлинности, типа для Google и Яндекса (google***.html , yandex***.html );
- и иконки для iOS-устройств (apple-touch-icon***.png ), если имеются.
Так же, если Вы используете какие-то специальные настроечные файлы, «картинки» к ним, в корне своего сайта – их тоже надо оставить в покое (иначе, придётся восстанавливать).
После этого, в папку сайта распаковываем новый Drupal, за исключением тех файлов и папки, что мы оставили.
При обновлении версия ядра Друпал (если будут обновляться только модули – этого делать не надо ), рекомендую, для повышения «чистоты», провести микро-инсталляцию. Чтобы её спровоцировать – в папке «Sites/Default» надо удалить файл «Settings.php» и воссоздать заново копированием из файла «Default.Settings.php».
Эта подмена приведёт к тому, что при обновлении, Drupal начнёт установку, как в первый раз, в ходе которой вам надо снова указать действующие имя базы данных, логин и пароль. Надеюсь, вы их помните? (Записаны в «старом» «Settings.php»).
Напоминаю, если сомневаетесь – не делайте этого! А если сделаете – поменяйте права доступа ко вновь созданному файлу «Settings.php» на «664», rw- rw- r-- (максимум – «775», rwx rwx r-x). Не беспокойтесь, если вдруг забудете, программа установки вам напомнит.
- 2. Если обновляем модуль(и).
Заходим в папку «Sites/All/Modules», удаляем «старый» модуль, а на его место – распаковываем новый.
- Набрав в интернет-проводнике (IE, Opera, FireFox или что там у Вас?),
<имя сайта>/update.php – выполняем обновление (или микро-установку, если меняли файл «Setting.php»).
В ходе обновлений могут появляться сообщения об ошибках. Чаще всего они возникают при кардинальных изменениях: не могут выполниться какие-то SQL-запросы к базе данных сайта, отсутствуют или присутствуют какие-то лишние таблицы, обнаруживаются какие-то проблемные поля, или несоответствие типов данных.
Что делать, если возникли подобные трудности при обновлении модулей? Очень просто:
- Как и предлагает программа обновления, перейти в управление модулей.
- Снять «галочки» напротив тех модулей, которые не могут обновиться или мешают обновлению.
- Потом, заходим в каталог сайта и удаляем эти модули физически.
- Снова выполняем обновление, но уже без них (<имя сайта>/update.php ).
Примечание: некоторые говорят, что этого делать не обязательно. А я – делаю, т.к., в большинстве случаев это приводит к тому, что информация о сбойном модуле в базе данных затирается.
- После этого, распаковываем новый правильный модуль.
- Снова выполняем обновление (ошибок быть не должно!).
- Если всё хорошо – заходим в управление модулей и снова его (или их) включаем (ставим «галочку»).
Продолжаем обновление. В случае успеха – всё возвращаем назад:
- Возвращаем ранее отключенные модули (если вы что-то отключали).
- Возвращаем родную тему сайта.
- Выполняем проверку оставшихся ошибок и исправляем их:
«Отчёты» => «Отчёт о состоянии» (/admin/reports/status )
- Выполняем проверку обновлений (вдруг что-то не так стало или появилось ещё какое-то обновление):
«Отчёты» => «Доступные обновления» (/admin/reports/updates )
- Делаем копию базы и сайта после обновления. (Это на любителя!)
- Снимаем сайт с обслуживания.
Важный вопрос: права доступа к папкам и файлам. В принципе, всё осталось, как и в «шестой» версии Друпал. Отличие только по файлу «Settings.php» - «семёрка» прямо рекомендует (после инсталляции) выставить ему права на уровне максимум «644». Не забывайте!
За то время пока я писал гайды, ядро Drupal было обновлено.
Было бы глупо не добавить ко всем гайдам еще и информацию по обновлению ядра системы. Поэтому если появилась необходимость обновить ядро, а вы не знаете как это делать, то этот гайд для вас.
Итак, появилось новое ядро. Модули обновляются автоматически при помощи встроенных средств и под силу даже ребенку. Ядро не может обновиться самостоятельно, это необходимо делать собственноручно. В этом нет ничего страшного, если подходить к делу с полной серьезностью, особенно если это продакшен.
Что же делать? Обновляться, причем чем скорее после релиза новой версии, тем лучше. Особенно для обновлений с пометкой «Не безопасно!», как на скриншоте выше.
Погнали. Для начала качаем свежую версию друпала . После этого делаем следующие действия:
Теперь ядро будет самой последней версии.
Вот такими простыми шестью шагами можно обновить версию друпала.
На заметку
- Удалите и всегда удаляйте файлы из корня сайта: CHANGELOG.txt, COPYRIGHT.txt, INSTALL.txt, LICENSE.txt, MAINTAINERS.txt, README.txt - это самая первая дыра в безопасности сайта. На основе данных файлов можно определить версию системы, соответственно зная версию и её дыры, будет очень легко взломать сайт.
- Всегда обновляйте ядро. Да, лень, муторно, но безопасность превыше всего.
- Ничего не храните в ядре. Именно поэтому мы удалили все кроме папки sites и двух файлов. Те два файла могут быть у каждого свои, они не меняются из версии в версию, а у сайтов они подвергаются изменениям. Случайно заменив их, может всплыть проблема. Папку sites мы не трогали, так как в ней также не происходит абсолютно никаких изменений. Эта папка - хранилище файлов системы, ничего важного для обновления там нет. Все остальные папки и файлы могут быть подвержены обновлению. Я уже писал - ни в коем случае не трогайте файл и папки ядра. Все что надо храните в sites. И не редактируйте код ядра, для этого есть Drupal API.
- Если вы выключили по каким-то причинам модуль updates, то вы не узнаете о том что вышла новая версия ядра на своем сайте. В таком случае проверяйте наличие обновлений вручную.
- И самый банальный совет - не делайте апдейт без бэкапов.
Перед обновлением сделайте резервную копию файлов и базы данных
Обновление между основными версиями
5.x и 6.x (перед обновлением до версии 6.x обновите Друпал до последней версии в ветке 5.x, а также, обновите до последних версий все дополнительные проекты).
Проверьте наличие нужных проектов для ветки 6.x. Если какие-то проекты для новой ветки не готовы, то вы можете принять решение отложить обновление.
- Перейдите на страницу «Управление - Конфигурация - Обслуживание» и переведите сайт в режим обслуживания
- Перейдите на страницу «Управление - Строение сайта - Темы» и выберите тему Garland
- Перейдите на страницу «Управление - Строение сайта - Модули» и выключите все дополнительные модули. Если вы знаете, что какие-то из текущих модулей вам не будут нужны в новой версии и их данные вам не нужны, то удалите их через вкладку «Удаление», а потом удалите их файлы. Файлы остальных модулей оставьте на месте
- Удалите файл sites / default / default.settings.php
- Убедитесь, что файл sites / default / settings.php доступен для записи (в процессе обновления он будет преобразован в формат 6.x)
- Удалите папки дополнительных проектов для версии 6.x и скопируйте на их место версии проектов для версии 7.x (прочтите файл UPGRADE.txt каждого проекта)
- Перейдите на страницу «Управление - Строение сайта - Модули» и включите один дополнительный модуль
- Запустите скрипт update.php перейдя на URL example.com / update.php. Это действие обновит таблицы этого дополнительного модуля в базе данных
- Сделайте резервную копию файлов и базы данных после того, как скрипт update.php завершит работу
Затем включите следующий модуль и если обновление пройдёт успешно, то сделайте резервную копию ещё раз. Повторяйте это между обновлением каждого модуля, чтобы при возникновении проблемы иметь возможность вернуться к последнему обновлению. Если при запуске скрипта update.php произойдёт ошибка обновления, то восстановите предыдущее состояние сайта, сохраните сообщение об ошибке и попросите помощи на форуме. Не продолжайте обновление до решения проблемы, пропуская сообщения с ошибками.
Если есть версия темы для Друпала 6.x, то включите её.
Обновление между неосновными версиями
Например, 7.0 и 7.1 (обновляться между неосновными версиями последовательно не нужно, например, если у вас установлена версия 7.0, то можно обновить Друпал сразу до версии 7.2).
- Войдите в аккаунт пользователя №1
- Перейдите на страницу «Управление - Конфигурация - Разработка - Обслуживание» и переведите сайт в режим обслуживания
- Удалите папки ядра за исключением папки sites и файлы ядра в корневой папке
- Если вы вносили изменения в файлы.htaccess и robots.txt, то нужно будет внести изменения и в новые файлы
- Если версия включает изменения в файле default.settings.php (смотрите примечание к версии), то нужно будет внести изменения в новый файл
- Распакуйте файлы новой версии на место удалённых старых
- Внесите изменения в файлы.htaccess и robots.txt (если нужно)
- Создайте файл settings.php, скопировав и переименовав его из файла default.settings.php и внесите в него изменения (если нужно)
- Запустите скрипт update.php перейдя на URL example.com / update.php. Это действие обновит таблицы ядра в базе данных
- Перейдите на страницу «Управление - Отчёты - Статус» и убедитесь, что все показатели в норме
- Перейдите на страницу «Управление - Конфигурация - Разработка - Обслуживание» и выведите сайт из режима обслуживания
Получив достаточный опыт обновления ядра Drupal’а (а так же модулей и тем), прошу запомнить одну простую, но очень часто проходящую мимо ушей программистов вещь: всегда делайте резервное копирование ! Если есть возможность сохранять резервную копию как MySQL, так и файловой структуры - пользуйтесь этим по-максимуму. А теперь все по порядку…
Итак, представим следующую ситуацию. У нас есть сайт работающий на Drupal версии 6.22 использующий достаточно популярные модули views, pathauto, transliteration и так далее. Нам необходимо обновить ядро drupal до последней, 7-й версии. Стоит заметить, на момент наших обновлений, уже существует версияDrupal 6.24 , а последняя стабильная версия - Drupal 7.12 .
План действий:
- Обновить ядро Drupal 6, до самой последней, стабильной версии. Т.е. до Drupal 6.24
- Обновить все модули до последних версий
- Подготовить текущую инсталляцию Drupal 6.24 для миграции на новую версию Drupal 7.12 .
- Установить последние версии используемых модулей для Drupal 7.12.
- Обновить/переверстать шаблон использовавшийся в Drupal 6 до актуальной версии
- Подготовить сайт к запуску на обновленной инсталляции
- Наградить себя пивом
Для наших задач существует прекрасный инструмент под названием drush и если есть доступ к серверу по протоколу SSH - обновление займет считанные минуты, но про этот способ я расскажу в следующей статье.
- Скачиваем последнюю, стабильную версию Drupal 6 и свежие версии используемых нами модулей которые нуждаются в обновлении.
- Перед обновлением модулей и ядра - делаем бэкап базы данных используя phpMyAdmin. Если есть возможность использовать автоматические «дамперы» - никто же не запрещает, пользуемся!
- Переводим сайт в режим технического обслуживания.
- Обновляем ядро Drupal, для этого удаляем все файлы из корня нашего сайта кроме папки sites (имеется в виду что все, абсолютно все файлы используемые нашим сайтом (темы, модули, css, изображения и прочее) находятся в папке sites/название домена ). После удаления, закачиваем в корень сайта последнюю версию ядра - Drupal 6.24 . Опять же, кроме папки sites . Логично, она же у нас уже есть. :)
- Обновляем все модули до последних версий не забывая обновлять структуру базы данных используя файл update.php .
- Если сайт использует темы оформления скачанные с сайта drupal.org - их так же необходимо обновить.
- Изменяем тему оформления на одну из стандартных, я рекомендую Garlad.
- Отключаем кэширование и чистим кэш.
- После обновления всех модулей и тем делаем очередной бэкап нашей базы данных. Этот бэкап - стабильно работающий сайт со всеми обновлениями на текущий момент. При миграции на Drupal 7, этот бэкап считаю самым важным. Едем дальше.
- Отключаем все сторонние модули.
- Удаляем все языки отличные от английского.
- Выходим с учетной записи администратора.
- Скачиваем Drupal 7.12
- Снова удаляем все файлы кроме папки sites и заливаем в корень Drupal 7.12 (минуя папку sites).
- Вышли с учетной записи администратора - нам необходимо разрешить обновление структуры сайта без проверки на роль администратора, для этого вносим необходимы правки в файл settings.php нашего сайта.
- Запускаем update.php и обновляем структуру нашей базы данных для Drupal 7.
- После процедуры обновления убеждаемся что наш сайт работает без ошибок, если это не так - устраняем их. В любом случае у нас есть бэкап. :)
- Опять же, делаем бэкап.
- По очереди устанавливаем используемые модулей для Drupal 7 последних версий. После установки каждого модуля обновляем базу данных при помощи update.php.
- Переделываем/скачиваем тему оформления под версию Drupal 7.
- Подготавливаем сайт к запуску (добавляем русский язык, обновляем переводы для всех модулей и ядра и т.д.).
- Снимаем сайт с режима технического обслуживания.


