Ручное обновление Nextcloud
Используемые термины: Nextcloud.
Процесс обновления Nextcloud хорошо описан в официальной документации:
Данная статья — адаптация инструкции по ручному обновлению на русский язык. Она будет рассмотрена на примере системы Linux.
Предварительные действия
Обновление Nextcloud
Шаги подготовки портала
Обновление
Завершающий этап
Дополнительная информация
Подготовка системы к обновлению
Прежде чем начать наше обновление, выполним предварительные действия.
Резервное копирование
Так как процесс обновления — потенциальные риск потери данных, необходимо сохранить информацию.
Подробнее процесс описан в инструкции Резервное копирование и восстановление Nextcloud.
Определяем версию, до которой стоит обновляться
Не стоит скачивать самую последнюю версию портала — если ваше приложение давно не обновлялось, могут возникнуть проблемы при переходе через большое количество версий.
В самом Nextcloud перейдите на страницу администрирования - в общих сведениях мы увидим на какую версию программного продукта нам стоит перейти:
Изучение требований
Перед тем, как обновлять Nextcloud, изучаем системные требования к версии, которую будем ставить. Обратите внимание на версию PHP, так как неподдерживаемая версия не позволит облаку заработать.
При необходимости, обновляем и сам PHP. Подробнее смотрите ссылки в конце данной инструкции.
Обновление приложений
В веб-интерфейса nextcloud переходим к окну управления приложениями:
Если есть приложения, которые нуждаются в обновлении, мы увидим кнопку Обновить все — нажимаем на нее:
Обновление Nextcloud
Рассмотрим процесс по шагам. Разобьем их на 3 группы.
Предварительные шаги
1. Переходим в каталог, где находится папка nextcloud.
Так как nextcloud может быть установлен в разлиные директории, для нашего удобства лучше сразу перейти в соответствующий каталог.
Например, у меня это каталог /var/www/nextcloud — значит я выполняю команду:
cd /var/www
2. Отключаем веб-сервер.
Nextcloud может быть настроен с использованием различных веб-серверов. Наиболее популярные из них — nginx и apache. В зависимости от этого, наши команды будут разливаться.
а) Для nginx:
systemctl stop nginx
б) Для apache в системах на основе Deb:
systemctl stop apache2
в) Для apache в системах на основе RPM:
systemctl stop httpd
3. Переводим Nextcloud в режим обслуживания.
Команда будет зависеть от того, под каким пользователем запускается php интерпретатор.
а) Если пользователь www-data (как правило, в Linux на основе DEB):
sudo -u www-data php ./nextcloud/occ maintenance:mode --on
б) Если пользователь apache (как правило, в Linux на основе RPM):
sudo -u apache php ./nextcloud/occ maintenance:mode --on
4. Отключение заданий по расписанию.
Если Nextcloud настроен на выполнение регламентных заданий через cron, на время обновления нужно отключить из запуск.
В зависимости от системы запускаем редактирование заданий.
а) Для систем Deb:
crontab -u www-data -e
б) Для систем RPM:
crontab -u apache -e
Имейте ввиду, что задание cron может быть также настроено для пользователя root — в этом случае, команда должна быть без указания пользователя:
crontab -e
Также файл с настройкой задания может находиться в каталоге /etc/cron.d.
Если мы найдем задание, заканчивающееся на nextcloud/cron.php, комментируем строку:
#... nextcloud/cron.php
Выполняем обновление
1. Меняем файлы на новые.
Переименовываем текущий каталог с порталом Nextcloud:
mv nextcloud nextcloud_old
Переходим на страницу загрузки и копируем ссылку на zip-архив для скачивания нужной версии приложения:
По скопированной ссылке загружаем исходник:
wget https://download.nextcloud.com/server/releases/nextcloud-25.0.10.zip
Распакуем его:
unzip nextcloud-*.zip
В текущем каталоге появится папка nextcloud.
2. Возвращаем некоторые файлы со старого Nextcloud.
Скопируем из уже старого приложения конфигурационный файл:
cp nextcloud_old/config/config.php nextcloud/config/
Если каталог с данными находится в том же каталоге, что и портал, перенесем каталог data:
mv nextcloud_old/data nextcloud/
Сравниваем приложения, которые входят в состав нового nextcloud с теми, что были установлены ранее:
diff --brief nextcloud_old/apps/ nextcloud/apps/ | grep "Only in nextcloud_old"
Команда покажет каталоги приложений, которых нет в новом приложении — из нужно скопировать вручную командой cp. Точная команда зависит от того, что вернул diff.
Например:
cp -R nextcloud_old/apps/{accessibility,analytics,calendar,contacts,cospend,deck,duplicatefinder,files_antivirus,...} nextcloud/apps/
* в фигурных скобках через запятую перечислены все папки приложений, которые нужно скопировать из старого nextcloud в новый.
Теперь визуально сравним темы:
ls -la nextcloud_old/themes/
ls -la nextcloud/themes/
Если в сторой версии были установлены дополнительные темы, то нужно их также перенести в каталог с новой версией портала.
Задаем владельца для каталога nextcloud. В зависимости от системы команды будут разные.
а) Для Linux Deb:
chown -R www-data:www-data nextcloud
б) Для Linux RPM:
chown -R apache:apache nextcloud
3. Обновляем портал и базу данных.
Снова включаем веб-сервер. В зависимости от последнего, наши команды будут разливаться.
а) Для nginx:
systemctl start nginx
б) Для apache в системах на основе Deb:
systemctl start apache2
в) Для apache в системах на основе RPM:
systemctl start httpd
Запускаем команду для обновления портала. Она будет зависеть от типа Linux.
а) Для Linux Deb:
sudo -u www-data php ./nextcloud/occ upgrade
б) Для Linux RPM:
sudo -u apache php ./nextcloud/occ upgrade
Процесс займет какое-то время. Ждем.
Готово — Nextcloud обновлен. Возвращаем некоторые настройки.
Завершающие действия
Наш портал обновлен, но еще не работает полноценно. Нам нужно отключить режим обслуживания, запустить задания по расписанию и проверить работу системы.
1. Режим обслуживания — отключение.
Команда будет зависеть от того, под каким пользователем запускается php интерпретатор.
а) Если пользователь www-data (как правило, в Linux на основе DEB):
sudo -u www-data php ./nextcloud/occ maintenance:mode --off
б) Если пользователь apache (как правило, в Linux на основе RPM):
sudo -u apache php ./nextcloud/occ maintenance:mode --off
2. Включение заданий в cron.
Напомним, что данный шаг нужно делать только, если Nextcloud настроен на выполнение регламентных заданий через cron.
В зависимости от системы запускаем редактирование заданий.
а) Для систем Deb:
crontab -u www-data -e
б) Для систем RPM:
crontab -u apache -e
Снимаем комментарий, который ставили ранее. Должно получиться что-то на подобие:
... nextcloud/cron.php
Разово запустим выполнение заданий.
а) Для систем Deb:
sudo -u www-data php -f ./nextcloud/cron.php
б) Для систем RPM:
sudo -u apache php -f ./nextcloud/cron.php
3. Обновление индексов.
Оптимизируем работу базы данных. Для разных систем Linux выполняется, немного, по-разному.
а) Для систем Deb:
sudo -u www-data php ./nextcloud/occ db:add-missing-indices
б) Для систем RPM:
sudo -u apache php ./nextcloud/occ db:add-missing-indices
4. Проверка.
Все операции по обновлению выполнены.
Проверяем:
- Работу веб-портала.
- Синхронизацию данных (если используется).
- Работу сетевых дисков (если используется).
5. Чистка.
Завершая работу над обновлением, удалим загруженный архив:
rm -f nextcloud-*.zip
Также можно переименовать каталог nextcloud_old:
mv nextcloud_old nextcloud_25.0.3
* в моем примере был выполнен переход с версии 25.0.3.
Читайте также
Полезная информация по Nextcloud:
1. Установка и настройка Nextcloud + Apache на Ubuntu.
2. Установка и настройка NextCloud на Rocky Linux 8.
3. Установка и настройка Nextcloud + NGINX на Ubuntu.
4. Резервное копирование и восстановление Nextcloud.
5. Установка разных версий PHP на Linux Ubuntu.