1.2.1. Обновление модулей и ядра Drupal 8.

Очень часто для модулей и ядра Drupal 8 выходят обновления. Не все обновления стоит ставить, главное обращать внимания на обновления безопасности. Друпал подсвечивает сообщения о таких обновлениях красным цветом:

друпал обновления

О том как обновлять Drupal 8 можно прочитать на официальном сайте друпала:
https://www.drupal.org/node/1494290

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

1. Поэтому прежде чем делать обновления друпала и модулей сделайте полную копию сайта и базы данных.

Базу данных вы можете скопировать через adminer, вот статья по этому поводу:
http://drupalbook.ru/drupal/15-vybor-hostinga-pokupka-domennogo-imeni-perenos-sayta-na-hosting

2. Скачайте последнюю версию модуля (ядра друпала) для 8.x ветки.

3. Разархивируйте модуль или друпал отдельно от сайта. Нужно проверить папку vendor возможно чего в ней может не хватать, придется их потом скопировать отдельно. Дополнительные библиотеки могут добавиться с новой версией. Например я устанавливал Drupal Commerce и у меня были дополнительные библиотеки:

Drupal 8 update

Дважды проверьте что у вас есть копия сайта перед обновлением.

Я не уверен что все пройдет гладко если залить файлы поверх с заменой. Я пробовал так обновляться с одной бета версии на другую бету версию, сайт поломался. Но когда обновлял файлы таким образом с 8.0.1 до 8.0.5 все прошло хорошо. Но думаю такое не сработает с переходом на ветку 8.1.0. 

4. Установите режим обслуживания, чтобы никто не заходил на сайт и не генерировал ошибки пока вы выполняете обновления:
/admin/config/development/maintenance
Не забудьте снять галочку после обновления, чтобы вернуть сайт в рабочее состояние.

5. Дальше нужно удалить все файлы друпала, кроме папки /sites/themes//modules. В sites лежат файлы содержимого: фотографии, конфигурации, сгенерированные файлы; в папке themes наши кастомные темы для друпала; в папке modules наши дополнительные модули для друпала. Тут нужно прочитать мануал до конца прежде чем кинуться удалить файлы. Проверьте в третий раз, что у вас есть копия сайта, чтобы если что вернуться обратно. В это время когда вы удалите все файлы, сайт не будет работать пока вы не скопируете файлы нового ядра друпала обратно, а друпал состоит из ~10000 файлов, если у вас медленный интернет и вы будете копировать файлы по фтп в 2-3 потока, то это может растянуться на час полтора. Поэтому принимаем меры, чтобы это все прошло быстрее. Опять же я описываю общий случай, когда ваш сайт лежит уже на хостинге, обновиться локально на OpenServer'е проще.

6. Теперь нужно скопировать все файлы новой версии друпала на сервер, кроме папки /sites, /themes/, /modules. Учимся работать с SSH и командной строкой (если хостинг для сайта позволяет использовать SSH , прочитайте доступы к хостингу или обратитесь в тех поддержку с вопросом, а есть ли возможность использовать SSH на хостинге). Через командную строку мы сможем быстро разархивировать весь друпал, нам нужно будет только залить файл архива на сайт:

Для архива tar.gz:

tar -xvzf archive.tar.gz 

или zip архива:

unzip archive.zip

Если есть доступ по SSH, можно воспользоваться и WinSCP:

https://winscp.net/eng/docs/lang:ru

 Вы можете воспользоваться его коммандами для разархивации:

https://winscp.net/eng/docs/custom_commands

 Или пересоздать tar.gz архива, чтобы в нем лежали сразу файлы друпала, а не папка с файлами друпала. В этом вам может помочь 7Zip:

http://www.7-zip.org/

 Пересоздаете архив, сначала выделяете все файлы и через контекстное меню выбираете 7Zip -> Add to archive. Archive формат выбираете tar. После того как tar архив будет создан, выбираете tar архив и снова в контекстном меню выбираете 7Zip -> Add to archive. Теперь будет доступно создание архива gzip (именно gzip, tar не сжатый формат архива, zip не поддерживаете контекстным меню Winscp, а gzip или tar.gz архив). Заливаете архив на сервер (также через winscp) и на сервере уже через меню нажимаете разархивировать:

winscp

7. Иногда нужно изменить settings.php вручную, но обычно об этом вы всегда сможете прочитать на странице статуса сайта:
/admin/reports/status

8. Если вы изменяли .htaccess, robots.txt файлы, то внесите снова эти правки.

9. Если у вас был свой favicon.ico, то скопируйте его снова.

10. Залогинтесь на сайт под администратором.

11. Запустите файл update.php, например http://drupalbook.ru/update.php

12. Отключите режим обслуживания.
/admin/config/development/maintenance 

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

 

 

Комментарии

Добавить комментарий

Войти, используя Loginza Google Account Yandex Mail.ru Vkontakte Facebook
(If you're a human, don't change the following field)
Your first name.
(If you're a human, don't change the following field)
Your first name.

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.

Обновление ядра всегда лучше

Обновление ядра всегда лучше делать сначала локально. При этом желательно, чтобы все файлы локальной версии были под контролем GIT. С помощью GIT вы всегда сможете откатить сделанные изменения очень быстро. Но не только в этом его преимущество. После успешного локального обновления и коммита изменений, GIT позволяет сделать патч всех измененных файлов в архив с сохранением директорий, что существенно облегчает обновление файлов на хостинге. Это можно сделать командой:
git diff-tree -r --no-commit-id --name-only --diff-filter=ACMRT 7303a1cbf43bd25848784713960d5e2aeac48475 | xargs tar -rf mytarfile.tar
где
7303a1cbf43bd25848784713960d5e2aeac48475 - это хэш коммита
mytarfile.tar - архив со всеми измененными файлами.

Да через гит, конечно,

Да через гит, конечно, удобнее да где его взять на shared- хостинге. Вот я и боюсь, что эти сложности отпугнуть людей от использования друпала. Я думаю сделать перевод статей про обновления с помощью git и drush:
https://www.drupal.org/node/359234
https://www.drupal.org/node/2550801