Bug 27336 - posgresql.service for postgresql
Summary: posgresql.service for postgresql
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: postgresql9.1-server (show other bugs)
Version: unstable
Hardware: all Linux
: P3 normal
Assignee: Denis Smirnov
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2012-05-14 20:39 MSK by Igor Zubkov
Modified: 2018-05-12 11:26 MSK (History)
9 users (show)

See Also:


Attachments
postgresql.service (684 bytes, text/plain)
2012-05-15 20:23 MSK, Alexey Shabalin
no flags Details
postgresql-chrooted.service (758 bytes, text/plain)
2012-05-15 20:24 MSK, Alexey Shabalin
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Igor Zubkov 2012-05-14 20:39:54 MSK
Нужна нативная поддержка systemd в пакете postgresql.
Comment 1 Vitaly Kuznetsov 2012-05-15 18:53:12 MSK
http://git.altlinux.org/people/vitty/packages/postgresql9.1.git?p=postgresql9.1.git;a=commit;h=3aa59d5b519607e6c90a27c89ae0db6ef8de3a18

Если майнтейнеры postgres не против, то я готов собрать этот коммит в Сизиф.
Comment 2 Vitaly Kuznetsov 2012-05-15 19:48:20 MSK
У нас, собственно, пакеты postgresql9.0-server и postgresql9.1-server, перевешиваю на 9.1
Comment 3 Alexey Shabalin 2012-05-15 20:23:39 MSK
Created attachment 5460 [details]
postgresql.service
Comment 4 Alexey Shabalin 2012-05-15 20:24:13 MSK
Created attachment 5461 [details]
postgresql-chrooted.service
Comment 5 Alexey Shabalin 2012-05-15 20:35:46 MSK
Предлагаю два service-файла, для postgreasql в chroot и без.

to vitty: комит посмотрел:
- StandardOutput=syslog - стоит ли переопределять обще-системный? может я только journal использую
- "postgres -C $PG_CHROOT_DIR" - это только для postgresql в chroot? что будет если $PG_CHROOT_DIR пустой? (я просто не знаю, поэтому и спрашиваю)
- а нужен ли postgresql-init-db? автоматической инициализации базы данных нет и в старом postgresql(когда-то давно была,хорошо что сейчас нет). Всё равно человек будет запускать initdb, поэтому можно запустить /etc/init.d/postgresql initdb. У нас это сработает, а в федоре нет - там /etc/init.d/functions не дадут это сделать под systemd.
Comment 6 Mike 2012-05-15 21:22:29 MSK
Сам postges не форкается, следовательно Type=forking не подходит. 
Остановка сервера, через pg_ctl тоже через посылку KILL сигнала, следовательно можно убрать эту операцию и доверить остановку самому systemd.

В общем, больше подробностей у ldv@ и vitty@, пару часов тестировали юнит и пришли к тому виду, который у vitty@.
Comment 7 Vitaly Kuznetsov 2012-05-15 22:21:16 MSK
(В ответ на комментарий №5)
> Предлагаю два service-файла, для postgreasql в chroot и без.
> 
> to vitty: комит посмотрел:
> - StandardOutput=syslog - стоит ли переопределять обще-системный? может я
> только journal использую

Да, наверное не стоит.

> - "postgres -C $PG_CHROOT_DIR" - это только для postgresql в chroot? что будет
> если $PG_CHROOT_DIR пустой? (я просто не знаю, поэтому и спрашиваю)

Я как-то не подумал о работа postgres не в chroot. Он у нас так работает?

> - а нужен ли postgresql-init-db? автоматической инициализации базы данных нет и
> в старом postgresql(когда-то давно была,хорошо что сейчас нет). Всё равно
> человек будет запускать initdb, поэтому можно запустить /etc/init.d/postgresql
> initdb. У нас это сработает, а в федоре нет - там /etc/init.d/functions не
> дадут это сделать под systemd.

Мне показалось, что людям будет крайне неочевидно делать /etc/init.d/postgresql initdb, не догадаются (причём service postgresql initdb не сработает), поэтому я и вынес отдельный скрипт. Но я, разумеется, не настаиваю, мне просто показалось так логичнее.
Comment 8 Mike 2012-05-16 01:52:06 MSK
(В ответ на комментарий №7)
> (В ответ на комментарий №5)
> > Предлагаю два service-файла, для postgreasql в chroot и без.
> > 
> > to vitty: комит посмотрел:
> > - StandardOutput=syslog - стоит ли переопределять обще-системный? может я
> > только journal использую
> 
> Да, наверное не стоит.

Т.к. всё равно весь вывод в итоге попадёт в syslog, если он присутствует.

> > - "postgres -C $PG_CHROOT_DIR" - это только для postgresql в chroot? что будет
> > если $PG_CHROOT_DIR пустой? (я просто не знаю, поэтому и спрашиваю)
> 
> Я как-то не подумал о работа postgres не в chroot. Он у нас так работает?
> 

Вроде у нас postgres в чруте по умолчанию?
Стоит остановиться на одном варианте дистрибутивного исполнения, т.к. тем у кого postgres будет настроен по другому или выведен и чрута, есть /etc/systemd/system

Ну и для проверки чрута: ConditionDirectoryNotEmpty=

> > - а нужен ли postgresql-init-db? автоматической инициализации базы данных нет и
> > в старом postgresql(когда-то давно была,хорошо что сейчас нет). Всё равно
> > человек будет запускать initdb, поэтому можно запустить /etc/init.d/postgresql
> > initdb. У нас это сработает, а в федоре нет - там /etc/init.d/functions не
> > дадут это сделать под systemd.
> 
> Мне показалось, что людям будет крайне неочевидно делать /etc/init.d/postgresql
> initdb, не догадаются (причём service postgresql initdb не сработает), поэтому
> я и вынес отдельный скрипт. Но я, разумеется, не настаиваю, мне просто
> показалось так логичнее.

Если писать юнит для postgres, то так что бы для работы сервиса не надо было использовать части от init.
Для initdb, если хочется использовать отдельный запуск, можно отдельный юнит сделать с Requires на potgres.
Comment 9 Alexei Takaseev 2018-05-12 08:22:28 MSK
Во всех текущих ветках PG  postgresql.service в наличии.