PostgreSQL устанавливается из исходного кода на системный дистрибутив

На моем текущем сервере у меня установлены 2 версии postgresql, postgresql-9.1 и postgresql-9.2

Я установил их из источника с сайта postgresql.

Папка tar.gz содержит установочные файлы, а также стартовые скрипты, которые можно использовать для его запуска. Я скопировал эти стартовые скрипты из каждой установки postgresql как

/etc/rc.d/init.d/postgresql91
/etc/rc.d/init.d/postgresql92

так, чтобы я смог

service postgresql91 start

или же

service postgresql92 start

и использовать их независимо

Однако я пытаюсь сделать то же самое на Linux Systemd (сервер Fedora 22), и в папке init.d было предупреждение о том, что оно изменилось.

Как я смогу использовать стартовые скрипты, поставляемые postgresql для запуска базы данных?

1 ответ

Этот набор шагов работал для меня на виртуальной машине Fedora 22. Надеюсь, они работают и на вас. =) Я выбрал 9.2 в качестве первого исправления. 9.1 работал точно так же.

К счастью, сценарий инициализации, включенный в исходные выпуски PostgreSQL, полностью совместим с LSB, что в значительной степени является обязательным требованием для интеграции с устаревшей системой systemd.

Ваш первый шаг должен быть правильно настроить сценарий инициализации в contrib/start-scripts/linux для вашей конкретной настройки среды.

Как только это будет сделано, скопируйте отредактированный файл в /etc/rc.d/init.d/postgresql92 и выполните команду systemctl daemon-reload заставить systemd перечитывать файлы и каталоги модулей, содержащие файлы.

Сразу после этого выполните команду systemctl enable postgresql92, Как только это будет сделано, вы должны увидеть следующее сообщение:

[root@test ~]# systemctl enable postgresql92
postgresql92.service is not a native service, redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig postgresql92 on
[root@test ~]#

Это указывает на то, что systemd действительно зарегистрировал скрипт инициализации, и что он создал все необходимые символические ссылки для запуска при загрузке.

После этого вы сможете запустить службу с systemctl start postgresql92

А затем проверьте статус процесса с помощью systemctl status postgresql92

Который должен выглядеть примерно так:

[root@test ~]# systemctl status postgresql92
● postgresql92.service - SYSV: PostgreSQL RDBMS
   Loaded: loaded (/etc/rc.d/init.d/postgresql92)
   Active: active (exited) since Sat 2015-09-05 08:13:34 UTC; 1min 31s ago
     Docs: man:systemd-sysv-generator(8)
   Process: 16665 ExecStart=/etc/rc.d/init.d/postgresql92 start (code=exited, status=0/SUCCESS)

Sep 05 08:13:34 test systemd[1]: Starting SYSV: PostgreSQL RDBMS...
Sep 05 08:13:34 test su[16666]: (to postgresql) root on none
Sep 05 08:13:34 test systemd[1]: Started SYSV: PostgreSQL RDBMS.
Sep 05 08:13:34 test postgresql92[16665]: Starting PostgreSQL: ok
[root@test ~]#

И, наконец, перепроверьте с помощью psql на работающем экземпляре.

[postgresql@test bin]$ ./psql -U postgresql template1
psql (9.2.13)
Type "help" for help.

template1=# SELECT * FROM version();
                                                version                                                    
---------------------------------------------------------------------------------------------------------------
 PostgreSQL 9.2.13 on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 5.1.1 20150618 (Red Hat 5.1.1-4), 64-bit
(1 row)

template1=# \q
[postgresql@test bin]$

SysVinit для системной шпаргалки, совместимость с SysV и системная запись ArchLinux Wiki должны помочь вам понять, как лучше справляться с systemd.

Надеюсь, это поможет. знак равно

Другие вопросы по тегам