Будет рассмотрена автономная установка и вынос баз данных из контейнеров на отдельный сервер. Если вы читаете данную статью, то скорее всего вы уже знаете, что такое Test IT, если нет, то в интернете есть статьи, описывающие данную систему управления тестированием. Мы же начнём сразу с практики установки системы. Установка Test IT будем производить на Red Hat Enterprise Linux 8 с нуля, поэтому весь процесс описан подробно. Скорее всего данная инструкция подойдёт и для CentOS.

В исходной поставке Test IT и базы данных (их на данный момент 3) живут в docker-контейнерах на одном сервере. Мы будем использовать базы данных, которые находится вне контейнеров и вынесем базы данных на другой сервер. В итоге у нас будет два сервера: сервер баз данных, сервер приложений.

Нам с вами необходимо:

Предполагаем, что у вас уже есть два сервера:

  1. Сервер приложений на Red Hat Enterprise Linux с установленными Docker и Docker Compose.
  2. Сервер баз данных на Red Hat Enterprise Linux с установленным PostgreSQL.

На данный момент Test IT работает с PostgreSQL версии не меньше 10-й. Если у вас версия PostgreSQL меньше 10-й, то ряд docker-контейнеров у Test IT не запустится и вы не сможете с системой работать. Проверено.

Если нету, то разверните их. Статьи по ссылкам выше помогут вам установить на серверах PostgreSQL, Docker и Docker Compose.

Развернуть базы данных для Test IT

