Как это произошло, конечно, отдельная кулстори, но если в двух словах - из-за обновления гнума.
У гнум3.6 теперь жесткая зависимость от системд, как я понял, и он без неё не может работать.
Рано или поздно это должно было случится, поэтому я решил перекатится до конца. И снес инитскриптс.
И пришла бида.
Сразу скажу, что как бороться с проблемами запуска в случае со стандартным расположением баз, хорошо написано тут
Но мне всегда хотелось странного..
Поскольку, теперь никакие демоны по старой схеме не запускались
$ sudo systemctl start nginxвместо православного
$ sudo rc.d start nginxнапример,
я решил переписать свои шелл скрипты для запуска локальных серверов на новый лад и проверить их работоспособность.
И всё было хорошо, до тех пор, пока дело не дошло до постгрес.
В этих их системд как-то очень странно написаны скрипты для запуска демонов, и PGROOT оказалось захардкаоженым. Так же, как и мастерпид файл.
Меня это очень огорчило, и я решил переписать это дело на свой вкус.
cat /usr/lib/systemd/system/postgresql.service
[Unit]
Description=PostgreSQL database server
After=network.target
[Service]
Type=forking
TimeoutSec=120
User=postgres
Group=postgres
Environment=PGROOT=/home/db/postgres
SyslogIdentifier=postgres
PIDFile=/home/db/postgres/data/postmaster.pid
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
[Install]
WantedBy=multi-user.target
В общем-то, мои изменения коснулись только двух констант:
PGROOT и PIDFile
Хотя конечно, это не самый тру вей.
Надо было, наверное, переписать на команду запуска с использованием дефолтного конфига. Но мне и так норм :3
No comments:
Post a Comment