Featured image of post OpenEuler编译安装PostgreSQL数据库

OpenEuler编译安装PostgreSQL数据库

PostgreSQL

基础环境

公司的产品由于各种原因(CentOS 8停止支持/信创要求),产品基本上将全面转向国产的操作系统,比如Kylin或者OpenEuler,但是开源软件对于国产操作系统基本上都没有编译的二进制包,需要自己编译。

  • 操作系统:

openEuler release 22.03 (LTS-SP1)

  • PostgreSQL

postgresql-15.3

编译环境准备

必须环境

  • make

需要GNU make 版本 3.81 或 更高;

1
2
3
4
5
6
7
$ make version
GNU Make 4.3
为 x86_64-openEuler-linux-gnu 编译
Copyright (C) 1988-2020 Free Software Foundation, Inc.
许可证:GPLv3+:GNU 通用公共许可证第 3 版或更新版本<http://gnu.org/licenses/gpl.html>。
本软件是自由软件:您可以自由修改和重新发布它。
在法律允许的范围内没有其他保证。

满足要求

  • gcc

需要一个ISO / ANSI C 编译器(至少符合 C99)。

1
2
3
4
5
$ gcc --version
gcc (GCC) 10.3.1
Copyright © 2020 Free Software Foundation, Inc.
本程序是自由软件;请参看源代码的版权声明。本软件没有任何担保;
包括没有适销性和某一专用目的下的适用性担保。

满足要求

  • tar

除了gzip或bzip2之外,还需要tar来解压源分发包。

1
2
3
4
5
6
7
8
$ tar --veriosn
tar (GNU tar) 1.34
Copyright (C) 2021 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

由 John Gilmore 和 Jay Fenlason 所写。

满足要求

  • Readline库

默认使用GNU Readline库,它允许psql(PostgreSQL 命令行 SQL 解释器)记住您键入的每个命令,并允许您使用箭头键来调用和编辑以前的命令。

1
$ dnf install -y readline-devel
  • zlib库
  • 默认使用zlib压缩库。如果您不想使用它,则必须将选项指定--without-zlibconfigure。使用此选项禁用pg_dump和pg_restore中对压缩存档的支持。
1
$ dnf install -y zlib-devel

可选环境

  • 要构建服务器编程语言PL/Perl,需要完整安装Perl,包括libperl库和头文件,所需的最低版本是Perl 5.8.3。

  • 要构建PL/Python服务器编程语言,需要安装带有头文件和sysconfig模块的Python,所需的最低版本是Python 3.2。

  • 要构建PL/Tcl过程语言,您当然需要安装Tcl,所需的最低版本是Tcl 8.4。

  • 要启用本地语言支持 ( NLS ),即以英语以外的语言显示程序消息的能力,需要实现Gettext API,某些操作系统内置了此功能(例如:Linux、NetBSD、Solaris ),对于其他系统,可以从gettext - GNU Project - Free Software Foundation下载附加包。如果正在使用GNU C 库中的Gettext实现,那么还需要GNU Gettext包用于某些实用程序。

  • 如果你想支持加密的客户端连接,你需要OpenSSL 。在没有(Windows 除外)的平台上生成随机数也需要OpenSSL/dev/urandom,所需的最低版本为 1.0.1。

  • 如果您想支持使用这些服务进行身份验证,则需要Kerberos、OpenLDAP和/或PAM 。

  • LZ4:如果想使用该方法支持数据压缩,你需要LZ4 ,参阅default_toast_compressionwal_compression

  • Zstandard:如果您想使用该方法支持数据压缩,则需要Zstandard ;见wal_compression,所需的最低版本为 1.4.0。

上面的我都不需要,默认安装就行了。

软件编译

  • 解压缩源码包
1
$ tar xvf postgresql-15.3.tar.gz
  • 进入源码目录
1
$ cd postgresql-15.3
  • 可以查看下编译参数
1
$ ./configure --help

对于我来说我不需要更多的编译参数,用prefix指定下安装目录就可以了,–prefix选项是配置安装目录,如果不配置该选项,安装后可执行文件默认放在/usr/local/bin,库文件默认放在/usr/local/lib,配置文件默认放在/usr/local/etc,其它的资源文件放在/usr/local/share,比较凌乱。

1
$ ./configure --prefix=/data/database/postgresql
  • make
1
$ make -j8 #我是8个核心,所以8核心并行编译

编译过程未出现Error错误字样,代表编译正常结束。

  • make install
1
$ make install

这个执行完之后程序就会被编译为二进制到安装目录,到这儿程序编译就完成了

软件设置

  • 添加postgres用户
1
$ adduser postgres
  • 创建数据库data目录
1
$ mkdir -p /data/database/postgresql/data
  • 修改数据库目录所有者
1
$ chown -R postgres.postgres /data/database/postgresql
  • 添加数据库命令到PATH
1
2
3
$ touch /etc/profile.d/pg.sh
$ echo "export PATH=\$PATH:/data/database/postgresql/bin" > /etc/profile.d/pg.sh
$ source /etc/profile
  • 切换到postgres用户
1
$ su postgres
  • 初始化数据库
1
$ initdb -D /data/database/postgresql/data
  • 配置文件
1
2
3
4
5
# 开启数据库端口监听
$ cat >> /data/database/postgresql/data/postgresql.conf <<-EOF
listen_addresses = '*'
port = 5432
EOF
1
2
# 配置远程访问
$ echo "host    all             all             0.0.0.0/0               md5" >> /data/database/postgresql/data/pg_hba.conf
  • 启动数据库
1
$ pg_ctl -D /data/database/postgresql/data -l /data/database/postgresql/logs/logfile start
  • 设置数据库密码
1
$ psql
1
ALTER USER postgres WITH PASSWORD '你的密码';