温馨提示×

centos怎样编译安装postgresql

小樊
52
2026-09-12 07:49:27
栏目: 云计算

下面以 CentOS 7 / 8 为例,说明如何从源码编译安装 PostgreSQL(以 PostgreSQL 15 为例,其他版本类似)。


一、安装编译依赖

# CentOS 7
yum groupinstall "Development Tools" -y
yum install -y readline-devel zlib-devel libxml2-devel libxslt-devel \
openssl-devel pam-devel bison flex wget

# CentOS 8
dnf groupinstall "Development Tools" -y
dnf install -y readline-devel zlib-devel libxml2-devel libxslt-devel \
openssl-devel pam-devel bison flex wget

二、下载 PostgreSQL 源码

cd /usr/local/src
wget https://ftp.postgresql.org/pub/source/v15.5/postgresql-15.5.tar.gz
tar zxvf postgresql-15.5.tar.gz
cd postgresql-15.5

三、配置编译参数

./configure \
--prefix=/usr/local/pgsql \
--with-openssl \
--with-zlib \
--with-libxml \
--with-libxslt \
--with-pam

查看配置是否成功:

echo $?

四、编译并安装

make -j$(nproc)
make install

安装完成后:

ls /usr/local/pgsql

五、创建 PostgreSQL 用户

useradd -m postgres
passwd postgres

六、初始化数据库

mkdir -p /data/pgdata
chown -R postgres:postgres /data/pgdata

su - postgres
/usr/local/pgsql/bin/initdb -D /data/pgdata

七、启动 PostgreSQL

/usr/local/pgsql/bin/pg_ctl -D /data/pgdata -l logfile start

登录测试:

/usr/local/pgsql/bin/psql

八、配置环境变量(推荐)

vi /etc/profile.d/pgsql.sh

内容:

export PATH=/usr/local/pgsql/bin:$PATH
export PGDATA=/data/pgdata

使生效:

source /etc/profile.d/pgsql.sh

九、配置开机自启(systemd)

创建服务文件:

vi /usr/lib/systemd/system/postgresql.service

示例:

[Unit]
Description=PostgreSQL database server
After=network.target

[Service]
Type=forking
User=postgres
Group=postgres
ExecStart=/usr/local/pgsql/bin/pg_ctl -D /data/pgdata start
ExecStop=/usr/local/pgsql/bin/pg_ctl -D /data/pgdata stop
Restart=on-failure

[Install]
WantedBy=multi-user.target

启用:

systemctl daemon-reload
systemctl enable postgresql
systemctl start postgresql

十、常见问题

1. configure 报错

  • 缺少 readline → 安装 readline-devel
  • 缺少 zlib → 安装 zlib-devel

2. 端口无法访问

修改:

vi /data/pgdata/postgresql.conf
listen_addresses = '*'
vi /data/pgdata/pg_hba.conf
host all all 0.0.0.0/0 md5

重启:

pg_ctl -D /data/pgdata restart

如果你需要 指定版本、编译插件(如 pg_stat_statements) 或 CentOS Stream / Rocky / Alma 版本,我也可以补充。

0 踩