понедельник, 21 августа 2023 г.

Обновление Nextcloud 25 с Debian Bullseye до Debian Bookworm

Неспеша обновляю хосты с Debian Bullseye до Debian Bookworm и на той неделе столкнулся с ситуацией когда не получилось привычным способом обновить сервер с установленным Nextcloud 25.

В Bookworm поставляется PHP 8.2 который не поддерживается в Nextcloud 25, а сначала обновить Nextcloud до 26 в Debian Bullseye тоже нельзя, т.к. в Nextcloud 26 удалена поддержка PHP 7.4.

В этом случае придется следовать процедуре ручного обновления, предварительно обновив дистрибутив до Debian Bookworm в котором уже PHP 8.2.

В моём случае Nextcloud установлен в контейнере LXC и достаточно создать снимок состояний контейнера перед обновлением. В случае проблем с обновлением просто делается возврат к прежнему состоянию. В общем случае нужно выполнить резервное копирование базы данных и файла config/config.php.

Сначала обновляю систему до Debian Bookworm. Далее скачиваю дистрибутив Nextcloud 26 и проверяю контрольную сумму

$ wget -q https://download.nextcloud.com/server/releases/nextcloud-26.0.5.tar.bz2 https://download.nextcloud.com/server/releases/nextcloud-26.0.5.tar.bz2.sha256

$ sha256sum -c nextcloud-26.0.5.tar.bz2.sha256
nextcloud-26.0.5.tar.bz2: OK

Распаковываю дистрибутив Nextcloud 26 и останавливаю веб-сервер

$ tar -xf nextcloud-26.0.5.tar.bz2

$ sudo systemctl stop apache2

Перед заменой файлов нужно отключить запуск крона

$ sudo crontab -u www-data -e

Заменяю файлы дистрибутива, копирую данные и файл настроек

$ sudo mv /var/www/nextcloud /var/www/nextcloud-old

$ sudo mv ./nextcloud /var/www/nextcloud

$ sudo cp nextcloud-old/config/config.php nextcloud/config/

$ sudo cp -a nextcloud-old/data nextcloud/

Дальше нужно скопировать недостающие приложения. Я примерно помню что там установлено дополнительно, но лучше проверить еще раз

$ ls -1 nextcloud-old/apps | sort > /tmp/nextcloud-apps-old

$ ls -1 nextcloud/apps | sort > /tmp/nextcloud-apps

$ diff -u /tmp/nextcloud-apps /tmp/nextcloud-apps-old
@@ -1,5 +1,6 @@
 activity
 admin_audit
+bookmarks
 bruteforcesettings
 circles
 cloud_federation_api
@@ -8,6 +9,7 @@
 dashboard
 dav
 encryption
+epubreader
 federatedfilesharing
 federation
 files
@@ -20,7 +22,9 @@
 firstrunwizard
 logreader
 lookup_server_connector
+news
 nextcloud_announcements
+notes
 notifications
 oauth2
 password_policy
 
$ sudo cp -a nextcloud-old/apps/{bookmarks,epubreader,news,notes} nextcloud/apps/

Осталось поправить права доступа и запустить веб-сервер

$ sudo chown -R www-data:www-data nextcloud/
$ find nextcloud/ -type d -exec chmod 750 {} \;
$ find nextcloud/ -type f -exec chmod 640 {} \;

$ sudo systemctl restart apache2

Теперь нужно переключиться под пользователя www-data и запустить процесс обновления

$ sudo su - www-data -s /bin/bash

www-data $ cd nextcloud/

www-data $ php occ upgrade

www-data $ php occ db:add-missing-indices

www-data $ exit

Последний штрих - включить задания cron обратно

$ sudo crontab -u www-data -e

Обновление с Nextcloud 26 до 27 прошло штатным образом.

Комментариев нет:

Отправить комментарий