четверг, 3 января 2019 г.

Настройка systemd для запуска PostgreSQL от 1С

Платформа 8.3 → Ubuntu 16.04: PostgreSQL, версия 10.3-3.1C вопросы к разработчикам!
Вариант от Самарина Александра (Эника, Ивантеевка)
За что Александру огромное спасибо!

$ sudo nano /etc/systemd/system/postgres.service

[Unit]
Description=PostgreSQL database server
After=network.target

[Service]
Type=forking
TimeoutSec=120
User=postgres
Group=postgres

Environment=PGROOT=/var/lib/postgres

SyslogIdentifier=postgres
PIDFile=/var/lib/postgres/data/postmaster.pid
RuntimeDirectory=postgresql
RuntimeDirectoryMode=755

ExecStartPre=/usr/bin/postgresql-check-db-dir ${PGROOT}/data
ExecStart= /usr/bin/pg_ctl -s -D ${PGROOT}/data start -w -t 120
ExecReload=/usr/bin/pg_ctl -s -D ${PGROOT}/data reload
ExecStop=  /usr/bin/pg_ctl -s -D ${PGROOT}/data stop -m fast

# Due to PostgreSQL's use of shared memory, OOM killer is often overzealous in
# killing Postgres, so adjust it downward
OOMScoreAdjust=-200

# Additional security-related features
PrivateTmp=true
ProtectHome=true
ProtectSystem=full
NoNewPrivileges=true

[Install]
WantedBy=multi-user.target

Сохранить.

Команды:

$ sudo systemctl daemon-reload  # запускать после изменений файла
$ sudo systemctl start postgres.service
$ sudo systemctl stop postgres.service
$ sudo systemctl restart postgres.service
$ sudo systemctl status postgres.service
 

Можно сравнить с shell-скриптом на любом дистрибутиве. Выиграет, думаю, только Gentoo и FreeBSD за счет огромных openrc и rc.subr. Но в них все равно есть отдельный init с костыльным inittab и runlevels, который поддерживается другими людьми, отдельно supervisord и daemon-start-stop, forever и т.п.

В случае 1C сервис на systemd адекватно отрабатывает любые действия с сервером 1С. Описание на 20 строк, все очевидны. А собственный скрипт от 1С не позволяет включить отладку и перезапустить сервер, т.к. при смене флагов он не может найти и убить процессы. Приходится сначала останавливать сервер, потом менять флаги, потом запускать сервер.

Я тоже не в восторге от pssssshulseaudio и systemd (в основном от сетевой части и systemd-nspawn), но свою задачу он выполняет и быстрее шелла.

А "ОС в ОС" нам и так хватает: firefox, chrome, grub и сама 1С.

Комментариев нет:

Отправить комментарий