Нам необходимо создать базы данных для Test IT, для этого на сервере баз данных в терминале по порядку выполняем ряд команд (строки с комментария начинающиеся на # игнорируем и не вводим):

yum install postgresql-contrib
su - postgres
psql

create database testit_db;
create database testit_authdb;
create database testit_avatarsdb;
create database testit_backgrounddb;

create user tester with encrypted password 'tester';
grant all privileges on database testit_db to tester;
grant all privileges on database testit_authdb to tester;
grant all privileges on database testit_avatarsdb to tester;
grant all privileges on database testit_backgrounddb to tester;

# выйти из psql
\q

psql -d testit_db
CREATE EXTENSION if not exists "uuid-ossp" SCHEMA public;
\q

psql -d testit_authdb
CREATE EXTENSION if not exists "uuid-ossp" SCHEMA public;
\q

psql -d testit_avatarsdb
CREATE EXTENSION if not exists "uuid-ossp" SCHEMA public;
\q

psql -d testit_backgrounddb
CREATE EXTENSION if not exists "uuid-ossp" SCHEMA public;
\q

Вы можете по каждой базе данных проверять, что расширение установлено выполнив после команды CREATE EXTENSION… следующую команду:

\dx uuid-ossp
Проверить, что расширение uuid-ossp установлено

Выходим из-под пользователя postgres:

exit

База данных создана и готова к работе.

Установка Test IT

Систему мы будем устанавливать из автономного установщика, который можно скачать на сайте разработчиков данной системы по ссылке https://testit.software/downloads

После скачивания необходимо распаковать архив и внести правки в служебные файлы.

Файл .env

Вносим правки в указанные ниже строки указав свои настройки подключения к базе данных, а также закомментируем девять строк (#).

Было:

POSTGRES_DB=testitdb
POSTGRES_USER=postgres
POSTGRES_PASSWORD=F1rstL0g0N!
DB_CONNECTION_STRING=Host=db;Port=${POSTGRES_PORT};Database=${POSTGRES_DB};Username=${POSTGRES_USER};Password=${POSTGRES_PASSWORD};Pooling=true;Maximum Pool Size=130;Command Timeout=30

POSTGRES_AUTH_DB=authdb
POSTGRES_AUTH_USER=postgres
POSTGRES_AUTH_PASSWORD=F1rstL0g0N!
AUTH_CONNECTION_STRING=Host=authdb;Port=${POSTGRES_PORT};Database=${POSTGRES_AUTH_DB};Username=${POSTGRES_AUTH_USER};Password=${POSTGRES_AUTH_PASSWORD};Pooling=true;Maximum Pool Size=130;Command Timeout=30

POSTGRES_AVATARS_DB=avatarsdb
POSTGRES_AVATARS_USER=postgres
POSTGRES_AVATARS_PASSWORD=F1rstL0g0N!
AVATARS_CONNECTION_STRING=Host=avatars-db;Port=${POSTGRES_PORT};Database=${POSTGRES_AVATARS_DB};Username=${POSTGRES_AVATARS_USER};Password=${POSTGRES_AVATARS_PASSWORD};Command Timeout=30

POSTGRES_BACKGROUND_DB=backgrounddb
POSTGRES_BACKGROUND_USER=postgres
POSTGRES_BACKGROUND_PASSWORD=F1rstL0g0N!
BACKGROUND_CONNECTION_STRING=Host=backgrounddb;Port=${POSTGRES_PORT};Database=${POSTGRES_BACKGROUND_DB};Username=${POSTGRES_BACKGROUND_USER};Password=${POSTGRES_BACKGROUND_PASSWORD};Pooling=true;Maximum Pool Size=30;Command Timeout=30

Стало:

DB_CONNECTION_STRING=Host=192.168.56.112;Port=5432;Database=testit_db;Username=tester;Password=tester;Pooling=true;Maximum Pool Size=130;Command Timeout=30

AUTH_CONNECTION_STRING=Host=192.168.56.112;Port=5432;Database=testit_authdb;Username=tester;Password=tester;Pooling=true;Maximum Pool Size=130;Command Timeout=30

AVATARS_CONNECTION_STRING=Host=192.168.56.112;Port=5432;Database=testit_avatarsdb;Username=tester;Password=tester;Command Timeout=30

BACKGROUND_CONNECTION_STRING=Host=192.168.56.112;Port=5432;Database=testit_backgrounddb;Username=tester;Password=tester;Pooling=true;Maximum Pool Size=30;Command Timeout=30

Вместо 192.168.56.112 указываете IP своего сервера баз данных.

Указать корректный URL на домен по которому будет размещена ваша система Test IT (без закрывающего слеша). Пример:

FRONTEND_URL=https://testit.victorz.ru

В будущем можно изменить параметр.

Файл docker-compose.yml

Полностью удалить секции с упоминанием баз данных: db, authdb, avatars.db, backgrounddb. На картинках для примера выделено что нужно удалить, удаляем весь выделенный блок (изображения можно увеличить):

Автономная установка Test IT на Red Hat Enterprise Linux с внешней базой данных
Автономная установка Test IT на Red Hat Enterprise Linux с внешней базой данных

Закомментировать все упоминания этих баз данных в секциях depends_on:

Автономная установка Test IT на Red Hat Enterprise Linux с внешней базой данных

Удалить все без исключения упоминания этих баз данных в секциях volumes (удалить строки с упоминанием authdb-volume, db-volume, avatars.db-volume). Пример:

Автономная установка Test IT на Red Hat Enterprise Linux с внешней базой данных

Установка системы

Само приложение разворачивается на сервере приложений, в то время как база данных у нас находится на сервере баз данных.

Для установки будет использоваться Docker Compose версии старше 1.20.0. Если у вас версия младше, то посетите сайт разработчика и найдите инструкцию по установке, а лучше обновите Docker Compose.

Необходимо вписать параметры vm.max_map_count=262144 и vm.overcommit_memory=1 в файл /etc/sysctl.conf, для этого в терминале набираем команды:

echo 'vm.max_map_count=262144' >> /etc/sysctl.conf
echo 'vm.overcommit_memory = 1' >> /etc/sysctl.conf

# проверка
sysctl -p

Открыть 80-й и 443-й порт, для доступа к системе:

firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent
firewall-cmd --reload

Определяем пользователя, под которым мы будем устанавливать и запускать Test IT и авторизуемся под ним. В нашем случае — это user.

Создаём каталог testit:

mkdir /home/user/testit

Копируем скачанный архив в каталог /home/user/testit (на текущий момент у нас архив имеет имя testit_v3.2.2_full.zip).

Распакуем архив:

unzip /home/user/testit/testit_v3.2.2_full.zip -d /home/user/testit

Удалим исходный архив:

rm /home/user/testit/testit_v3.2.2_full.zip

После распаковки заменим файлы из архива .env и docker-compose.yml на те которые мы ранее изменили.

Запускаем установку:

cd /home/user/testit/
sudo docker load -i images.tar.gz
sudo docker-compose -f docker-compose.yml --project-name prod up --detach --timeout 120

Система установлена. Теперь в браузере набираем IP-адрес сервера и открывается главная страница системы:

Автономная установка Test IT на Red Hat Enterprise Linux с внешней базой данных

До полной инициализации системы может потребоваться до 3 минут. Пока система не инициализирована полностью могут временно появляться ошибки на главной странице. Далее работаем с системой используя руководство администратора https://docs.testit.software/user-guide/admin-guide

Онлайн установку не описываю, так как она аналогична автономной установке, но обязательное условие — серверу требуется доступ в интернет.

Подсказки

Если при установке Test IT вы не изменяли параметр FRONTEND_URL=http://localhost в файле .env и у вас через определённое время появилась необходимость указать верный URL, то вам необходимо изменить данный параметр и после этого перезапустить систему командой:

docker-compose -f docker-compose.yml --project-name prod restart --timeout 120