Help:Installation: Difference between revisions

From Svacer Wiki
No edit summary
m (fix link)
 
(157 intermediate revisions by 7 users not shown)
Line 1: Line 1:
[[Category:Help]]
== Установка и запуск ==
[[:Category:Help]]
Для использования только клиента Svacer достаточно [[Svacer#Релизы|скачать исполняемый файл]] '''svacer''', или установить [[Help:Installation#Svacer|deb/rpm пакет]].
__TOC__


Сервер Svacer можно запустить в [[Help:Installation#docker compose|докере]] или из [[Help:Installation#deb/rpm|deb/rpm пакета]].


== Установка ==
=== docker compose ===
Для работы сервера необходим PostgreSQL. Его можно установить как пакет, либо запустить в докере — docker-compose файл для этого находится в '''./extra/docker-compose-postgres.yml'''.
Рекомендуемый и самый простой способ деплоя — развернуть сервер Svacer в докер-контейнерах, воспользовавшиcь [https://svacer.ispras.ru/extra/docker-compose.yml docker-compose.yml] файлом:
Svacer сервер состоит из единственного бинарного файла — '''svacer'''. Он предоставляет как backend-часть, так и веб-сервер, который передаёт статику. По умолчанию запускается на порту 8080.
После запуска по умолчанию создается учётная запись пользователя '''admin''' c паролем '''admin'''. Изменить пароль можно в веб-интерфейсе.
Сервер имеет широкие возможности настройки параметров запуска. Узнать о них подробнее можно, прочитав '''svacer --help'''.


<nowiki>curl -LO https://svacer.ispras.ru/extra/docker-compose.yml</nowiki>
docker compose up -d


=== Установка и запуск из deb/rpm пакета ===
После запуска контейнеров веб-интерфейс Svacer будет доступен по адресу http://localhost:8080, логин / пароль — admin / admin.
Процесс установки из .deb и .rpm пакетов несколько различается и будет описан ниже в отдельных главах. Процесс настройки и запуска не различается и будет описан в одной общей главе.


Для сборки своего докер-образа Svacer можете использовать [[Dockerfile]] в качестве референса.


==== .deb ====
Для указания других параметров сервера можете [[Help:Configuration#Дополнительные параметры при запуске в docker|переопределить команду запуска]] в docker-compose файле.
Скачайте .deb пакет релиза и выполните следующую команду


'''sudo apt install ./svacer_<version>_amd64.deb'''
=== deb/rpm ===
==== PostgreSQL ====
{{Note|type=info|text=Disclaimer
* Рекомендуемая версия PostgreSQL — 15 и выше. С более старыми версиями корректная работа Svacer не гарантируется.
* Svacer требует эксклюзивного доступа к базе. Использование одной и той же базы для нескольких экземпляров Svacer может приводить к порче данных.}}


При этом, если в репозиториях есть PostgreSQL нужной версии, он будет установлен автоматически. Если нет, то установка завершится с ошибкой о зависимости от PostgreSQL. В этом случае вам надо будет установить PostgreSQL версии не ниже 10-й (см. [https://www.postgresql.org/download/linux/ документацию]), после чего повторить установку Svacer.
Для работы сервера Svacer установите PostgreSQL, следуя [https://www.postgresql.org/download/linux документации postgres]. Для RedHat-based OS нужно дополнительно установить пакет postgresql-contrib соответствующей версии.


Пример для Ubuntu 22:


==== .rpm ====
sudo apt install -y postgresql-common
Установите PostgeSQL версии не ниже 10-й для вашей ОС следуя [https://www.postgresql.org/download/linux/redhat/ документации]. Дополнительно установите пакет postgresql-contrib из тех же репозиториев.
sudo /usr/share/postgresql-common/pgdg/apt.postgresql.org.sh
sudo apt install -y postgresql-17


Пример для Centos 7<br>
Пример для Rocky Linux 9.4:


    sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
<nowiki>sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm</nowiki>
    sudo yum install -y postgresql14-server postgresql14-contrib
sudo dnf -qy module disable postgresql
    sudo /usr/pgsql-14/bin/postgresql-14-setup initdb
sudo dnf install -y postgresql17-server postgresql17-contrib
    sudo systemctl enable postgresql-14
sudo /usr/pgsql-17/bin/postgresql-17-setup initdb
    sudo systemctl start postgresql-14
sudo systemctl enable postgresql-17
sudo systemctl start postgresql-17


Для версий PostgreSQL ниже 13-й требуется явно разрешить подключение к локальному хосту базы с логином/паролем. Для этого проверьте следующие строчки в конце файла '''/var/lib/pgsql/<version>/data/pg_hba.conf'''
==== Браузер для PDF-отчетов ====
Для создания PDF-отчетов с использованием нового HTML-генератора установите браузер Google Chrome на машину, где запускается сервер Svacer. Рекомендуется устанавливать из официального репозитория, следуя [https://www.google.com/chrome/?platform=linux инструкции с сайта google].  


    # IPv4 local connections:
{{Note|type=info|text=Рекомендуемые системные требования при генерации PDF-отчетов для больших проектов с использованием HTML-генератора: Intel Core i9, 64 GB RAM, SSD, видеокарта Nvidia}}
    host    all    all    127.0.0.1/32    ident


    # IPv6 local connections:
При запуске Svacer проверит доступность браузера для генерации PDF. Если он не установлен или генерация не работает, будет использован нативный генератор: менее продвинутый, но для него не нужен браузер. Можно явно включить использование нативного генератора, передав опцию <code>--pdf-generator=native</code> при запуске сервера Svacer.
    host    all    all    ::1/128        ident


В случае если в последнем столбце указано значение '''ident''', поменяйте его на '''md5''' и перезапустите PostgreSQL.
При невозможности установить Google Chrome, например если нет пакета для вашего дистрибутива Linux, можно установить Chromium. Его пакет в репозиториях, в зависимости от вышей ОС, может называться <code>chromium-browser</code> или <code>chromium</code>. В некоторых случаях генерация с Chromium может не работать. Например, если Svacer установлен из deb-пакета, а Сhromium из snap (на Ubuntu он устанавливается именно так даже при использовании apt) и сервер Svacer запускается от отдельного системного пользователя, от которого Chromium не может запуститься. В этом случае установите Google Chrome, с ним генерация работает.


'''sudo systemctl restart postgresql-12'''
==== Svacer ====
На Debian-based OS добавьте apt-репозиторий и установите Svacer из него.


Скачайте .rpm пакет релиза Svacer и выполните следующую команду
<nowiki>echo 'deb [signed-by=/usr/share/keyrings/ispras.gpg] https://repo.ispras.ru/apt /' | sudo tee /etc/apt/sources.list.d/ispras.list</nowiki>
<nowiki>curl -fsSL https://repo.ispras.ru/apt/key.asc | sudo gpg --dearmor -o /usr/share/keyrings/ispras.gpg</nowiki>
sudo apt update
sudo apt install -y svacer


'''sudo yum install ./svacer-<version>.x86_64.rpm'''
На RedHat-based OS добавьте dnf-репозиторий и установите Svacer из него


<nowiki>curl -fsSL https://repo.ispras.ru/rpm/ispras.repo | sudo tee /etc/yum.repos.d/ispras.repo</nowiki>
sudo dnf install -y svacer


==== Настройка и запуск ====
Для создания БД PostgreSQL запустите '''psql''' от учетной записи пользователя '''postgres'''
Процесс настройки и запуска одинаковый для Svacer установленного из .deb и .rpm пакетов.


В процессе установки создаются следующие файлы и директории
sudo su -l postgres
* /etc/default/svacer — конфигурационный файл
psql
* /var/log/svacer — директория для логов
* /var/lib/svacer — директория для object store


После установки Svacer требуется создать пользователя и БД PostgreSQL. Для этого перейдите в пользователя postgres, запустите psql и выполните соответствующие запросы, после чего выйдите из консоли PostgreSQL и из пользователя postgres.
И выполните следующие запросы:
create database svace;
create user svace with encrypted password 'svace';
grant all privileges on database svace to svace;
alter user svace superuser;


    sudo su -l postgres
В данном примере создается БД svace и права на нее выдаются пользователю svace с паролем svace. Также этому пользователю выдаются права суперюзера, что необходимо для создания расширений в PostgreSQL. При использовании этих значений по умолчанию дальнейшая конфигурация не требуется и можно переходить к запуску.
    psql
    postgres=# create database svace;
    postgres=# create user svace with encrypted password 'svace';
    postgres=# grant all privileges on database svace to svace;
    postgres=# alter user svace superuser;


В данном примере создается БД svace и права на нее выдаются пользователю svace с паролем svace, а также этому пользователю выдаются права суперюзера (это необходимо для создания расширений в PostgreSQL). При использовании этих значений дальнейшая конфигурация не требуется и можно переходить к запуску.
При использовании других значений нужно поменять параметры подключения к БД в файле '''/etc/default/svacer'''


При использовании других имен пользователя, БД или пароля потребуется дополнительная конфигурация перед запуском Svacer: в файле '''/etc/default/svacer''' нужно поменять параметры подключения к БД в строке
SVACER_ARGS="--pg postgres://<user>:<password>@127.0.0.1:5432/<database>"


'''SVACER_ARGS="--pg postgres://<user>:<password>@127.0.0.1:5432/<database>"'''
В этой же строке можно указать прочие аргументы для запуска сервера Svacer.


В этой же строке можно указывать прочие аргументы для запуска сервера Svacer.
На Astra Linux необходимо в файле '''/etc/parsec/mswitch.conf''' установить параметр <code>zero_if_notfound: yes</code>, иначе при запуске Svacer будет ошибка подключения к БД вида


После создания БД и настройки конфигурации Svacer запустить его можно следующими командами
error obtaining MAC configuration for user "svace" (SQLSTATE 57P03)


    sudo systemctl enable svacer
После создания БД и конфигурации сервера Svacer запустить его можно следующими командами
    sudo systemctl start svacer
 
sudo systemctl enable svacer
sudo systemctl start svacer


После чего проверить успешность запуска командой
После чего проверить успешность запуска командой


    systemctl status svacer
systemctl status svacer
 
В случае успешного запуска сервер будет доступен по адресу http://localhost:8080
 
При установке из .deb или .rpm пакета Svacer ставится в директорию, прописанную в $PATH, поэтому при запуске Svacer для импорта и загрузки результатов полный путь к исполняемому файлу '''svacer''' указывать не требуется, он будет доступен просто по имени.
 


=== Запуск в docker ===
После запуска сервер будет доступен по адресу http://localhost:8080, логин / пароль — admin / admin.
Установите docker и docker-compose. Поскольку образы PostgreSQL и Svacer размещены на докер-хабе, для их скачивания при запуске необходимо наличие интернета.


Используйте для запуска docker-compose файл, находящийся в дистрибутиве Svacer: '''./extra/docker-compose.yml'''. Перейдите в директорию, где находится этот файл и выполните команду
=== Установка и запуск на 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


    docker-compose up -d
== Обновление ==
{{Note|type=reminder|text='''Перед обновлением настоятельно рекомендуется [[Help:Backup|делать резервные копии]]'''}}


При этом будет запущено два контейнера: PostgreSQL и Svacer. После запуска контейнеров веб-интерфейс Svacer будет доступен по адресу http://localhost:8080
Миграции схем БД PostgreSQL и object store происходят автоматически при обновлении на новую версию Svacer. Поэтому для обновления Svacer достаточно остановить сервер старой версии, запустить сервер новой версии, указав ему те же параметры БД и object store, и подождать, пока не пройдет обновление, после чего Svacer запустится как обычно. При больших объемах данных в БД это может занять существенное время, до нескольких часов. Прогресс можно отслеживать по логам сервера.


В процессе запуска в текущей директории будут созданы две директории
Версии не имеют обратной совместимости, то есть после обновления на следующую версию, откатиться на предыдущую можно будет, только восстановив БД из бэкапа.


* postgres_data — для хранения БД PostgreSQL
{{Note|type=warn|text=После запуска Svacer при обновлении обязательно дождитесь пока миграция БД завершится. Если прервать процесс во время миграции, принудительно остановив Svacer, база данных может оказаться в неконсистентном состоянии и придется восстанавливать данные из бэкапа.}}
* svacer_data — для object store сервера Svacer


Эти директории будут примонтированы в соответствующие контейнеры как volumes, это необходимо для сохранения данных БД и сервера после остановки или перезапуска контейнеров.
=== Upgrade notes ===
==== 12-x-x ====
* Рекомендуем обновить PostgreSQL до версии 15 или выше. С более старыми версиями корректная работа Svacer не гарантируется
* Если вы использовали аутентификацию с помощью LDAP в версиях Svacer 5-1-X и у вас не работает механизм тегирования или уведомлений (подписки), см [[LDAP_configuration#Некоторые_замечания_для_пользователей,_которые_использовали_LDAP_в_версиях_Svacer_5-1-X|решение проблем с отсутствием статуса пользователя в БД]]


Важное уточнение: в докере запускается только сервер Svacer. Для импорта и загрузки результатов на сервер будет нужен исполняемый файл svacer.
==== 11-x-x ====
Нет специфических рекомендаций по обновлению.


Остановить сервер Svacer можно, выполнив следующую команду
==== 10-x-x ====
Нет специфических рекомендаций по обновлению.


    docker-compose down
==== 9-0-0 ====
{{Note|type=reminder|text=При обновлении на эту версию рекомендуем не меньше 8GB RAM для корректности миграций}}


Также можно запустить в докер-контейнере только PostgreSQL для последующего запуска Svacer вручную. Используйте файл '''./extra/docker-compose-postgres.yml'''
Базово, никаких обязательных ручных действий с базой данных или object store при обновлении на 9-0-0 не требуется. Описанные ниже шаги могут помочь увеличить производительность сервера Svacer или решить возможные проблемы.


    docker-compose -f docker-compose-postgres.yml up -d
'''1.'''


Чтобы остановить, соответственно
В версии 9-0-0 поменялся формат object store, поэтому при обновлении с предыдущих версий Svacer на 9-0-0 или выше будет запущена конвертация object store в новый формат. Конвертация сначала записывает новые данные, а потом, если все прошло успешно, удаляет старые. Из-за этого для конвертации нужно примерно в два раза больше свободного дискового пространства, чем занимает текущий object store. При больших размерах object store и медленном диске конвертация может занять много времени.


    docker-compose -f docker-compose-postgres.yml down
Конвертация запустится автоматически при обновлении на 9-0-0, но можно запустить вручную отдельно:


svacer-server kvconvert --from <path> --to <path>


=== Установка и запуск вручную ===
Расположение object store в файловой системе описано в [[Help:Backup#Бэкап object store вручную|разделе про бэкапы]].
Для установки Svacer скачайте и распакуйте архив дистрибутива (файл с названием вида '''svacer_release-<version>.zip''').


При использовании PostgreSQL, предварительно настроенного на каком-либо хосте, необходимо использовать соответствующие параметры запуска. Допустим, PostgreSQL работает на локальном хосте, в нем создана БД '''svacer_db''', доступная от пользователя '''svacer_user''' с паролем '''svacer123'''. В этом случае запустите Svacer со следующими параметрами
'''2.'''


    ./bin/svacer server --pg postgres://svacer_user:svacer123@127.0.0.1:5432/svacer_db
Перед установкой новой версии рекомендуется выполнить следующий запрос в БД для удаления дубликатов описаний чекеров.


Если вы запустили PostgreSQL в докер-контейнере, используя файл '''./extra/docker-compose-postgres.yml''', то при запуске Svacer параметр '''--pg''' для подключения к БД можно не указывать, поскольку был создан пользователь и база, прописанные в Svacer как параметры по умолчанию.
delete from checkers where id not in (select max(id) from checkers group by (config_id, checker_id, languages, tools));


После запуска сервера его веб-интерфейс будет доступен по адресу http://localhost:8080
Если вы уже выполняли этот запрос при [[Help:Installation#8-0-0|обновлении на 8-0-0]], то второй раз запускать не обязательно.
По умолчанию web сервер запускается на интерфейсе '''0.0.0.0:<port>'''. Для указания отличного  сетевого интерфейса пользователь может использовать опцию '''--listen <network interface>'''.
По умолчанию grpc сервер запускается на интерфейсе '''0.0.0.0:<port>'''. Для указания отличного сетевого интерфейса пользователь может использовать опцию '''--listen-grpc <network interface>'''.


'''3.'''


=== Hooks ===
После обновления на версию 9-0-0 и завершения всех миграций БД (когда станет доступен веб-интерфейс) рекомендуем выполнить команду <code>VACUUM FULL</code> в PostgreSQL для очистки и оптимизации базы данных.
Для получения данных Hooks при запуске сервера нужно указать опцию '''--hooks <path to JSON file>'''. Эта опция задаёт файл, содержащий информацию о расширении сервера посредством хуков, которые пользователь может вызывать из web-интерфейса.
Каждый хук соответствует некоторому процессу или скрипту, который сервер запускает в ответ на вызов соответствующей команды из web-интерфейса.
Формат файла Hooks следующий:
    {
      "hooks": [
        {
          "id": "<id>",
          "label": "<label >",
          "target": "<target>",
          "input": ["<param1>", "<param2>",…],
          "cmd": "<path to executable>",
          "args": ["<arg1>", “<arg2>”, …]
        },
        ...
      ]
    }


psql -h <postgres_host> -U <username> <svacer_database_name> -c 'VACUUM FULL;'


'''Параметры Hooks'''
Например:  
{| class="wikitable"
! style="width:100px;" | Параметр || Описание
|-
| ''id''
| Идентификатор хука.<br>Должен быть уникальным в файле
|-
| ''label''
| Имя команды, которую пользователь видит в web-интерфейсе
|-
| ''target''
| Место в UI, в которое будет добавлена команда.<br>
Сейчас поддерживается только одно значение — default. Оно соответствует вкладке Details на правой панели пользовательского интерфейса
|-
| ''input''
| Параметры, которые можно передать в запускаемый процесс, исходя из контекста вызова команды в web-интерфейсе.<br>
Поддерживаемые значения:
* markerID — UUID идентификатор маркера;
* branchID — UUID идентификатор ветки;
* snapshotID — UUID идентификатор снимка;
* projectID — UUID идентификатор проекта;
* url — URL маркера в web-интерфейсе, на котором была вызвана команда;
* marker — будет заменен на полное имя временного файла, содержащего сериализованное в JSON представление маркера, который включает в себя его трассу и информацию о разметке
|-
| ''cmd''
| Полный путь к процессу, который будет запущен. Не должен включать аргументы запуска
|-
| ''args''
| Аргументы, передаваемые в запускаемый процесс. Полный список аргументов запускаемого процесса состоит из списка <args> и списка значений, соответствующих полю <input>
|}


psql -h localhost -U svacer svacer_db -c 'VACUUM FULL;'


[[#Top|В начало]]
==== 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));

Latest revision as of 12:22, 28 November 2025

Установка и запуск

Для использования только клиента 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

Disclaimer
  • Рекомендуемая версия 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.

Рекомендуемые системные требования при генерации PDF-отчетов для больших проектов с использованием HTML-генератора: Intel Core i9, 64 GB RAM, SSD, видеокарта Nvidia

При запуске 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 запустится как обычно. При больших объемах данных в БД это может занять существенное время, до нескольких часов. Прогресс можно отслеживать по логам сервера.

Версии не имеют обратной совместимости, то есть после обновления на следующую версию, откатиться на предыдущую можно будет, только восстановив БД из бэкапа.

После запуска Svacer при обновлении обязательно дождитесь пока миграция БД завершится. Если прервать процесс во время миграции, принудительно остановив Svacer, база данных может оказаться в неконсистентном состоянии и придется восстанавливать данные из бэкапа.

Upgrade notes

12-x-x

  • Рекомендуем обновить PostgreSQL до версии 15 или выше. С более старыми версиями корректная работа Svacer не гарантируется
  • Если вы использовали аутентификацию с помощью LDAP в версиях Svacer 5-1-X и у вас не работает механизм тегирования или уведомлений (подписки), см решение проблем с отсутствием статуса пользователя в БД

11-x-x

Нет специфических рекомендаций по обновлению.

10-x-x

Нет специфических рекомендаций по обновлению.

9-0-0

При обновлении на эту версию рекомендуем не меньше 8GB RAM для корректности миграций

Базово, никаких обязательных ручных действий с базой данных или 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));