Назначение
На странице описано создание службы 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.