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

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

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

Предварительные условия

Основные предварительные условия:

  • вы запускаете Glarus BI, используя файл glarusBI.jar;

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

  • вы будете использовать переменные среды для настройки Glarus BI;

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

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

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

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

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

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

Файл службы Glarus BI

Создайте служебный файл /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>) значениями, подходящими для вашей системы. В приведённом ниже сценарии Glarus BI есть дополнительные комментарии.

[Unit]
Description=Glarus BI 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

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

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

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

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

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

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

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 Glarus BI

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

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

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

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

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

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

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

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

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

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

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

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

sudo systemctl enable metabase.service

Готово!

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

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