Обновление системы CMS Drupal
До начала обновления убедитесь, что ваш хостинг для
сайта удовлетворяет требованиям той версии, до которой вы обновляетесь. См. Требования к хостингу и раздел REQUIREMENTS в файле
INSTALL.txt
. Для обновления системы выполните следующие шаги:
- Сделайте копию базы данных и файлов. Копия базы данных понадобится для восстановления работоспособности сайта в случае неудачного завершения обновления. В папке
/files
хранятся загруженные на сайт файлы, а в папке /sites
хранятся настройки сайта.
- Проверьте работоспособность копии базы данных. Импортируйте базу данных на тестовый сайт, чтобы убедиться в том, что она не повреждена. Не стоит пренебрегать этим пунктом.
- Войдите в аккаунт №1. Это главный аккаунт на сайте. Только у пользователя №1 есть доступ к файлу
/update.php
запуск которого потребуется при обновлении. Не закрывайте браузер и не выходите из аккаунта до тех пор, пока вы полностью не завершите процесс обновления.
- Перейдите на страницу Управление → Конфигурация → Обслуживание и переведите сайт в офлайн для безошибочного обновления базы данных, а также для того, чтобы посетителям не показывались сообщения выводимые скриптом обновления.
- Перейдите на страницу Управление → Строение сайта → Темы и включите стандартную тему Garland.
- Перейдите на страницу Управление → Строение сайта → Модули и выключите дополнительные модули.
- Удалите старые системные файлы.
- Скопируйте на их место новые системные файлы.
- Скопируйте обратно папки
/files
и /sites
, файлы .htaccess
и robots.txt
или внесите необходимые изменения в новые версии этих файлов (если вы их правили ранее).
- Убедитесь, что новые файлы настроек содержат верную информацию.
- Запустите файл
/update.php
. Этот действие обновит стандартные таблицы в базе данных.
- Убедитесь, что версии всех дополнительных модулей и тем поддерживают новую версию системы. Для крупного обновления, такого как переход с одной ветки на другую (например с Drupal 5 на Drupal 6, нужно будет обязательно скачать новые версии модулей и тем, т.к. при смене главной версии меняется API и версии модулей и тем предназначенные для работы с 5.х не будут работать с 6.х.
- Перейдите на страницу Управление → Строение сайта → Модули, включите дополнительные модули и снова запустите файл
/update.php
.
- Перейдите на страницу Управление → Строение сайта → Темы и включите используемую вами тему.
- Перейдите на страницу Управление → Конфигурация → Обслуживание и переведите сайт в онлайн.
Отметьте: запустить обновление не входя в аккаунт №1 можно следующим образом:
- Откройте файл
settings.php
.
- Измените строку
$update_free_access = FALSE;
на $update_free_access = TRUE;
.
- Запустите файл
/update.php
.
- После завершения процесса обновления измените запись в
settings.php
обратно на $update_free_access = FALSE;
Альтернативное пошаговое описание обновления CMS Drupal
1.Переводим сайт в режим на тех обслуживании (admin/settings/site-maintenance).
2.Делаем бекапы файлов и базы данных.
3.Выключаем все левые модули предварительно запомнив какие были включены – можно просто сохранить страничку с модулями.
4.Удаляем все папки кроме:
files\ - этой папки даже в обновлении нетsites\ - если залить в неё поверх новую, то просто обновится default.settings.php, а settings.php будет жить дальше.
5. В папке sites\ изменяем права на запись с 0644 на 0755.
6.Заливаем все файлы нового движка.
7.Сморим как изменился файл \sites\default\default.settings.php в новой версии движка по сравнению с нашим \sites\default\settings.php и если он таки поменялся, добавляем изменения в наш \sites\default\settings.php.
8.Заливает с бекапа поверх нового движка файлы:
.htaccessrobots.txtфалы подтверждения гугла, яндекса, и другие файлы – которые менялись в процессе.
Советую здесь перед заменой сравнить файлы через Shift + F1 в тотале чтобы, не дай бог, не потерять пару строчек изменения.
9.В папке sites\ изменяем права на запись обратно с 0755 на 0644.
10.Запускаем /update.php и выбираем все максимальные циферки в обновлениях модулей.
11.После обновления проверяем Отчёт о состоянии (admin/reports/status) и если никаких замечаний по обновлению нет – также запускаем cron и проверяем вдруг что-то еще обновилось.
12.Если всё нормально – в папку модулей копируем наши отличные от ядра модули. Также не помешало бы на данном этапе удалить не нужные стандартные модули, т.к. не использую я много модулей и места под сайт выделено не густо.
13.Заходим в раздел Модули и подключаем все необходимые (подглядывая в ранее сохраненную HTML).
После этого может появится много предложений обновить наши нестандартные модули. Если предложат - качаем все обновившиеся модули.
•Перед обновлением модули отключать не нужно. Необходимо удалить старые файлы модулей и залить новые.
•После этого запустить /update.php и в перечне модулей выбрать наиболее высокие циферки.
При обновлении могут возникать различные ошибки. На ниже перечисленные ошибки я не реагировал:
user warning: TABLE 'captcha_sessions' already EXISTS queryuser warning: Duplicate KEY name 'pid' queryuser warning: TABLE 'taxonomy_menu' already EXISTS query
Тут всё просто – кое что не смогло добавиться из за того что оно уже есть… Это, как мне показалось, не критично.
А вот такие ошибки настораживают:
user warning: Unknown COLUMN 'access' user warning: KEY COLUMN 'access' doesn't exist in table query
Эти ошибки означали что в запросах есть поле 'access' , которого нет в базе. Обновление относилось к модулю xmlsitemap. В результате у меня не создавался моя карта сайта и в логах постоянно светились ошибки о неизвестном поле 'access'. Ошибку удалось исправить переустановкой обновлений модуля xmlsitemap, предварительно отчистив все записи таблицы xmlsitemap. Почему ошибка возникла – сказать затрудняюсь. Мне кажется, вовремя обновления мог запуститься cron и не дать изменить базу. Но тем не менее ошибка ушла.
14.Можно, а пожалуй даже нужно из корня сайта удалить следующие файлы:
CHANGELOG.txt COPYRIGHT.txt install.php INSTALL.txt INSTALL.mysql.txt INSTALL.pgsql.txt LICENSE.txt MAINTAINERS.txt UPGRADE.txt
Они уже не пригодятся.
15.Когда всё обновлено и работает – выводим сайт из режима техобслуживание.