В статье рассмотрим обновление системы Test IT, которая установлена автономно и её база данных вынесена из контейнера.
Установка рассматривается в статье Автономная установка Test IT на Red Hat Enterprise Linux с внешней базой данных.
Обновление до конкретной версии
Информация в данном разделе позволит вам сэкономить время.
Обновление Test IT 4.5.1 до 4.6.0
Сервер приложений
//// Делаем бэкап (скриптами из каталога предыдущей установки, не новой)
cd /home/testit/testit451/
chmod +x scripts/backup.sh
scripts/backup.sh docker-compose.yml prod
//// Загрузка данных
// создаём каталог
mkdir /home/testit/testit46/
cd /home/testit/testit46/
// Загрузить в каталог архив с новой установкой
https://storage.testit.software/downloads/v4.6/testit_v4.6.0_full.zip
// Распаковать и удалить дистрибутив:
unzip /home/testit/testit46/testit_v4.6.0_full.zip -d /home/testit/testit46
rm /home/testit/testit46/testit_v4.6.0_full.zip
// Правим .env и docker-compose.yml. Файлы с моего тестового сервера приложены. Можете использовать их. Вам необходимо только поправить в приложенном .env IP серверов БД (Host=192.168.31.121), пароли для подключения к ним (Username=tester;Password=tester) и (FRONTEND_URL=https://victorz.ru)
// Заменяем .env и docker-compose.yml на изменённые в /home/testit/testit46/.
//// Удалить неиспользуемые образы для освобождения места (при работающем Test IT)
docker image prune -a
//// Загрузить новые образы
docker load -i images.tar.gz
//// Запустить систему
sudo docker-compose -f docker-compose.yml --project-name prod up -d --remove-orphans
Обновление Test IT 4.4.4 до 4.5.1
Сервер приложений
//// Делаем бэкап (скриптами из каталога предыдущей установки, не новой)
cd /home/testit/testit444/
chmod +x scripts/backup.sh
scripts/backup.sh docker-compose.yml prod
//// Загрузка данных
// создаём каталог
mkdir /home/testit/testit451/
cd /home/testit/testit451/
// Загрузить в каталог архив с новой установкой
https://storage.testit.software/downloads/v4.5/testit_v4.5.1_full.zip
// Распаковать и удалить дистрибутив:
unzip /home/testit/testit451/testit_v4.5.1_full.zip -d /home/testit/testit451
rm /home/testit/testit451/testit_v4.5.1_full.zip
// Правим .env и docker-compose.yml. Файлы с моего тестового сервера приложены. Можете использовать их. Вам необходимо поправить в .env IP серверов БД (Host=192.168.31.121), пароли для подключения к ним (Username=tester;Password=tester) и (FRONTEND_URL=https://victorz.ru)
// Заменяем .env и docker-compose.yml на изменённые в /home/testit/testit451/.
//// Удалить неиспользуемые образы для освобождения места (при работающем Test IT)
docker image prune -a
//// Загрузить новые образы
docker load -i images.tar.gz
//// Запустить систему
sudo docker-compose -f docker-compose.yml --project-name prod up -d --remove-orphans
Обновление Test IT 4.3.1 до 4.4.4
Сервер баз данных
В новой версии появилась дополнительная БД. Это определяем просмотром файла .env в новой установке.
//// Создать базы данных
su - postgres
psql -c "CREATE DATABASE testit_globalsearchdb;"
// Добавить к БД расширение "uuid-ossp"
psql -d testit_globalsearchdb -c "CREATE EXTENSION if not exists \"uuid-ossp\" SCHEMA public;"
// Предоставить пользователю Test IT доступ к БД
psql -c "GRANT ALL PRIVILEGES ON DATABASE testit_globalsearchdb TO tester;"
Сервер приложений
//// Делаем бэкап (скриптами из каталога предыдущей установки, не новой)
cd /home/testit/testit431/
chmod +x scripts/backup.sh
scripts/backup.sh docker-compose.yml prod
//// Загрузка данных
// создаём каталог
mkdir /home/testit/testit444/
cd /home/testit/testit444/
// Загрузить в каталог архив с новой установкой
https://storage.testit.software/downloads/v4.4/testit_v4.4.4_full.zip
// Распаковать и удалить дистрибутив:
unzip /home/testit/testit444/testit_v4.4.4_full.zip -d /home/testit/testit444
rm /home/testit/testit444/testit_v4.4.4_full.zip
// Правим .env и docker-compose.yml. Файлы с моего тестового сервера приложены. Можете использовать их. Вам необходимо поправить в .env IP серверов БД (Host=192.168.31.121), пароли для подключения к ним (Username=tester;Password=tester) и (FRONTEND_URL=https://victorz.ru)
// Заменяем .env и docker-compose.yml на изменённые в /home/testit/testit444/.
//// Удалить неиспользуемые образы для освобождения места (при работающем Test IT)
docker image prune -a
//// Загрузить новые образы
docker load -i images.tar.gz
//// Запустить систему
sudo docker-compose -f docker-compose.yml --project-name prod up -d --remove-orphans
Обновление Test IT 4.2.4 до 4.3.1
Сервер баз данных
В новой версии появилась дополнительная БД. Это определяем просмотром файла .env в новой установке.
//// Создать базу данных
su - postgres
psql -c "CREATE DATABASE testit_licensedb;"
// Добавить к БД расширение "uuid-ossp"
psql -d testit_licensedb -c "CREATE EXTENSION if not exists \"uuid-ossp\" SCHEMA public;"
// Предоставить пользователю Test IT доступ к БД
psql -c "GRANT ALL PRIVILEGES ON DATABASE testit_licensedb TO tester;"
Сервер приложений
//// Делаем бэкап (скриптами из каталога предыдущей установки, не новой)
cd /home/testit/testit424/
chmod +x scripts/backup.sh
scripts/backup.sh docker-compose.yml prod
//// Загрузка данных
// создаём каталог
mkdir /home/testit/testit431/
cd /home/testit/testit431/
// Загрузить в каталог архив с новой установкой
https://storage.testit.software/downloads/v4.3/testit_v4.3.1_full.zip
// Распаковать и удалить дистрибутив:
unzip /home/testit/testit431/testit_v4.3.1_full.zip -d /home/testit/testit431
rm /home/testit/testit431/testit_v4.3.1_full.zip
// Правим .env и docker-compose.yml. Файлы с моего тестового сервера приложены. Можете использовать их. Вам необходимо поправить в .env IP серверов БД (Host=192.168.31.121), пароли для подключения к ним (Username=tester;Password=tester) и (FRONTEND_URL=https://victorz.ru)
// Заменяем .env и docker-compose.yml на изменённые в /home/testit/testit431/.
//// Удалить неиспользуемые образы для освобождения места (при работающем Test IT)
docker image prune -a
//// Загрузить новые образы
docker load -i images.tar.gz
//// Запустить систему
sudo docker-compose -f docker-compose.yml --project-name prod up -d --remove-orphans
Обновление Test IT 4.1.0 до 4.2.4
В данной версии идёт переход на PostgeSQL 14. Я переходил с PostgeSQL 10.
Сервер приложений
//// Делаем бэкап (скриптами из каталога предыдущей установки, не новой)
cd /home/testit/testit410/
chmod +x scripts/backup.sh
scripts/backup.sh docker-compose.yml prod
//// Загрузка данных
// создаём каталог
mkdir /home/testit/testit424/
cd /home/testit/testit424/
// Загрузить в каталог архив с новой установкой
https://storage.testit.software/downloads/v4.2/testit_v4.2.4_full.zip
// Распаковать и удалить дистрибутив:
unzip /home/testit/testit424/testit_v4.2.4_full.zip -d /home/testit/testit424
rm /home/testit/testit424/testit_v4.2.4_full.zip
// Правим .env и docker-compose.yml. Файлы с моего тестового сервера приложены. Можете использовать их. Вам необходимо поправить в .env IP серверов БД (Host=192.168.31.121), пароли для подключения к ним (Username=tester;Password=tester) и (FRONTEND_URL=https://victorz.ru)
// Заменяем .env и docker-compose.yml на изменённые в /home/testit/testit424/.
//// Загрузка образов (заранее, так как понадобятся для миграции)
sudo docker load -i images.tar.gz
//// Миграция бакетов MiniO и их метаданных
// Из архива поставки Test IT версии 4.2.4 скопировать файлы docker-compose.minio-migrate.yml, minio-migrate.sh, move-minio-migrated-volumes.sh из папки scripts в папку с установочными файлами версии 4.1.0 (/home/testit/testit410/).
// Закомментировать в скрипте minio-migrate.sh строки (9 и 10), иначе миграция не будет проходить из-за ошибок:
# mc admin config export SOURCE > config.txt
# mc admin config import TARGET < config.txt
cd /home/testit/testit410/
docker-compose -f docker-compose.yml -p prod stop
chmod +x ./move-minio-migrated-volumes.sh ./minio-migrate.sh
docker-compose -f docker-compose.yml -f docker-compose.minio-migrate.yml -p prod up -d minio avatars.minio new-minio new-avatars-minio mc-minio
docker logs -f prod_mc-minio_1
// "Done!" в логах - миграция завершена успешно.
// жмём CTRL +Z (для выхода из консоли контейнера)
docker-compose -f docker-compose.yml -f docker-compose.minio-migrate.yml -p prod down
sudo ./move-minio-migrated-volumes.sh prod
Сервер баз данных
//// Резервное копирование БД
su - postgres
pg_dump testit_db > /tmp/testit_db.dump
pg_dump testit_authdb > /tmp/testit_authdb.dump
pg_dump testit_avatarsdb > /tmp/testit_avatarsdb.dump
pg_dump testit_backgrounddb > /tmp/testit_backgrounddb.dump
exit
//// Установить новую PostgeSQL 14
yum install postgresql14-server postgresql14-contrib
// Инициализировать БД
/usr/pgsql-14/bin/postgresql-14-setup initdb
// правим порт на 5433 у PostgeSQL 14: /var/lib/pgsql/14/data/postgresql.conf
// запускаем PostgeSQL 14
systemctl start postgresql-14
// Узнать пути к рабочим директориям старой версии и новой версии PSQL (понадобится для скрипта миграции)
// Для текущего PostgeSQL
su - postgres -c "psql"
SELECT current_setting('data_directory'), current_setting('config_file');
\q
// Для PostgeSQL 14
su - postgres -c "PGPORT=5433 psql"
SELECT current_setting('data_directory'), current_setting('config_file');
\q
// Остановить PostgeSQL 14
systemctl stop postgresql-14
//// Тест на возможность миграции БД
su - postgres -c " \
/usr/pgsql-14/bin/pg_upgrade \
--old-datadir=/var/lib/pgsql/data \
--new-datadir=/var/lib/pgsql/14/data \
--old-bindir=/usr/bin \
--new-bindir=/usr/pgsql-14/bin \
--old-options '-c config_file=/var/lib/pgsql/data/postgresql.conf' \
--new-options '-c config_file=/var/lib/pgsql/14/data/postgresql.conf' \
--check \
"
// В выводе везде должно быть ОК
// Остановить текущий PostgeSQL
systemctl stop postgresql
//// Миграция БД
su - postgres -c " \
/usr/pgsql-14/bin/pg_upgrade \
--old-datadir=/var/lib/pgsql/data \
--new-datadir=/var/lib/pgsql/14/data \
--old-bindir=/usr/bin \
--new-bindir=/usr/pgsql-14/bin \
--old-options '-c config_file=/var/lib/pgsql/data/postgresql.conf' \
--new-options '-c config_file=/var/lib/pgsql/14/data/postgresql.conf' \
"
// В выводе везде должно быть ОК и "Обновление завершено"
// Запускаем PostgeSQL 14
systemctl start postgresql-14
// Эту команду PostgeSQL сам попросит выполнить
su - postgres -c "PGPORT=5433 /usr/pgsql-14/bin/vacuumdb --all --analyze-in-stages"
// Остановим PostgeSQL 14
systemctl stop postgresql-14
// Правим порт на 5432: /var/lib/pgsql/14/data/postgresql.conf
// Переносим настройки из postgresql.conf и pg_hba.conf старого экземпляра в файлы настроек нового экземпляра.
// останавливаем и отключаем старый PostgeSQL
systemctl disable postgresql
systemctl stop postgresql
// Добавляем в автозапуск и запускаем PostgeSQL 14
systemctl enable postgresql-14
systemctl start postgresql-14
Сервер приложений
//// Запустить систему
sudo docker-compose -f docker-compose.yml --project-name prod up -d --remove-orphans
Сервер баз данных
//// Проверить работу Test IT. Если система работает, то удалить старый экземпляр PostgeSQL запустив скрипт, который создался при миграции на PostgeSQL 14
su - postgres -c "/var/lib/pgsql/delete_old_cluster.sh"
Общий процесс обновления
Предварительно делаем резервную копию данных. Переходим в каталог, из которого в предыдущий раз устанавливали Test IT. Копируем из данного каталога файл docker-compose.yml предварительно во вложенный каталог scripts, где находится скрипт backup.sh. Далее выполнить:
chmod +x backup.sh
./backup.sh docker-compose.yml prod
Скачиваем последнюю версию автономного установщика с сайта компании-разработчика. В рамках статьи мы будем устанавливать версию Test IT 3.5.3.
Для новой версии Test IT создаём каталог:
mkdir /home/user/testit353
Помещаем скачанный архив в созданный каталог. В нашем случае в каталог помещаем архив testit_v3.5.3_full.zip. Распаковываем архив:
unzip /home/user/testit353/testit_v3.5.3_full.zip -d /home/user/testit353
Удаляем архив:
rm /home/user/testit353/testit_v3.5.3_full.zip
Подготавливаем файлы docker-compose.yml и .env так как описано в статье Автономная установка Test IT на Red Hat Enterprise Linux с внешней базой данных.
Не рекомендую использовать файлы из прошлой установки, так как в файлах есть отличия и при запуске нового экземпляра Test IT у вас минимум начнутся скачиваться старые версии docker-образов из интернета. Они же попытаются запуститься, однако для нового экземпляра Test IT они не подходят.
Помещаем подготовленные файлы в каталог /home/user/testit353.
Переходим в каталог:
cd /home/user/testit353/
Загружаем образы новых контейнеров в docker:
sudo docker load -i images.tar.gz
После загрузки образов запускаем новый экземпляр Test IT:
sudo docker-compose -f docker-compose.yml --project-name prod up -d --remove-orphans
Обновление завершено. Каталог, из которого в предыдущий раз устанавливали Test IT удаляем. Каталог /home/user/testit353 с текущими данными оставляем.
Со временем у вас будет увеличиваться количество docker-образов старых версий системы Test IT, которые не используются. Чтобы удалить неиспользуемые образы включая образы помеченные тегами необходимо выполнить команду (при запущенном Test IT):
docker image prune -a
В итоге будет увеличено свободное место на сервере.