Access to this page has been denied.
You have been blocked because we believe you are using automation tools to browse the website.
This may happen as a result of the following:
- Javascript is disabled or blocked by an extension (ad blockers for example)
- Your browser does not support cookies
If you think you have been blocked by mistake, please contact help@drupal.org with the reference ID below.
Reference ID: #b5048523-86f4-11ee-aa6a-d8a94cf7bd31
Powered by PerimeterX , Inc.
Access to this page has been denied.
You have been blocked because we believe you are using automation tools to browse the website.
This may happen as a result of the following:
- Javascript is disabled or blocked by an extension (ad blockers for example)
- Your browser does not support cookies
If you think you have been blocked by mistake, please contact help@drupal.org with the reference ID below.
Reference ID: #b525482a-86f4-11ee-9f8e-cd81a04f0808
Powered by PerimeterX , Inc.
Access to this page has been denied.
You have been blocked because we believe you are using automation tools to browse the website.
This may happen as a result of the following:
- Javascript is disabled or blocked by an extension (ad blockers for example)
- Your browser does not support cookies
If you think you have been blocked by mistake, please contact help@drupal.org with the reference ID below.
Reference ID: #b5094872-86f4-11ee-b2ee-5b1a4fe69df7
Powered by PerimeterX , Inc.
Обновляем PHP, drupal, nextcloud
На моём сервере под управлением Ubuntu 20.4 крутиться умный дом MajorDoMo, семейное облако NextCloud и веб сервер на Drupal.
Первые два всегда обновляются, а вот последний крайне редко, так как держится ради «чтобы-был».
После последнего обновления NextCloud на версию 25.х.х появилось сообщение что я редиска и не дорожу всем тем, что сообщество
приготовило для меня и моей семьи и вообще. Словом, мне срочно нужно обновить php с 7.4 на 8.х и тогда меня простят
и будет всем счастье)))
Дело конечно хорошее, но.
Ох уж это НО. ))
на форуме где-то, когда-то, проскальзывало что возникают у ребят проблемы как с переходом на ubuntu 22, так и с переходом на php8
Проблемка может возникнуть. У меня всё стоит на реальном компе который выделен для сервера и в случае неприятного update может лечь всё.
Но руки чешутся, а глаза горят )))
Ох уж это длинное пустословие называемое вступлением )))
И так, приступим.
1. Делаем бакапы всех www и их баз.
Я делаю бакап сразу в свою домашнюю папку, чтобы можно было сразу забрать по sftp на рабочий комп. На сервере я не храню бакапы.
Сливаю базы от имени супера, так как один пароль запомнить легче, чем кучу.
mysqldump --opt -uroot -p drupal > /home/rediska/drupal_backup_`date +%Y.%m.%d_%H_%M`.sql mysqldump --opt -uroot -p nextclud > /home/rediska/nextclud_backup_`date +%Y.%m.%d_%H_%M`.sql mysqldump --opt -uroot -p majordom > /home/rediska/majordom_backup_`date +%Y.%m.%d_%H_%M`.sql
Бакапим папки каждого www по отдельности. Можно один общий архив сделать, но тогда если потребуется восстановить один из www , ждать пока архив откроется, придется в разы дольше.
tar -czf /home/rediska//drupal_backup_`date +%Y.%m.%d_%H_%M`.tar.gz /var/www/drupal tar -czf /home/rediska//nextclud_backup_`date +%Y.%m.%d_%H_%M`.tar.gz /var/www/nextclud tar -czf /home/rediska//majordom_backup_`date +%Y.%m.%d_%H_%M`.tar.gz /var/www/majordom
2. Забираем все созданные бакапы (у меня их 6) на свой рабочий компьютер.
У кого сервер крутиться на виртуалке, этого делать не обязательно, проще сделать бакап самой виртуальной машины. Снапшоты делать не желательно !
Чем больше снапшотов, тем хуже работает.
3. Обновляем NextCloud до последней версий или до версий которые поддерживают php8.2. На момент обновления это 25.0.3
На ошибки в настройках сервера не обращаем внимание, после устраним.
4. Обновление всех модулей и тем Drupal. Без этого будут ошибки.
У меня стоит Drupal 8.18. Последняя версия 10.0.2. Сразу перейти на неё нельзя, надо через 9х. Возьмем крайнюю, 9.5.2
Пример ошибок если не обновить все модули и темы
5. Обновляем php7.4 до 8.2
sudo apt-get install software-properties-common sudo add-apt-repository ppa:ondrej/php sudo apt-get update
Устанавливаем php8.2 и необходимые компоненты
sudo apt install php8.2-common -y sudo apt install php8.2-cli -y sudo apt install -y php8.2- sudo apt install -y php8.2- sudo apt-get install -y php8.2-pcov php8.2-xdebug sudo apt install php8.2-fpm -y sudo apt install libapache2-mod-php8.2 -y
Подготавливаем apache2 к работе с php8.2
a2dismod php7.4 a2enmod php8.2 a2enconf php8.2-fpm a2enmod proxy_fcgi setenvif a2enmod headers a2enmod env a2enmod dir a2enmod mime a2enmod setenvif a2enmod ssl service apache2 restart
Мы обновили php до последней версии, на момент написания статьи это 8.2.1 Для проверки версии и установленных модулей можно воспользоваться командами:
php -v php -m
6. Drupal. Удаляем каталоги (папки) core, vendor и все файлы в корне кроме web.config
// предположим что Drupal установлен в // /var/www/drupal/ // удаляем каталоги core и vendor rm -r /var/www/drupal/core rm -r /var/www/drupal/vendor // копируем config-и в папку ./root, они нам понадобится cp -p /var/www/drupal/web.config ~/ cp -p /var/www/drupal/sites/default/settings.php ~/ // удаляем все файлы в корневой папке drupal rm -f /var/www/drupal/*
7. Скачиваем последнюю редакцию 9 версии Drupal. На день выхода статьи это 9.5.2 и копируем в корневую папку где у нас Drupal
// переходим в папку ./root, будем использовать её как временную (temp) cd ~ root // скачиваем последний релиз drupal из ветки 9.х wget https://ftp.drupal.org/files/projects/drupal-9.5.2.tar.gz // распаковываем tar xvf drupal-9.5.2.tar.gz // удаляем скаченный архив rm -f drupal*.tar.gz // переносим распакованный drupal в /var/www/drupal sudo mv drupal-*/ /var/www/drupal // возвращаем один файл на место cp -p ~/web.config /var/www/drupal/ // удаляем его в папке ./root он нам больше не нужен rm -f ~/web.config
8. Подготовка к запуску обновления Drupal
открываем конфигурационный файл нового Drupal и приводим к соответствию со старым, который мы скопировали в ./root/settings.php
nano /var/www/drupal/sites/default/settings.php
Основные параметры без которых drupal не запустится:
// В этой переменной указан хэш (ключ) к доступу содержимого старого drupal. // без него все старые материалы сайта будут утрачены $settings['hash_salt'] = '8ptMky5rQ4saMAie7nMw0qU_nX2ADfxBd58h1_MnnWG6-2zB0-HdyAED-wzRl4Xsp8wgnhR8z1'; // Доступ и тип БД старого Drupal $databases['default']['default'] = array ( 'database' => 'drupal', 'username' => 'userdrupal', 'password' => 'passworddrupal', 'prefix' => '', 'host' => 'localhost', 'port' => '3306', 'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql', 'driver' => 'mysql', ); $settings['config_sync_directory'] = 'sites/default/files/config_Uev69eEU6-BTQZskfULeJ_dG-CS8umqZrHmxkqRWOiHYLUUJ27 // Разрешение, с каких хостов можно производить подключение $settings['trusted_host_patterns'] = [ '^localhost$', '^127\.0\.0\.1$', '^www.v-elite\.ru$', ];
9. Запуск Drupal
https://ваш домен/update.php
По завершению наш drupal готов к работе. Не забудьте перевести его из режима обслуживания в рабочий. Проверьте и при необходимости обновите модули, темы.
10. Исправление возможных ошибок после обновления NextCloud
На сайте nextloud написано что версия php8.2 поддерживается. После обновления php стала 8.2.1 Не знаю кто из ребят кушал на клавиатуре,
но мы получим сообщение о том что наш комп не достоин внимания nextloud
открываем файл проверки versioncheck.php и редактируем условия для php8.2 исправляя на 8.3
nano /var/www/nextclod/lib/versioncheck.php
стало после редактирования
Обновляем страницу и получаем доступ ))
В процессе написания статьи, я несколько раз возвращала систему к исходному началу и в какой-то момент после внесенных изменений у меня слетела версия 25.0.3, став неожиданно 25.0.2 и вылезли ошибки контроля целостности файлов
Данная ошибка не позволяет обновить nextloud.
Для устранения делаем следующее:
Запускаем сканирование файловой системы
sudo -u www-data php /var/www/nextclod/occ integrity:check-core
Появятся ошибки указывающие в каких файлах изменился хэш.
Открываем второй терминал, для удобства, в нем вызываем файл в котором хранятся эталонные хэш и заменяем на новые.
nano /var/www/nextclod/core/signature.json
Перезапускаем Апач (www сервер)
service apache2 restart
Проверяем на ошибки
sudo -u www-data php /var/www/nextclod/occ integrity:check-core
Ошибок нет.
Обновляем nextcloud.
Заходим в настройки, смотрим какие есть ошибки.
Ошибка «Разрешённое максимальное значение использования памяти PHP ниже рекомендуемого значения в 512 МБ.»
исправляется просто, увеличением лимита до 512 в переменной memory_limit
sudo nano /etc/php/8.2/fpm/php.ini
перезапускаем сервис
sudo systemctl restart php8.2-fpm
Ошибка «Для создания значка favicon приложением «Оформления» необходимо установить и активировать модуль «imagic» подсистемы PHP.»
sudo apt-get install -y php8.2-imagic sudo systemctl restart php8.2-fpm
Ошибка «Модули «gmp» и / или «bcmath» подсистемы PHP не активированы. Эти модули необходимы при использовании аутентификации без пароля WebAuth.»
Ставим оба модуля
sudo apt-get install -y php8.2-gmp sudo apt-get install -y php8.2-bcmath sudo systemctl restart php8.2-fpm
Ошибка «Веб-сервер не настроен должным образом для разрешения «/.well-known/webfinger»»
nano /var/www/nextcloud/.htaccess
RewriteRule ^\.well-known/webfinger /nextcloud/index.php/.well-known/webfinger [R=301,L] RewriteRule ^\.well-known/nodeinfo /nextcloud/index.php/.well-known/nodeinfo [R=301,L]
Ошибка «Буфер интернированных строк OPcache почти заполнен. Чтобы гарантировать, что повторяющиеся строки могут быть эффективно кэшированы, рекомендуется применить opcache.interned_strings_bufferк вашей конфигурации PHP значение выше 8.»
nano /etc/php/8.2/mods-available/opcache.ini
opcache.memory_consumption=256 opcache.interned_strings_buffer=128
Закрываем файл, перезапускаем сервис fpm
sudo systemctl restart php8.2-fpm
На этом всё. Мы обновили php с версии 7 на версию 8. Обновили Drupal до крайней версии 9ой ветки. Десятую ставить не стала, мне кажется сырая она еще, да и не все модули которыми я пользуюсь есть в 10ой. Так же немного разобрались как бороться с некоторыми ошибками в NextCloud.
В самом начале я сказала что на одном компьютере под управлением одной системы (ubuntu 20.4) на одном веб сервере apache2 у меня работают три разных веб сервера. Мы разобрали два из них и ни слова не было сказано про третий — умный дом MajorDoMo. Говорить нечего, сервер прекрасно работает на php8.2
Всем хорошего настроения и до встреч!
Бонус . Возврат на php7.4 и Drupal который стоял до обновления.
// Удаляем php8.2 и все его модули sudo apt purge '^php8.2.*' // Устанавливаем php7.4 sudo apt install php7.4-common -y sudo apt install php7.4-cli -y sudo apt install php7.4-apcu php7.4-redis php7.4-cgi php7.4-curl php7.4-gd php7.4-imap php7.4-intl php7.4-json php7.4-ldap php7.4-mbstring php7.4-mysql php7.4-opcache php7.4-pspell php7.4-readline php7.4-soap php7.4-xml sudo apt install php7.4-pcov php7.4-xdebug sudo apt install php7.4-fpm -y sudo apt install libapache2-mod-php8.2 -y // Настраиваем apache2 для работы с php7.4 a2dismod php8.2 a2enmod php7.4 a2enconf php7.4-fpm a2enmod proxy_fcgi setenvif a2enmod headers a2enmod env a2enmod dir a2enmod mime a2enmod setenvif // перезапускаем apache2 service apache2 restart // Обновляем ДБ drupal из созданного бакапа перед обновлением // drupal - имя БД вашего drupal // drupal8.sql - имя созданного бакапа mysql -uroot -p drupal < drupal8.sql // перезапускаем apache2 service apache2 restart // открываем ранее созданный бакап drupal_backup_`date +%Y.%m.%d_%H_%M`.tar.gz // например через mc и копируем всё содержимое поверх того что есть с сохранением привилегий // проверяем https:// ваш домен // должно работать) sudo shutdown -r now
- Войдите, чтобы оставлять комментарии