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.
Надеюсь, это поможет. знак равно