6.4. Обновление¶
Номер версии NextGIS Web On-Premise содержит три числа в формате A.B.C, где A.B - основной номер версии, а C - патч-версия.
Обновление между основными версиями должно выполняться последовательно, то есть при обновлении с версии 2.8.0 до версии 3.0.0, то сначала необходимо выполнить обновление до версии 2.9.0, затем до версии 3.0.0. При наличии патч-версий (например, 2.8.1, 2.8.2 и т.д.) обновление нужно выполнять сразу до последней патч-версии основной версии.
Информация о текущей версии NextGIS Web On-Premise доступна администратору в интерфейсе NextGIS Web в разделе “Информация о системе” панели управления. Также ее можно посмотрреть в файле docker-compose.yaml в именах образов (services.<имя_сервиса>.image).
Важно
Все шаги в этом разделе должны выполняться с правами
суперпользователя (root). Если вы используете sudo, то чтобы
не запутаться в командах, рекомендуется сначала выполнить sudo -i
для получения полноценной сессии суперпользователя.
Для обновления с версии на версию необходимо выполнить следующие шаги:
Шаг 1. Ознакомьтесь с действиями и требованиями перечисленными ниже для конкретной версии:
Шаг 2. Создайте офлайн-резервную копию системы в соответствии с инструкцией в разделе “Резервное копирование”.
Шаг 3. Создайте резервную копию файла docker-compose.yaml
(A.B.C в команде ниже необходимо заменить на текущую версию, то есть ту версию с которой вы выполняете обновление):
$ cd /srv/ngwdocker
$ cp docker-compose.yaml docker-compose-A.B.C.yaml
Шаг 4. Обновите файл docker-compose.yaml, заменив в нем упоминания текущей версии в именах образов
(services.<имя_сервиса>.image) на новую версию, на которую вы выполняете обновление.
Шаг 5. Загрузите новые образы Docker на сервер: в случае наличия доступа к Интернету выполните команду:
$ cd /srv/ngwdocker
$ docker compose pull
В случае отсутствия доступа к Интернету, свяжитесь со службой поддержки NextGIS для получения архивов с образами, загрузите их на сервер и выполните команду загрузки образов из архива:
$ docker load -i /path/to/file.tar.gz
Шаг 6. Примените миграции, запустите регламентное обслуживание и дождитесь окончания выполнения команды:
$ cd /srv/ngwdocker
$ docker compose run --rm app nextgisweb migration upgrade --no-dry-run
$ docker compose run --rm app nextgisweb maintenance
Шаг 7. Запустите обновленные контейнеры после чего процесс обновления будет завершен:
$ cd /srv/ngwdocker
$ docker compose up -d
6.4.1. Обновление до версии 3.1.x с версии 3.0.x¶
В версии 3.1.0 изменились системные требования, убедитесь, что ваша система удолетворяет перечисленными ниже требованиям:
Минимальная версия Docker Engine - 23.0.0.
Минимальная версия Docker Compose - 2.x.
Минимальная версия ядра Linux - 5.10.
Прекращена поддержка Ubuntu 20.04.
Перед выполнением обновления необходимо проверить настройки сопоставления строк (collation) баз данных PostgreSQL, для этого выполните команду приведенную ниже:
$ cd /srv/ngwdocker
$ docker compose exec postgres psql -c "SELECT datname, datcollate, datctype FROM pg_database WHERE datcollate <> 'C.UTF-8' OR datctype <> 'C.UTF-8'"
datname | datcollate | datctype
---------+------------+----------
(0 rows)
Если в результате выполнения команды выводится пустой результат (0 строк, как в примере), то можно продолжать обновление. В противном случае обновление продолжать нельзя и необходимо обратиться в службу поддержки NextGIS. Такое возможно для установок начальная версия которых меньше чем 1.7.0 (вышла в августе 2021 года).
6.4.2. Обновление до версии 3.0.x с версии 2.9.x¶
Дополнительные шаги не требуются, выполните стандартные шаги обновления.
6.4.3. Обновление до версии 2.9.x с версии 2.8.x¶
После создания резервной копии текущей версии необходимо выполнить обновление PostGIS, для этого выполните команды приведенные ниже. В результате их выполнения откроется интерактивная консоль PostgreSQL внутри контейнера с базой данных NextGIS Web:
$ cd /srv/ngwdocker
$ docker compose down
$ docker compose up -d postgres
$ docker compose exec postgres psql -U postgres nextgisweb
В интерактивной консоли PostgreSQL выполните команды (nextgisweb=# -
это приглашение консоли PostgreSQL, оно выводится автоматически и
вводить его не нужно, только команды после него):
nextgisweb=# ALTER USER nextgisweb SUPERUSER;
nextgisweb=# SET SESSION AUTHORIZATION nextgisweb;
nextgisweb=# SELECT postgis_extensions_upgrade();
nextgisweb=# ALTER USER nextgisweb NOSUPERUSER;
nextgisweb=# \q
6.4.4. Обновление до версии 2.8.x с версии 2.7.x¶
Дополнительные шаги не требуются, выполните стандартные шаги обновления.
6.4.5. Обновление до версии 2.7.x с версии 2.6.x¶
Дополнительные шаги не требуются, выполните стандартные шаги обновления.
6.4.6. Обновление до версии 2.6.x с версии 2.5.x¶
Дополнительные шаги не требуются, выполните стандартные шаги обновления.