在 systemd 发行版上从源代码安装 PostgreSQL

在 systemd 发行版上从源代码安装 PostgreSQL

在我当前的服务器上,我安装了两个版本的 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

并独立使用它们

但是,我尝试在 systemd linux(Fedora 22 服务器)上执行同样的事情,并且 init.d 文件夹中出现一条警告,告诉我它已发生更改。

我将如何使用 postgresql 提供的启动脚本来运行数据库?

答案1

这组步骤在 Fedora 22 虚拟机上对我有用。希望它们也对你有用。=) 我选择 9.2 作为第一个要修复的版本。9.1 的工作方式完全相同。

幸运的是,PostgreSQL 源版本中包含的 init 脚本完全符合 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 确实注册了 init 脚本,并且创建了启动时所需的所有符号链接。

之后,你应该能够使用以下命令启动该服务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 到 systemd 的速查表, 这与 SysV 的兼容性以及 ArchLinux Wiki 的systemd条目应该也能帮助你弄清楚如何更好地控制 systemd。

希望有所帮助。=)

相关内容