Nexus OSS обновление (с миграцией БД)

Средний рейтинг
5 из 5 звезд. 1 голосов.

Всем привет.

Обновление и дополнение заметки.

Описана миграция БД с orient —> H2, обноление версии с 3.70.01-2 —> 3.76 —> 3.93.2-01.

Потребовалось обновить OSS Nexus 3 до последней, на момент написания заметки, версии — 3.76.0

Nexus — это система для организации репозиториев будь то для docker или чего-то другого.

Начиная с версии 3.71 отказались от OrientDB и надо выполнить миграцию на H2 или Potgresql. Так же больше не поддерживается Java 8 или 11 версии.

Начнем…

!!!НЕ забывайте про резервное копирование Nexus перед началом обновления и\или любые другими действиями, которые могут привести к повреждению\потере данных!!!

Входные данные:

  • Nexus OSS Standalone 3.70.1.-02,
  • Ubuntu Server 22.04
  • БД Nexus — orient

Что будет рассмотрено:

  • обновление до промежуточной версии 3.70.3,
  • миграция БД Orient —> H2,
  • обновление до промежуточной версии 3.76,
  • добавление ключа шифрования в конфигурацию,
  • обновление до последней версии на дату заметки — 3.93.2-01

Подготовка.

На момент заметки у нас была установлена вот такая версия:

Для начала обновимся до последней версии, которая еще поддерживает  OrientDB — 3.70.3 (ссылка внизу на всякий случай).

Скачать архив:

Распаковать:

можно добавить ключ -v для вывода в консоль.

Теперь переместим распакованный каталог, где находится Nexus. У меня это /opt:

Тут же у меня символическая ссылка

Остановим службу:

Удалим ссылку:

и создадим новую:

проверим:

Теперь или скопируем файлы конфигурации из прошлой версии, либо отредактируем — кому как удобно. Файлы:

  • bin/nexus.rc
  • bin/nexus.vmoptions

Назначим права на каталоги:

Запустим сервис:

Проверим статус сервиса:

Проверим в браузере:

Как посмотреть что используется OrientDB?

Залогинимся под админской учеткой и перейдем:

Support —> System Information

И тут либо поискать, либо промотать и найти nexus.orient.enabled

 

Java

Т.к. новая версия хочет Java 17, то надо установить, если еще не установлена:

И проверить:

[свернуть]

Миграция БД OrientDB -> H2

Теперь надо сделать миграцию БД с Orinet в Postgresql или H2.

Т.к. для миграции на PostgreSQL надо иметь PRO версию, то буду пробовать на H2, хотя  с ней никогда не работал ранее.

Для начала сделаем резервную копию БД, т.к. это одно из условий миграции:

Perform a full backup using the backup task.

Copy the backup to a clean working location on a different filesystem so that any extraction doesn’t impact the existing production system.

Это делается в самом Nexus: Configuration (шестеренка) —> Tasks —> Create task

Жмём на Create task и выбираем — Admin — Export databases for backup

Тут указываем:

  • Task name: — название задачи. Произвольное, понятное для вас;
  • Backup location: — расположение где будет лежать резервная копия (я заранее подготовил каталог);
  • Task frequency: — когда выполнять. Я указал Manual.
  • Остальные параметры по своему усмотрению.

Жмём Create task.

Вернулись к списку заданий. Теперь можем перейти в новое задание и запустить его:

И увидим, что задача запущена:

И можно посмотреть, что создаются резервные копии:

А в списке задач будет наше задание в состоянии выполнения:

Ждем выполнения. Потом задание должно перейти в статус Waiting и результат Ok:

Скачаем утилиту миграции:

Проверим версию Java.

Должна быть 8 или 11 во время миграции БД. Потом можно будет изменить на 17-ю, т.к. новая версия Nexus не поддерживает 8-ю или 11-ю версию. Изменить можно так:

И выбрать 8-ю версию. Потом еще раз проверить командой:

Одно из условий миграции звучит так:

If migrating off of OrientDB, you will run the database migrator utility from this location.

Стало быть скопируем или переместим утилиту к БД:

Запустим миграцию:

До запуска надо оставить nexus, и ответить утвердительно на запрос нажав — y:

И утилита написала вот такую ошибку:

migration error

No backup files (*.bak) 

[свернуть]

Перенесу ее в каталог с бэкапами и оттуда запущу.

Большой лог под спойлером:

лог миграции

[свернуть]

На выходе получилось вот такое:

 

Теперь надо сделать так:

Copy the resultant nexus.mv.db file to your $data-dir/db directory.

И поправим права:

Теперь такое:

Edit the $data-dir/etc/nexus.properties file and add the following line:

nexus.datastore.enabled=true

У меня это выгляди так:

А теперь вообще вот такое пишут:

Проверим статус и запустим, если не запущено:

 

Обновление Nexus до последней версии.

Скачать новый релиз, на момент написания — 3.76.0-03:

Процесс обновления описан выше.

После переключить Java на 17-ю версию.

Для удаленного доступа к БД H2 надо:

Остановить Nexus:

Добавить в файл — /opt/sonatype-work/nexus3/etc/nexus.properties следующие строки:

Но тем не менее, БД доступна только локально. Пока, как вариант, надо пробросить туннель и в таком случае можно будет зайти.

Вот ссылка.

Так же потребовалось изменить вот эти опции — под спойлером конечный вариант /opt/nexus/bin/nexus.vmoptions

конфиг

[свернуть]

Проверяем в браузере что Nexus доступен.

У меня появилось такое предупреждение в статусе:

 

Создаем файл по пути: /opt/sonatype-work/nexus3/etc/nexus.secrets.json

  • your-id-key — название ключа может быть любым,
  • your-encryption-key — надо сгенерировать командой openssl rand -base64 32, и полученное значение вставить в файл.

Установить владельца и права на файл:

Теперь добавим файл в конфигурацию Nexus — /opt/sonatype-work/nexus3/etc/nexus.properties:

Перезапустить Nexus:

После перезапуска ошибка ушла, но появилась новая:

Теперь ранее созданный ID ключа надо добавить в WebUI в System > API > Security Management: Secrets Encryption

Жмем Try it out и меняем строки на:

  • «secretKeyId»: — id ключа, укзанный в файле /opt/sonatype-work/nexus3/etc/nexus.secrets.json
  • «notifyEmail»: — ваша почта для оповещений

Нажать — Execute.

Если всё выполнено верно, то статус должен поменяться:

Ссылка на свежую версию 3.93.2-01 — 2026-06-27 (дата обновления заметки):

Процесс обновления такой же, как описан выше. Я обновился с 3.76 —> 3.93.2-01

СТАТУС

 

Ссылки:

установка Nexus в Ubuntu 22.04 | сохраненная копия

Загрузка утилиты миграции

Решение default secret encryption key

    Пожалуйста, докажите, что вы человек, выбрав звезда.

    If you found an error, highlight it and press Shift + Enter or to inform us.

    Мой рейтинг:

    Дмитрий

    родился, учился, работаю-учусь

    0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest
    0 комментариев