Запуск GlarusBI на Debian как сервис с nginx

Для тех случаев, когда невозможно использовать Docker в своей инфраструктуре, по-прежнему может потребоваться возможность настроить и запустить GlarusBI в рабочей среде. В системах на основе Debian это означает регистрацию GlarusBI в качестве службы, которую можно запустить/остановить/удалить.

Примечание. Это всего лишь базовый рецепт для быстрого старта. По вашему желанию вы можете произвести дополнительную настройку вашей среды для ваших требований.

Предположения

Основные предположения:

  • Вы запускаете GlarusBI используя файл glarusBI.jar

  • У вас установлены nginx и postgres (или любая другая поддерживаемая база данных)

  • Вы будете использовать переменные среды для настройки GlarusBI.

  • У вас есть sudo доступ на вашем сервере

Создайте непривилегированного пользователя для запуска GlarusBI и предоставьте ему доступ к приложению и журналам.

Создайте непривилегированного пользователя для запуска GlarusBI и предоставьте ему доступ к приложению и журналам.

Из соображений безопасности мы рекомендуем, чтобы GlarusBI запускалась от имени непривилегированного пользователя. Для него можно выбрать простое имя, например «metabase». Так же мы создадим файлы, которые нам понадобятся позже для логирования и настройки GlarusBI, и применим необходимые настройки безопасности для нашего непривилегированного пользователя.

sudo groupadd -r metabase
sudo useradd -r -s /bin/false -g metabase metabase
sudo chown -R metabase:metabase </your/path/to/metabase/directory>
sudo touch /var/log/metabase.log
sudo chown syslog:adm /var/log/metabase.log
sudo touch /etc/default/metabase
sudo chmod 640 /etc/default/metabase

Создание службы GlarusBI

Каждому сервису нужен скрипт, который сообщает systemd, как им управлять и какие возможности он поддерживает. Службы обычно регистрируются в /etc/systemd/system/<servicename>. Таким образом, служба GlarusBI должна находиться в /etc/systemd/system/metabase.service.

Служебный файл GlarusBI

Создайте служебный файл /etc/systemd/system/metabase.service и откройте его в своем редакторе:

sudo touch /etc/systemd/system/metabase.service
sudo <your-editor> /etc/systemd/system/metabase.service

В файле /etc/systemd/system/metabase.service замените настраиваемые элементы (они выглядят как <some-var-name>) значениями, подходящими для вашей системы. В приведенном ниже сценарии GlarusBI есть дополнительные комментарии.

[Unit]
Description=GlarusBI server
After=syslog.target
After=network.target

[Service]
WorkingDirectory=</your/path/to/metabase/directory/>
ExecStart=/usr/bin/java -jar </your/path/to/metabase/directory/>glarusBI.jar
EnvironmentFile=/etc/default/metabase
User=metabase
Type=simple
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=metabase
SuccessExitStatus=143
TimeoutStopSec=120
Restart=always

[Install]
WantedBy=multi-user.target

Создание syslog conf

Далее нам нужно создать конфигурацию системного журнала, чтобы убедиться, что systemd может правильно обрабатывать логи.

sudo touch /etc/rsyslog.d/metabase.conf
sudo <your-editor> /etc/rsyslog.d/metabase.conf

if $programname == 'metabase' then /var/log/metabase.log
& stop

Перезапустите службу системного журнала для загрузки новой конфигурации.

sudo systemctl restart rsyslog.service

Переменные окружения для GlarusBI

Обычно переменные окружения дают возможность гибкой настройки вашего экземпляра GlarusBI. В системах Debian службы обычно предполагают наличие сопутствующих конфигураций внутри etc/default/<service-name>.

Конфигурационный файл GlarusBI

Откройте файл конфигурации среды /etc/default/metabase в вашем редакторе:

sudo <your-editor> /etc/default/metabase

В /etc/default/metabase замените настраиваемые элементы (они выглядят как <some-var-name>) значениями, подходящими для вашей системы. Конфигурации GlarusBI параметризуются переменными, некоторые из которых показаны ниже, они разделенны символами |:

MB_PASSWORD_COMPLEXITY=<weak|normal|strong>
MB_PASSWORD_LENGTH=<10>
MB_JETTY_HOST=<0.0.0.0>
MB_JETTY_PORT=<12345>
MB_DB_TYPE=<postgres|mysql|h2>
MB_DB_DBNAME=<your_metabase_db_name>
MB_DB_PORT=<5432>
MB_DB_USER=<your_metabase_db_user>
MB_DB_PASS=<ssshhhh>
MB_DB_HOST=<localhost>
MB_EMOJI_IN_LOGS=<true|false>
# any other env vars you want available to GlarusBI

Финальные шаги

Одно из гарантируемых преимущества запуска GlarusBI в качестве службы Debian — это уверенность в том, что эта служба будет запускаться при каждой загрузке системы. Для завершения этого процесса осталось всего несколько шагов.

Убедитесь что ваша база данных готова и доступна

Если вы используете postgres или какую-либо другую базу данных, вам необходимо убедиться, что вы уже создали базу данных, схему, а также пользователя, который может получить доступ к этой базе. Эти значения должны совпадать с тем, что вы установили в конфигурации GlarusBI для переменных окружения MB_DB_TYPE, MB_DB_DBNAME, MB_DB_USER и MB_DB_PASS. Если ваша база данных не настроена должным образом, GlarusBI не сможет запуститься.

Убедитесь, что nginx настроен для проксирования запросов к GlarusBI

В данном руководстве мы не будем перечислять все конфигурационные возможности nginx , но на примере следущего файла nginx.conf вы сможете запустить ваше сервер.

Примечание. Приведенный ниже nginx.conf описывает прием входящего трафика через порт 80 и проксирует запросы к GlarusBI, при этом ваш экземпляр GlarusBI настроен для работы на localhost через порт 3000. Есть несколько директив прокси, которые могут вас заинтересовать, поэтому рекомендуем вам ознакомиться с ними в Официальной документации nginx.

# sample nginx.conf
# proxy requests to GlarusBI instance
server {
  listen 80;
  listen [::]:80;
  server_name your.domain.com;
  location / {
    proxy_pass http://127.0.0.1:3000;
  }
}

Зарегистрируйте службу GlarusBI

Теперь пришло время зарегистрировать нашу службу GlarusBI в systemd, чтобы она запускалась при каждом запуске системы. Мы также позаботимся о том, чтобы журнал был создан и принадлежал непривилегированному пользователю, под которым наша служба запускает glarusBI.jar.

sudo systemctl daemon-reload
sudo systemctl start metabase.service
sudo systemctl status metabase.service

Разрешите запуск службы во время загрузки:

sudo systemctl enable metabase.service

Готово!

Теперь всякий раз, когда вам нужно запустить, остановить или перезапустить GlarusBI, вы можете сделать это следующими командами:

sudo systemctl start metabase.service
sudo systemctl stop metabase.service
sudo systemctl restart metabase.service