Avanpost CA : 3. Настройка systemd

Назначение

На странице описано создание службы systemd для автоматического запуска и контроля Avanpost CA.

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

  • Avanpost CA установлен;
  • миграция БД выполнена;
  • файл /opt/avanpost/ca/config/env создан;
  • приложение запускается от пользователя avanpost;
  • определено, должна ли миграция выполняться автоматически при каждом старте.

1. Выбор режима миграции

Возможны два режима.

РежимКогда использовать
Миграция выполняется вручнуюРекомендуется для производственных систем и управляемых обновлений
ExecStartPre выполняет миграциюДопустимо, если миграционный инструмент установленной версии гарантированно идемпотентен

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

2. Создание unit-файла

Создайте:

sudo vi /etc/systemd/system/avanpost-ca.service

Добавьте:

[Unit]
Description=Avanpost CA
Documentation=https://docs.avanpost.ru/ca/
Wants=network-online.target
After=network-online.target

[Service]
Type=simple
User=avanpost
Group=avanpost
WorkingDirectory=/opt/avanpost/ca
EnvironmentFile=/opt/avanpost/ca/config/env

ExecStart=/opt/avanpost/ca/ca

Restart=on-failure
RestartSec=10s
TimeoutStartSec=120s
TimeoutStopSec=60s
KillSignal=SIGTERM

UMask=0077
NoNewPrivileges=true
PrivateTmp=true
ProtectHome=true
ProtectSystem=full
LimitNOFILE=65536

SyslogIdentifier=avanpost-ca

[Install]
WantedBy=multi-user.target

Если подтверждена автоматическая миграция, перед ExecStart добавьте:

ExecStartPre=/opt/avanpost/tools/migratetool/migratetool

3. Проверка unit-файла

sudo systemd-analyze verify /etc/systemd/system/avanpost-ca.service

Команда не должна возвращать ошибок.

4. Перечитывание конфигурации

sudo systemctl daemon-reload

5. Запуск службы

sudo systemctl enable --now avanpost-ca.service

Проверьте:

sudo systemctl status avanpost-ca.service
sudo systemctl is-enabled avanpost-ca.service
sudo systemctl is-active avanpost-ca.service

Ожидаемый результат:

enabled
active

6. Проверка журнала

sudo journalctl -u avanpost-ca.service -n 200 --no-pager

Для просмотра в реальном времени:

sudo journalctl -u avanpost-ca.service -f

Не передавайте журналы третьим лицам без проверки на наличие имен субъектов, адресов, идентификаторов и другой чувствительной информации.

7. Проверка перезапуска

sudo systemctl restart avanpost-ca.service
sudo systemctl is-active avanpost-ca.service

Убедитесь, что после перезапуска отсутствуют ошибки миграции и подключения к БД.

8. Дополнительное усиление systemd

После функционального тестирования можно рассмотреть:

ProtectKernelTunables=true
ProtectKernelModules=true
ProtectControlGroups=true
RestrictSUIDSGID=true
LockPersonality=true

Каждый параметр необходимо проверять на тестовом контуре. Не включайте ограничения, которые блокируют криптопровайдер, HSM, Vault или запись в необходимые каталоги.

Для оценки:

sudo systemd-analyze security avanpost-ca.service

Управление службой

ОперацияКоманда
Запускsudo systemctl start avanpost-ca.service
Остановкаsudo systemctl stop avanpost-ca.service
Перезапускsudo systemctl restart avanpost-ca.service
Статусsudo systemctl status avanpost-ca.service
Журналsudo journalctl -u avanpost-ca.service
Отключение автозапускаsudo systemctl disable avanpost-ca.service

Критерии готовности

  • unit-файл проходит проверку;
  • служба запускается от avanpost;
  • автозапуск включен;
  • процесс восстанавливается после аварийного завершения;
  • журналы доступны через journal;
  • после перезапуска приложение подключается к БД.

Следующий шаг

Перейдите к странице Настройка Nginx и TLS.

Обсуждение