Если вы ставили друпал, скачивая его с сайта drupal.org с этой страницы:
https://www.drupal.org/project/drupal
То у вас могут возникнуть проблемы с обновлением Drupal, потому что Drush и Composer не смогут обновить его обычным способом. Поэтому вам придется обновлять друпал заменой файлов или поменять структуру файлов в проекте, чтобы композер мог обновлять Drupal. В этой статье мы разерем первый вариант как обновить Drupal без Drush и Composer.
Прежде чем обновлять друпал нужно сделать полный бекап сайта. Скопируйте все файлы и базу данных. Какие-то сбои происходят очень редко, но на восстановление сайта может уйти время, поэтому лучше подстраховаться и сделать бекап.
Если ваш сайт уже выложен в интернет и отключение сайта даже на время может отразится на продажах вашей компании или компании вашего клиента, то лучше всего сделать копию сайта и попробовать обновить сначала копию, а потом после успешного обновления повторить все и на живом сайте или заменить сайт на продакшене сайтом обновленным локально.
По ходу обновления записывайте все свои действия. ошибки, уведомления, чтобы потом проще было повторить все действия.
Не пытайтесь обновить Drupal 8 сайт по FTP на удаленном сервере, это займет очень много времени. Если у вас есть SSH доступ на удаленный сервер, вы можете скачать drupal файлы через wget это займет гораздо меньше времени.
Теперь когда у вас есть бекап сайта, приступаем к обновлению.
1. Залогинтесь на сайт под администратором, у которого есть доступ к обновлению базы данных через update.php и который может поставить сайт в режим обслуживания.
2. Поставьте сайт в режим обслуживания:
/admin/config/development/maintenance
Конфигурация > Режим обслуживания
Administration > Configuration > Development > Maintenance mode
1. Удалите папки core, vendor из корня сайта.
Как только вы удалите эти папки сайт уже перестанет работать и будет недоступен.
2. Если вы изменяли файлы .htaccess, robots.txt, то сохраните эти изменения потому что все файлы которые лежат прямо в корне сайта тоже нужно будет обновить.
Также сохраните изменения из файла composer.json, если вы ставили какие-то библиотеки или модули через composer, вам придется установить их заново через композер. Если измений очень много, то лучше не перезаписывать composer.json и composer.lock файлы и оставить их как есть.
3. Иногда изменения могут затронуть default.settings.php, а это значит что вам нужно будет добавить изменения в свой settings.php файл. Вы можете найти список изменений для вашей версии Drupal, перейдя по ссылки View all releases на страницы проекта Drupal:
https://www.drupal.org/project/drupal
Но обычно такое происходит редко и если вы обновляете минорную версию друпала (8.5.x -> 8.5.y), то можете пропустить этот шаг.
4. Качаем новую версию Drupal со страницы проекта друпала или со страницы Views all releasers.
https://www.drupal.org/project/drupal
Из файлов новой версии мы копируем папки vendor, core и все файлы из корня сайта.
И теперь закидываем эти файлы на наш сайт.
Вы также можете использовать SSH на удаленном сервере чтобы скачать файлы друпала в папку которая находятся снаружи вашего сайта:
wget https://www.drupal.org/files/projects/drupal-x.y.z.tar.gz tar -zxvf drupal-x.y.z.tar.gz
И потом закидывать файлы на ваш сайт внутри сервера:
cp -R drupal-x.y.z/* drupal-x.y.z/.htaccess /path/to/your/installation
Если все-таки FTP это единственный путь, то используйте Filezilla и копируйте в 10 потоков, чтобы процесс шел быстрее:
5. Теперь возвращаем изменения в файлах robots.txt, .htaccess, default.settings.php, settings.php, composer.json.
6. Дальше нужно запустить файл update.php, чтобы применить изменения в базе данных для новой версии друпала. Для этого можно добавить в настройках settings.php следующую строку:
$settings['update_free_access'] = TRUE;
Это позволит запускать от любого пользователя файл update.php.
Запускаем файл /update.php:
7. Проверяем что версия drupal обновилась. Заходим на страницу Status Report:
/admin/reports/status
8. Возвращаем сайт в рабочий режим:
/admin/config/development/maintenance
9. Не забудьте после выполнения update.php вернуть значение обратно на FALSE:
$settings['update_free_access'] = FALSE;
Если у вас возникли трудности или ошибки, пишите в комментариях.
Добавить комментарий