Help:Installation: Difference between revisions

From Svacer Wiki
No edit summary
No edit summary
Line 1: Line 1:


__TOC__
__TOC__


== Установка ==
== Установка ==
Line 7: Line 8:
После запуска по умолчанию создается учётная запись пользователя admin c паролем admin. Изменить пароль можно в веб-интерфейсе.
После запуска по умолчанию создается учётная запись пользователя admin c паролем admin. Изменить пароль можно в веб-интерфейсе.
Сервер имеет широкие возможности настройки параметров запуска. Узнать о них подробнее можно, прочитав svacer --help.
Сервер имеет широкие возможности настройки параметров запуска. Узнать о них подробнее можно, прочитав svacer --help.


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


==== .deb ====
==== .deb ====
Line 17: Line 20:


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


==== .rpm ====
==== .rpm ====
Line 44: Line 48:
sudo yum install ./svacer-<version>.x86_64.rpm
sudo yum install ./svacer-<version>.x86_64.rpm


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


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


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


Line 112: Line 118:
docker-compose -f docker-compose-postgres.yml down
docker-compose -f docker-compose-postgres.yml down


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


Line 125: Line 132:
По умолчанию grpc сервер запускается на интерфейсе 0.0.0.0:<port>. Для указания отличного сетевого интерфейса пользователь может использовать опцию --listen-grpc <network interface>.
По умолчанию grpc сервер запускается на интерфейсе 0.0.0.0:<port>. Для указания отличного сетевого интерфейса пользователь может использовать опцию --listen-grpc <network interface>.


        2.4 Hooks
 
=== Hooks ===
Для получения данных Hooks при запуске сервера нужно указать опцию --hooks <path to JSON file>. Эта опция задаёт файл, содержащий информацию о расширении сервера посредством хуков, которые пользователь может вызывать из web-интерфейса.  
Для получения данных Hooks при запуске сервера нужно указать опцию --hooks <path to JSON file>. Эта опция задаёт файл, содержащий информацию о расширении сервера посредством хуков, которые пользователь может вызывать из web-интерфейса.  
Каждый хук соответствует некоторому процессу или скрипту, который сервер запускает в ответ на вызов соответствующей команды из web-интерфейса.
Каждый хук соответствует некоторому процессу или скрипту, который сервер запускает в ответ на вызов соответствующей команды из web-интерфейса.
Line 143: Line 151:
}
}


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


[[#Top|В начало]]
[[#Top|В начало]]
[[Category:Help]]
[[Category:Help]]

Revision as of 15:37, 6 December 2022


Установка

Для работы сервера необходим 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

  1. IPv4 local connections:

host all all 127.0.0.1/32 ident

  1. 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>.


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

Параметр Описание
id Идентификатор хука.
Должен быть уникальным в файле
label Имя команды, которую пользователь видит в web-интерфейсе
target Место в UI, в которое будет добавлена команда.

Сейчас поддерживается только одно значение — default. Оно соответствует вкладке Details на правой панели пользовательского интерфейса

input Параметры, которые можно передать в запускаемый процесс, исходя из контекста вызова команды в web-интерфейсе.

Поддерживаемые значения:

  • markerID — UUID идентификатор маркера;
  • branchID — UUID идентификатор ветки;
  • snapshotID — UUID идентификатор снимка;
  • projectID — UUID идентификатор проекта;
  • url — URL маркера в web-интерфейсе, на котором была вызвана команда;
  • marker — будет заменен на полное имя временного файла, содержащего сериализованное в JSON представление маркера, который включает в себя его трассу и информацию о разметке
cmd Полный путь к процессу, который будет запущен. Не должен включать аргументы запуска
args Аргументы, передаваемые в запускаемый процесс. Полный список аргументов запускаемого процесса состоит из списка <args> и списка значений, соответствующих полю <input>

В начало