Help:Installation
Установка и запуск
Для использования только клиента Svacer достаточно скачать исполняемый файл svacer, или установить deb/rpm пакет.
Сервер Svacer можно запустить в докере или из deb/rpm пакета.
docker compose
Рекомендуемый и самый простой способ деплоя — развернуть сервер Svacer в докер-контейнерах, воспользовавшиcь docker-compose.yml файлом:
curl -LO https://svacer.ispras.ru/extra/docker-compose.yml docker compose up -d
После запуска контейнеров веб-интерфейс Svacer будет доступен по адресу http://localhost:8080, логин / пароль — admin / admin.
Для сборки своего докер-образа Svacer можете использовать Dockerfile в качестве референса.
Для указания других параметров сервера можете переопределить команду запуска в docker-compose файле.
deb/rpm
PostgreSQL
- Рекомендуемая версия PostgreSQL — 15 и выше. С более старыми версиями корректная работа Svacer не гарантируется.
- Svacer требует эксклюзивного доступа к базе. Использование одной и той же базы для нескольких экземпляров Svacer может приводить к порче данных.
Для работы сервера Svacer установите PostgreSQL, следуя документации postgres. Для RedHat-based OS нужно дополнительно установить пакет postgresql-contrib соответствующей версии.
Пример для Ubuntu 22:
sudo apt install -y postgresql-common sudo /usr/share/postgresql-common/pgdg/apt.postgresql.org.sh sudo apt install -y postgresql-17
Пример для Rocky Linux 9.4:
sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm sudo dnf -qy module disable postgresql sudo dnf install -y postgresql17-server postgresql17-contrib sudo /usr/pgsql-17/bin/postgresql-17-setup initdb sudo systemctl enable postgresql-17 sudo systemctl start postgresql-17
Браузер для PDF-отчетов
Для создания PDF-отчетов с использованием нового HTML-генератора установите браузер Google Chrome на машину, где запускается сервер Svacer. Рекомендуется устанавливать из официального репозитория, следуя инструкции с сайта google.
При запуске Svacer проверит доступность браузера для генерации PDF. Если он не установлен или генерация не работает, будет использован нативный генератор: менее продвинутый, но для него не нужен браузер. Можно явно включить использование нативного генератора, передав опцию --pdf-generator=native при запуске сервера Svacer.
При невозможности установить Google Chrome, например если нет пакета для вашего дистрибутива Linux, можно установить Chromium. Его пакет в репозиториях, в зависимости от вышей ОС, может называться chromium-browser или chromium. В некоторых случаях генерация с Chromium может не работать. Например, если Svacer установлен из deb-пакета, а Сhromium из snap (на Ubuntu он устанавливается именно так даже при использовании apt) и сервер Svacer запускается от отдельного системного пользователя, от которого Chromium не может запуститься. В этом случае установите Google Chrome, с ним генерация работает.
Svacer
На Debian-based OS добавьте apt-репозиторий и установите Svacer из него.
echo 'deb [signed-by=/usr/share/keyrings/ispras.gpg] https://repo.ispras.ru/apt /' | sudo tee /etc/apt/sources.list.d/ispras.list curl -fsSL https://repo.ispras.ru/apt/key.asc | sudo gpg --dearmor -o /usr/share/keyrings/ispras.gpg sudo apt update sudo apt install -y svacer
На RedHat-based OS добавьте dnf-репозиторий и установите Svacer из него
curl -fsSL https://repo.ispras.ru/rpm/ispras.repo | sudo tee /etc/yum.repos.d/ispras.repo sudo dnf install -y svacer
Для создания БД PostgreSQL запустите psql от учетной записи пользователя postgres
sudo su -l postgres psql
И выполните следующие запросы:
create database svace; create user svace with encrypted password 'svace'; grant all privileges on database svace to svace; alter user svace superuser;
В данном примере создается БД svace и права на нее выдаются пользователю svace с паролем svace. Также этому пользователю выдаются права суперюзера, что необходимо для создания расширений в PostgreSQL. При использовании этих значений по умолчанию дальнейшая конфигурация не требуется и можно переходить к запуску.
При использовании других значений нужно поменять параметры подключения к БД в файле /etc/default/svacer
SVACER_ARGS="--pg postgres://<user>:<password>@127.0.0.1:5432/<database>"
В этой же строке можно указать прочие аргументы для запуска сервера Svacer.
На Astra Linux необходимо в файле /etc/parsec/mswitch.conf установить параметр zero_if_notfound: yes, иначе при запуске Svacer будет ошибка подключения к БД вида
error obtaining MAC configuration for user "svace" (SQLSTATE 57P03)
После создания БД и конфигурации сервера Svacer запустить его можно следующими командами
sudo systemctl enable svacer sudo systemctl start svacer
После чего проверить успешность запуска командой
systemctl status svacer
После запуска сервер будет доступен по адресу http://localhost:8080, логин / пароль — admin / admin.
Установка и запуск на Windows
PostgreSQL нужен только для сервера Svacer, для клиента не требуется.
- Скачайте установщик PostgreSQL для Windows: https://www.postgresql.org/download/windows
- Установите PostgreSQL, выбрав, как минимум, компоненты "PostgreSQL Server" и "Command Line Tools"
- Задайте и запомните пароль на шаге выбора пароля для суперпользователя
- Остальные параметры при установке можно оставить по умолчанию
- После установки PostgreSQL откройте консоль, перейдите в директорию, куда установили PostgreSQL, запустите его клиент с указанием пользователя "postgres" и авторизуйтесь с паролем, заданным во время установки
cd c:\Program Files\PostgreSQL\15\bin psql -U postgres
- Запустится консоль управления PostgreSQL. Выполните в ней следующие команды, чтобы создать БД и пользователя для Svacer
create database svace; create user svace with encrypted password 'svace'; grant all privileges on database svace to svace; alter user svace superuser;
- Выйдите из консоли PostgreSQL
- Запустите svacer-server.exe из консоли с указанием параметров подключения к БД. Если при создании пользователя и БД PostgreSQL вы использовали для них имя по умолчанию 'svace', как в примере выше, то указывать данные для подключения к БД при запуске сервера не обязательно
svacer-server.exe run
- Если создавали пользователя или БД с другими именами, то при запуске сервера надо указать их явно
svacer-server.exe run --pg postgres://svacer_user:svacer_password@127.0.0.1:5432/svacer_database
- После запуска сервера его веб-интерфейс будет доступен по адресу http://localhost:8080, логин / пароль — admin / admin
Обновление
Миграции схем БД PostgreSQL и object store происходят автоматически при обновлении на новую версию Svacer. Поэтому для обновления Svacer достаточно остановить сервер старой версии, запустить сервер новой версии, указав ему те же параметры БД и object store, и подождать, пока не пройдет обновление, после чего Svacer запустится как обычно. При больших объемах данных в БД это может занять существенное время, до нескольких часов. Прогресс можно отслеживать по логам сервера.
Версии не имеют обратной совместимости, то есть после обновления на следующую версию, откатиться на предыдущую можно будет, только восстановив БД из бэкапа.
Upgrade notes
12-x-x
- Рекомендуем обновить PostgreSQL до версии 15 или выше. С более старыми версиями корректная работа Svacer не гарантируется
- Если вы использовали аутентификацию с помощью LDAP в версиях Svacer 5-1-X и у вас не работает механизм тегирования или уведомлений (подписки), см решение проблем с отсутствием статуса пользователя в БД
11-x-x
Нет специфических рекомендаций по обновлению.
10-x-x
Нет специфических рекомендаций по обновлению.
9-0-0
Базово, никаких обязательных ручных действий с базой данных или object store при обновлении на 9-0-0 не требуется. Описанные ниже шаги могут помочь увеличить производительность сервера Svacer или решить возможные проблемы.
1.
В версии 9-0-0 поменялся формат object store, поэтому при обновлении с предыдущих версий Svacer на 9-0-0 или выше будет запущена конвертация object store в новый формат. Конвертация сначала записывает новые данные, а потом, если все прошло успешно, удаляет старые. Из-за этого для конвертации нужно примерно в два раза больше свободного дискового пространства, чем занимает текущий object store. При больших размерах object store и медленном диске конвертация может занять много времени.
Конвертация запустится автоматически при обновлении на 9-0-0, но можно запустить вручную отдельно:
svacer-server kvconvert --from <path> --to <path>
Расположение object store в файловой системе описано в разделе про бэкапы.
2.
Перед установкой новой версии рекомендуется выполнить следующий запрос в БД для удаления дубликатов описаний чекеров.
delete from checkers where id not in (select max(id) from checkers group by (config_id, checker_id, languages, tools));
Если вы уже выполняли этот запрос при обновлении на 8-0-0, то второй раз запускать не обязательно.
3.
После обновления на версию 9-0-0 и завершения всех миграций БД (когда станет доступен веб-интерфейс) рекомендуем выполнить команду VACUUM FULL в PostgreSQL для очистки и оптимизации базы данных.
psql -h <postgres_host> -U <username> <svacer_database_name> -c 'VACUUM FULL;'
Например:
psql -h localhost -U svacer svacer_db -c 'VACUUM FULL;'
8-0-0
Если при обновлении на версию 8-0-0 и выше возникает подобная ошибка
Key (config_id, checker_id, languages, tools)=(4cd178ce-a2b2-4692-a45a-f84b145c807b, FB.ICAST_QUESTIONABLE_UNSIGNED_RIGHT_SHIFT, {JAVA}, {SpotBugs}) is duplicated
Это значит, что в БД есть дубликаты чекеров. Выполните следующий SQL-запрос в PostgreSQL-базе Svacer, чтобы удалить их:
delete from checkers where id not in (select max(id) from checkers group by (config_id, checker_id, languages, tools));