При обновлении Nextcloud может потребоваться обновление Postgresql. В этой статье описан пошаговый процесс обновления.
Шаг 1. Обновление Nextcloud
Сначала выполним обновление Nextcloud с помощью следующих команд:
sudo -E -u www-data php /var/www/nextcloud/updater/updater.phar
occ upgrade
При завершении установки нам предложит выполнить occ upgrade, выбираем “y”. Также будет предложено оставить режим обслуживания или нет.
В параметрах сервера можно увидеть, что новая версия установлена, но появилось предупреждение о необходимости обновления Postgresql.
Шаг 2. Создание дампа базы данных
Делаем это командами:
su - postgres
pg_dumpall > backup.sql
Шаг 3. Обновление Ubuntu
После этого необходимо обновить Ubuntu до 22 версии, поскольку новые версии Postgresql не поддерживаются на текущей версии 20. Для обновления пользуемся командами:
apt upgrade –y
do-release-upgrade
Жмем Y и Enter для продолжения, дальше также соглашаемся нажатием Enter.
Жмем Y и Enter, начался процесс установки.
При появлении такого сообщения выбираем Yes, соглашаемся с помощью Enter.
Здесь аналогично.
При появлении таких сообщений в ходе установки выбираем «keep your currently-installed version», введя "N", далее жмем Enter.
Здесь жмем Enter.
Соглашаемся. Далее выйдет такое же сообщение о необходимости перезагрузки системы после обновления. Соглашаемся и вновь подключаемся к машине.
Видим новую версию системы, а также при обновлении системы автоматически устанавливается новая версия Postgresql 14. Обновление ubuntu завершено успешно.
Шаг 4. Удаление старой версии Postgresql
Для этого последовательно выполняем команды:
sudo systemctl stop postgresql@12-main
sudo apt-get --purge remove postgresql-12
sudo rm -rf /var/lib/postgresql/12/
sudo rm -rf /etc/postgresql/12/
Далее выполняем:
sudo apt-get autoremove
sudo apt-get clean
Следующим шагом необходимо отредактировать конфигурационный файл Postgresql. Используем команду:
nano /etc/postgresql/14/main/postgresql.conf
Необходимо долистать до раздела CONNECTIONS AND AUTHENTICATION. Здесь необходимо в строке port = 5433 изменить значение на 5432, а в строке #listen_addresses = ‘localhost’ нужно убрать решетку в начале и заменить ‘localhost’ на ‘*’, чтобы результат был listen_addresses = ‘*’
После этого необходимо сохранить изменения в файле. Жмем Ctrl + O, затем Enter. Затем жмем Ctrl + X.
Шаг 5. Восстановление базы данных
Для начала редактируем конфиг командой:
nano /etc/postgresql/14/main/pg_hba.conf
Находим строчку local all postgres peer, меняем в этой строке значение peer на trust. Жмем Ctrl + O, затем Enter. Затем жмем Ctrl + X.
Выполняем:
systemctl restart postgresql
а затем выполняем:
psql -U postgres -w -d postgres -f /var/lib/postgresql/backup.sql
После этого дамп нашей базы данных будет восстановлен. Далее устанавливаем новый пароль для пользователя который указан администратором базы данных ('dbuser') в файле конфигурации Nextcloud (nano /var/www/nextcloud/config/config.php).
Выполняем команду:
sudo -u postgres psql
Далее вводим:
ALTER USER username with password 'password';
где username - наш 'dbuser' из файла конфигурации nextcloud,
a 'password' - пароль который мы задаем для этого пользователя
После вводим \q и жмем Enter.
Далее вновь входим в файл с помощью nano /etc/postgresql/14/main/pg_hba.conf
Находим строчку local all postgres trust, меняем в этой строке значение trust обратно на peer. Жмем Ctrl + O, затем Enter. Затем жмем Ctrl + X.
Выполняем:
systemctl restart postgresql
Шаг 6. Редактирование конфигурационного файла Nextcloud
Для этого используем команду:
nano /var/www/nextcloud/config/config.php
Находим строку с где указан 'dbuser' и 'dbpassword'
В строке dbpassword необходимо установить тот же пароль, который мы ранее обновляли для этого пользователя. Жмем Ctrl + O, затем Enter. Затем жмем Ctrl + X.
Выполняем перезагрузку службы apache2 командой:
systemctl restart apache2
Затем заходим на наш Nextcloud. Как мы видим, сообщение о необходимости обновления Postgresql исчезло. Обновление прошло успешно.
Шаг 7. Исправление ошибок
Теперь можно исправить следующие ошибки, которые мы видим в параметрах сервера.
Используем команды:
cd /var/www/nextcloud/
sudo -u www-data php occ maintenance:repair --include-expensive
sudo -u www-data php occ db:add-missing-indices
Переходим обратно в параметры сервера. Как мы видим все предупреждения исправлены.
Таким образом мы обновили Nextcloud, Ubuntu и Postgresql.