Help:Installation: Difference between revisions

From Svacer Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 122: Line 122:
По умолчанию web сервер запускается на интерфейсе '''0.0.0.0:<port>'''. Для указания отличного  сетевого интерфейса пользователь может использовать опцию '''--listen <network interface>'''.
По умолчанию web сервер запускается на интерфейсе '''0.0.0.0:<port>'''. Для указания отличного  сетевого интерфейса пользователь может использовать опцию '''--listen <network interface>'''.
По умолчанию grpc сервер запускается на интерфейсе '''0.0.0.0:<port>'''. Для указания отличного сетевого интерфейса пользователь может использовать опцию '''--listen-grpc <network interface>'''.
По умолчанию grpc сервер запускается на интерфейсе '''0.0.0.0:<port>'''. Для указания отличного сетевого интерфейса пользователь может использовать опцию '''--listen-grpc <network interface>'''.
=== Hooks ===
Для получения данных 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>”, …]
        },
        ...
      ]
    }
'''Параметры 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>
|}

Revision as of 14:38, 13 January 2023

Установка

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

Установка и запуск из deb/rpm пакета

Процесс установки из .deb и .rpm пакетов несколько различается и будет описан ниже в отдельных главах. Процесс настройки и запуска не различается и будет описан в одной общей главе.

.deb

Скачайте .deb пакет релиза и выполните следующую команду

   sudo apt install ./svacer_<version>_amd64.deb

При этом, если в репозиториях есть PostgreSQL нужной версии, он будет установлен автоматически. Если нет, то установка завершится с ошибкой о зависимости от PostgreSQL. В этом случае вам надо будет установить PostgreSQL версии не ниже 10-й (см. документацию), после чего повторить установку Svacer.

.rpm

Установите PostgeSQL версии не ниже 10-й для вашей ОС следуя документации. Дополнительно установите пакет postgresql-contrib из тех же репозиториев.

Пример для Centos 7

   sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
   sudo yum install -y postgresql14-server postgresql14-contrib
   sudo /usr/pgsql-14/bin/postgresql-14-setup initdb
   sudo systemctl enable postgresql-14
   sudo systemctl start postgresql-14

Для версий PostgreSQL ниже 13-й требуется явно разрешить подключение к локальному хосту базы с логином/паролем. Для этого проверьте следующие строчки в конце файла /var/lib/pgsql/<version>/data/pg_hba.conf

   # IPv4 local connections:
   host    all    all    127.0.0.1/32    ident
# IPv6 local connections: host all all  ::1/128 ident

В случае если в последнем столбце указано значение ident, поменяйте его на md5 и перезапустите PostgreSQL.

   sudo systemctl restart postgresql-12

Скачайте .rpm пакет релиза Svacer и выполните следующую команду

   sudo yum install ./svacer-<version>.x86_64.rpm

Настройка и запуск

Процесс настройки и запуска одинаковый для Svacer установленного из .deb и .rpm пакетов.

В процессе установки создаются следующие файлы и директории

  • /etc/default/svacer — конфигурационный файл
  • /var/log/svacer — директория для логов
  • /var/lib/svacer — директория для object store

После установки Svacer требуется создать пользователя и БД PostgreSQL. Для этого перейдите в пользователя postgres, запустите psql и выполните соответствующие запросы, после чего выйдите из консоли PostgreSQL и из пользователя postgres.

   sudo su -l postgres
   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). При использовании этих значений дальнейшая конфигурация не требуется и можно переходить к запуску.

При использовании других имен пользователя, БД или пароля потребуется дополнительная конфигурация перед запуском Svacer: в файле /etc/default/svacer нужно поменять параметры подключения к БД в строке

   SVACER_ARGS="--pg postgres://<user>:<password>@127.0.0.1:5432/<database>"

В этой же строке можно указывать прочие аргументы для запуска сервера Svacer.

После создания БД и настройки конфигурации Svacer запустить его можно следующими командами

   sudo systemctl enable svacer
   sudo systemctl start svacer

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

   systemctl status svacer

В случае успешного запуска сервер будет доступен по адресу http://localhost:8080

При установке из .deb или .rpm пакета Svacer ставится в директорию, прописанную в $PATH, поэтому при запуске Svacer для импорта и загрузки результатов полный путь к исполняемому файлу svacer указывать не требуется, он будет доступен просто по имени.

Запуск в docker

Установите docker и docker-compose. Поскольку образы PostgreSQL и Svacer размещены на докер-хабе, для их скачивания при запуске необходимо наличие интернета.

Используйте для запуска docker-compose файл, находящийся в дистрибутиве Svacer: ./extra/docker-compose.yml. Перейдите в директорию, где находится этот файл и выполните команду

   docker-compose up -d

При этом будет запущено два контейнера: PostgreSQL и Svacer. После запуска контейнеров веб-интерфейс Svacer будет доступен по адресу http://localhost:8080

В процессе запуска в текущей директории будут созданы две директории

  • postgres_data — для хранения БД PostgreSQL
  • svacer_data — для object store сервера Svacer

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

Важное уточнение: в докере запускается только сервер Svacer. Для импорта и загрузки результатов на сервер будет нужен исполняемый файл svacer.

Остановить сервер Svacer можно, выполнив следующую команду

   docker-compose down

Также можно запустить в докер-контейнере только PostgreSQL для последующего запуска Svacer вручную. Используйте файл ./extra/docker-compose-postgres.yml

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

Чтобы остановить, соответственно

   docker-compose -f docker-compose-postgres.yml down

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

Для установки Svacer скачайте и распакуйте архив дистрибутива (файл с названием вида svacer_release-<version>.zip).

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

   ./bin/svacer server --pg postgres://svacer_user:svacer123@127.0.0.1:5432/svacer_db

Если вы запустили PostgreSQL в докер-контейнере, используя файл ./extra/docker-compose-postgres.yml, то при запуске Svacer параметр --pg для подключения к БД можно не указывать, поскольку был создан пользователь и база, прописанные в Svacer как параметры по умолчанию.

После запуска сервера его веб-интерфейс будет доступен по адресу http://localhost:8080 По умолчанию web сервер запускается на интерфейсе 0.0.0.0:<port>. Для указания отличного сетевого интерфейса пользователь может использовать опцию --listen <network interface>. По умолчанию grpc сервер запускается на интерфейсе 0.0.0.0:<port>. Для указания отличного сетевого интерфейса пользователь может использовать опцию --listen-grpc <network interface>.