Help:Installation: Difference between revisions

From Svacer Wiki
Jump to navigation Jump to search
Line 164: Line 164:
     send_timeout                600;
     send_timeout                600;


     # generate certificates and specify path to certificate and key
     # path to ssl-certificate and key
     ssl_certificate /etc/ssl/certs/svacer.ispras.ru.crt;
     ssl_certificate /etc/ssl/certs/svacer.ispras.ru.crt;
     ssl_certificate_key /etc/ssl/private/svacer.ispras.ru.key;
     ssl_certificate_key /etc/ssl/private/svacer.ispras.ru.key;
Line 198: Line 198:
     ProxyTimeout 600
     ProxyTimeout 600
      
      
     # generate certificates and specify path to certificate and key
     # path to ssl-certificate and key
     SSLCertificateFile /etc/ssl/certs/svacer.ispras.ru.crt
     SSLCertificateFile /etc/ssl/certs/svacer.ispras.ru.crt
     SSLCertificateKeyFile /etc/ssl/private/svacer.ispras.ru.key
     SSLCertificateKeyFile /etc/ssl/private/svacer.ispras.ru.key

Revision as of 17:43, 2 February 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>.

Установка и запуск на 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;
    }
}

Поменяйте имя сервера, пути к сертификату и ключу, а также адрес сервера Svacer, куда проксировать. После этого перезапустите Nginx.

 systemctl restart nginx

Также, если ваш сервер виден из интернета и его внешний IP-адрес привязан к доменному имени, можете использовать Let's Encrypt и Certbot для получения валидного SSL-сертификата. См. эту инструкцию.

Apache

Включите нужные модули в Apache

 sudo a2enmod ssl proxy proxy_http proxy_wstunnel rewrite 

Создайте конфигурационный файл с подобным содержанием в /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
    
    # svacer HTTP URL
    ProxyPass / http://127.0.0.1:8080/
    ProxyPassReverse / http://127.0.0.1:8080/

    # to make WebSockets work
    RewriteEngine on
    RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC]
    RewriteCond %{HTTP:CONNECTION} ^Upgrade$ [NC]
    RewriteRule .* ws://127.0.0.1:8080%{REQUEST_URI} [P]

    ServerName svacer.ispras.ru
    ServerAdmin svacer@ispras.ru
</VirtualHost>

Поменяйте имя сервера, пути к сертификату и ключу, а также адрес сервера Svacer, куда проксировать. После этого перезапустите Apache.

 systemctl restart apache2

Нативно

Планируем добавить встроенную поддержку HTTPS в ближайших релизах.