Help:Installation: Difference between revisions
(add duplicated key problem solution) |
No edit summary |
||
(30 intermediate revisions by 3 users not shown) | |||
Line 10: | Line 10: | ||
==== .deb ==== | ==== .deb ==== | ||
Добавьте apt-репозиторий и установите Svacer из него. | Добавьте наш apt-репозиторий и установите Svacer из него. | ||
<pre> | <pre> | ||
Line 25: | Line 25: | ||
Если вы планируете использовать Svacer только как клиент для взаимодействия с сервером, то больше ничего устанавливать и конфигурировать не нужно. | Если вы планируете использовать Svacer только как клиент для взаимодействия с сервером, то больше ничего устанавливать и конфигурировать не нужно. | ||
Если планируете использовать Svacer как сервер, установите (или [[Help:Installation# | Если планируете использовать Svacer как сервер, установите (или [[Help:Installation#Запуск_в_docker_только_PostgreSQL|запустите в докере]]) PostgreSQL версии не ниже 10-й. | ||
На debian-based системах, обычно, чтобы установить PostgreSQL достаточно выполнить команду | На debian-based системах, обычно, чтобы установить PostgreSQL достаточно выполнить команду | ||
Line 42: | Line 42: | ||
Если вы планируете использовать Svacer только как клиент для взаимодействия с сервером, то больше ничего устанавливать и конфигурировать не нужно. | Если вы планируете использовать Svacer только как клиент для взаимодействия с сервером, то больше ничего устанавливать и конфигурировать не нужно. | ||
Если планируете использовать Svacer как сервер, установите (или [[Help:Installation# | Если планируете использовать Svacer как сервер, установите (или [[Help:Installation#Запуск_в_docker_только_PostgreSQL|запустите в докере]]) PostgreSQL версии не ниже 10-й, следуя [https://www.postgresql.org/download/linux/redhat/ документации], также установите пакет postgresql-contrib из тех же репозиториев. | ||
Пример для Centos 7 | Пример для Centos 7 | ||
Line 91: | Line 91: | ||
В этой же строке можно указывать прочие аргументы для запуска сервера Svacer. | В этой же строке можно указывать прочие аргументы для запуска сервера Svacer. | ||
После создания БД и настройки конфигурации Svacer запустить его можно следующими командами | После создания БД и настройки конфигурации Svacer запустить его можно следующими командами | ||
Line 108: | Line 104: | ||
=== Запуск в docker === | === Запуск в docker === | ||
Установите docker и docker-compose. Поскольку образы PostgreSQL и Svacer размещены на докер-хабе, для их скачивания при запуске необходимо наличие интернета. | Установите docker и docker-compose. Поскольку образы PostgreSQL и Svacer размещены на докер-хабе, для их скачивания при запуске необходимо наличие интернета. | ||
Line 130: | Line 125: | ||
docker-compose down | docker-compose down | ||
==== Запуск в docker только PostgreSQL ==== | |||
Также можно запустить в докер-контейнере только PostgreSQL. Используйте файл '''./extra/docker-compose-postgres.yml''' | |||
==== | |||
Также можно запустить в докер-контейнере только PostgreSQL. Используйте файл '''./extra/docker-compose-postgres.yml''' | |||
docker-compose -f docker-compose-postgres.yml up -d | docker-compose -f docker-compose-postgres.yml up -d | ||
Line 144: | Line 137: | ||
=== Установка и запуск вручную === | === Установка и запуск вручную === | ||
Для установки Svacer скачайте и распакуйте архив дистрибутива (файл с названием ''' | Для установки Svacer скачайте и распакуйте архив дистрибутива (файл с названием '''svacer_release-<version>.zip'''). | ||
При использовании PostgreSQL, предварительно настроенного на каком-либо хосте, необходимо использовать соответствующие параметры запуска. Допустим, PostgreSQL работает на локальном хосте, в нем создана БД '''svacer_db''', доступная от пользователя '''svacer_user''' с паролем '''svacer123'''. В этом случае запустите Svacer со следующими параметрами | При использовании PostgreSQL, предварительно настроенного на каком-либо хосте, необходимо использовать соответствующие параметры запуска. Допустим, PostgreSQL работает на локальном хосте, в нем создана БД '''svacer_db''', доступная от пользователя '''svacer_user''' с паролем '''svacer123'''. В этом случае запустите Svacer со следующими параметрами | ||
Line 155: | Line 148: | ||
=== Установка и запуск на Windows === | === Установка и запуск на Windows === | ||
* Скачайте установщик PostgreSQL для Windows: https://www.postgresql.org/download/windows | * Скачайте установщик PostgreSQL для Windows: https://www.postgresql.org/download/windows | ||
* Установите PostgreSQL, выбрав, как минимум, компоненты "PostgreSQL Server" и "Command Line Tools" | * Установите PostgreSQL, выбрав, как минимум, компоненты "PostgreSQL Server" и "Command Line Tools" | ||
Line 170: | Line 161: | ||
alter user svace superuser; | alter user svace superuser; | ||
* Выйдите из консоли PostgreSQL | * Выйдите из консоли PostgreSQL | ||
* Скачайте и распакуйте архив дистрибутива Svacer (файл с названием ''' | * Скачайте и распакуйте архив дистрибутива Svacer (файл с названием '''svacer_release-<version>.zip''') | ||
* В консоли перейдите в директорию дистрибутива и запустите '''svacer.exe'''. Если при создании пользователя и БД PostgreSQL вы использовали для них имя по умолчанию 'svace', как в примере выше, то указывать данные для подключения к БД при запуске сервера не обязательно | * В консоли перейдите в директорию дистрибутива и запустите '''svacer.exe'''. Если при создании пользователя и БД PostgreSQL вы использовали для них имя по умолчанию 'svace', как в примере выше, то указывать данные для подключения к БД при запуске сервера не обязательно | ||
cd svacer- | cd svacer-release-6-0-3 | ||
bin\svacer.exe server | bin\svacer.exe server | ||
* Если создавали пользователя или БД с другими именами, то при запуске сервера надо указать их явно | * Если создавали пользователя или БД с другими именами, то при запуске сервера надо указать их явно | ||
bin\svacer.exe server --pg postgres://svacer_user:svacer_password@127.0.0.1:5432/svacer_database | bin\svacer.exe server --pg postgres://svacer_user:svacer_password@127.0.0.1:5432/svacer_database | ||
* После запуска сервера его веб-интерфейс будет доступен по адресу http://localhost:8080 | * После запуска сервера его веб-интерфейс будет доступен по адресу http://localhost:8080 | ||
== Расширенная конфигурация == | == Расширенная конфигурация == | ||
=== Настройка | === Настройка HTTPS === | ||
Svacer | Svacer пока не поддерживает HTTPS нативно, поэтому стандартный способ настроить взаимодействие с ним по этому протоколу — использовать reverse proxy с поддержкой HTTPS и проксированием в Svacer по HTTP. | ||
==== Nginx ==== | |||
Создайте конфигурационный файл с подобным содержанием в '''/etc/nginx/sites-enabled/''' | Создайте конфигурационный файл с подобным содержанием в '''/etc/nginx/sites-enabled/''' | ||
<pre> | <pre> | ||
Line 252: | Line 211: | ||
Также, если ваш сервер виден из интернета и его внешний IP-адрес привязан к доменному имени, можете использовать Let's Encrypt и Certbot для получения валидного SSL-сертификата. См. [https://www.nginx.com/blog/using-free-ssltls-certificates-from-lets-encrypt-with-nginx/ эту инструкцию]. | Также, если ваш сервер виден из интернета и его внешний IP-адрес привязан к доменному имени, можете использовать Let's Encrypt и Certbot для получения валидного SSL-сертификата. См. [https://www.nginx.com/blog/using-free-ssltls-certificates-from-lets-encrypt-with-nginx/ эту инструкцию]. | ||
==== Apache ==== | |||
Включите нужные модули в Apache | Включите нужные модули в Apache | ||
sudo a2enmod ssl proxy proxy_http | sudo a2enmod ssl proxy proxy_http | ||
Line 267: | Line 226: | ||
SSLCertificateKeyFile /etc/ssl/private/svacer.ispras.ru.key | SSLCertificateKeyFile /etc/ssl/private/svacer.ispras.ru.key | ||
# to make WebSockets work | |||
ProxyPass /api/ws/ ws://127.0.0.1:8080/api/ws/ | |||
ProxyPassReverse /api/ws/ ws://127.0.0.1:8080/api/ws/ | |||
# svacer HTTP URL | # svacer HTTP URL | ||
ProxyPass / http://127.0.0.1:8080/ | ProxyPass / http://127.0.0.1:8080/ | ||
ProxyPassReverse / http://127.0.0.1:8080/ | ProxyPassReverse / http://127.0.0.1:8080/ | ||
ServerName svacer.ispras.ru | ServerName svacer.ispras.ru | ||
Line 288: | Line 243: | ||
==== Нативно ==== | ==== Нативно ==== | ||
Планируем добавить встроенную поддержку HTTPS в ближайших релизах. | |||
=== Выбор сетевых интерфейсов и портов сервера === | |||
* По умолчанию web-сервер запускается на всех сетевых интерфейсах, на порту 8080 ('''0.0.0.0:8080'''). Для указания конкретного сетевого интерфейса можно использовать опцию '''--listen <network interface>''', для указания другого порта: '''--port <port_number>. | * По умолчанию web-сервер запускается на всех сетевых интерфейсах, на порту 8080 ('''0.0.0.0:8080'''). Для указания конкретного сетевого интерфейса можно использовать опцию '''--listen <network interface>''', для указания другого порта: '''--port <port_number>. | ||
* Аналогично для grpc-сервера: по умолчанию — '''0.0.0.0:3002''', для выбора конкретного интерфейса: '''--listen-grpc <network_interface>''', для указания другого порта: '''--grpc <port_number>'''. | * Аналогично для grpc-сервера: по умолчанию — '''0.0.0.0:3002''', для выбора конкретного интерфейса: '''--listen-grpc <network_interface>''', для указания другого порта: '''--grpc <port_number>'''. | ||
Пример: | Пример: | ||
svacer server --listen 127.0.0.1 --port 9090 --listen-grpc 127.0.0.1 --grpc 3004 | svacer server --listen 127.0.0.1 --port 9090 --listen-grpc 127.0.0.1 --grpc 3004 | ||
Revision as of 18:15, 10 February 2023
Установка и запуск
Для работы сервера необходим PostgreSQL. Его можно установить как пакет, либо запустить в докере — docker-compose файл для этого находится в ./extra/docker-compose-postgres.yml. Svacer состоит из единственного бинарного файла. Он предоставляет как backend-часть, так и веб-сервер, который передаёт статику. По умолчанию запускается на порту 8080. После запуска по умолчанию создается учётная запись пользователя admin c паролем admin. Изменить пароль можно в веб-интерфейсе. Сервер имеет широкие возможности настройки параметров запуска. Узнать о них подробнее можно, прочитав svacer --help.
Установка и запуск из deb/rpm пакета
При установке из .deb или .rpm пакета Svacer ставится в директорию, прописанную в $PATH, поэтому при запуске полный путь к исполняемому файлу svacer указывать не требуется, он будет доступен просто по имени.
.deb
Добавьте наш apt-репозиторий и установите Svacer из него.
echo 'deb https://repo.ispras.ru/apt /' | sudo tee /etc/apt/sources.list.d/ispras.list wget -q -O - https://repo.ispras.ru/apt/key.asc | sudo apt-key add - sudo apt update sudo apt install -y svacer
Если нет возможности установить из репозитория (допустим, на машине без доступа к интернету), скачайте .deb пакет релиза и выполните следующую команду
sudo apt install ./svacer_<version>_amd64.deb
Если вы планируете использовать Svacer только как клиент для взаимодействия с сервером, то больше ничего устанавливать и конфигурировать не нужно.
Если планируете использовать Svacer как сервер, установите (или запустите в докере) PostgreSQL версии не ниже 10-й.
На debian-based системах, обычно, чтобы установить PostgreSQL достаточно выполнить команду
sudo apt install postgresql
Если такая команда не работает, возможно, в репозиториях вашей ОС нет PostgreSQL. В таком случае обратитесь к руководству по установке PostgreSQL.
После установки создайте БД и запустите сервер Svacer.
.rpm
Скачайте .rpm пакет релиза Svacer и выполните следующую команду
sudo yum install ./svacer-<version>.x86_64.rpm
Если вы планируете использовать Svacer только как клиент для взаимодействия с сервером, то больше ничего устанавливать и конфигурировать не нужно.
Если планируете использовать Svacer как сервер, установите (или запустите в докере) PostgreSQL версии не ниже 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
После установки создайте БД и запустите сервер Svacer.
Настройка и запуск
Процесс настройки и запуска одинаковый для 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
Запуск в 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
Они будут примонтированы в соответствующие контейнеры, это необходимо для сохранения данных БД и сервера после остановки или перезапуска контейнеров.
Важное уточнение: в докере запускается только сервер Svacer. Для импорта и загрузки результатов на сервер будет нужен исполняемый файл svacer.
Остановить сервер Svacer можно, выполнив следующую команду
docker-compose down
Запуск в docker только PostgreSQL
Также можно запустить в докер-контейнере только PostgreSQL. Используйте файл ./extra/docker-compose-postgres.yml
docker-compose -f docker-compose-postgres.yml up -d
Чтобы остановить, соответственно
docker-compose -f docker-compose-postgres.yml down
При таком способе запуска создается пользователь и база, указанные в Svacer как параметры по умолчанию, поэтому при запуске сервера Svacer параметр --pg можно не указывать (и не менять в конфиг-файле /etc/default/svacer при установке Svacer из пакетов).
Установка и запуск вручную
Для установки 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
Установка и запуск на Windows
- Скачайте установщик 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 (файл с названием svacer_release-<version>.zip)
- В консоли перейдите в директорию дистрибутива и запустите svacer.exe. Если при создании пользователя и БД PostgreSQL вы использовали для них имя по умолчанию 'svace', как в примере выше, то указывать данные для подключения к БД при запуске сервера не обязательно
cd svacer-release-6-0-3 bin\svacer.exe server
- Если создавали пользователя или БД с другими именами, то при запуске сервера надо указать их явно
bin\svacer.exe server --pg postgres://svacer_user:svacer_password@127.0.0.1:5432/svacer_database
- После запуска сервера его веб-интерфейс будет доступен по адресу http://localhost:8080
Расширенная конфигурация
Настройка HTTPS
Svacer пока не поддерживает HTTPS нативно, поэтому стандартный способ настроить взаимодействие с ним по этому протоколу — использовать reverse proxy с поддержкой HTTPS и проксированием в Svacer по HTTP.
Nginx
Создайте конфигурационный файл с подобным содержанием в /etc/nginx/sites-enabled/
server { listen 443 ssl; listen [::]:443 ssl; server_name svacer.ispras.ru; # for large data transfers and continuous connections client_max_body_size 0; proxy_connect_timeout 600; proxy_send_timeout 600; proxy_read_timeout 600; send_timeout 600; # path to ssl-certificate and key ssl_certificate /etc/ssl/certs/svacer.ispras.ru.crt; ssl_certificate_key /etc/ssl/private/svacer.ispras.ru.key; location / { include proxy_params; # to make WebSockets work proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; # svacer HTTP URL proxy_pass http://127.0.0.1:8080; } }
В этом конфигурационном файле укажите нужное имя сервера, пути к сертификату (можно использовать fullchain-сертификат) и ключу, а также адрес сервера Svacer, куда проксировать. После этого перезапустите Nginx.
systemctl restart nginx
Также, если ваш сервер виден из интернета и его внешний IP-адрес привязан к доменному имени, можете использовать Let's Encrypt и Certbot для получения валидного SSL-сертификата. См. эту инструкцию.
Apache
Включите нужные модули в Apache
sudo a2enmod ssl proxy proxy_http
Создайте конфигурационный файл с подобным содержанием в /etc/apache2/sites-enabled/
<VirtualHost *:443> SSLEngine On ProxyPreserveHost On ProxyTimeout 600 # path to ssl-certificate and key SSLCertificateFile /etc/ssl/certs/svacer.ispras.ru.crt SSLCertificateKeyFile /etc/ssl/private/svacer.ispras.ru.key # to make WebSockets work ProxyPass /api/ws/ ws://127.0.0.1:8080/api/ws/ ProxyPassReverse /api/ws/ ws://127.0.0.1:8080/api/ws/ # svacer HTTP URL ProxyPass / http://127.0.0.1:8080/ ProxyPassReverse / http://127.0.0.1:8080/ ServerName svacer.ispras.ru ServerAdmin svacer@ispras.ru </VirtualHost>
В этом конфигурационном файле укажите нужное имя сервера, пути к сертификату (можно использовать fullchain-сертификат) и ключу, а также адрес сервера Svacer, куда проксировать. После этого перезапустите Apache.
systemctl restart apache2
Нативно
Планируем добавить встроенную поддержку HTTPS в ближайших релизах.
Выбор сетевых интерфейсов и портов сервера
- По умолчанию web-сервер запускается на всех сетевых интерфейсах, на порту 8080 (0.0.0.0:8080). Для указания конкретного сетевого интерфейса можно использовать опцию --listen <network interface>, для указания другого порта: --port <port_number>.
- Аналогично для grpc-сервера: по умолчанию — 0.0.0.0:3002, для выбора конкретного интерфейса: --listen-grpc <network_interface>, для указания другого порта: --grpc <port_number>.
Пример:
svacer server --listen 127.0.0.1 --port 9090 --listen-grpc 127.0.0.1 --grpc 3004