下面以 CentOS 7 / 8 为例,说明如何从源码编译安装 PostgreSQL(以 PostgreSQL 15 为例,其他版本方法类似)。
yum groupinstall "Development Tools" -y
yum install -y \
readline-devel \
zlib-devel \
bison \
flex \
wget \
gcc \
make
如果是 CentOS 8,用
dnf代替yum
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-zlib
常用可选参数:
--with-python:支持 PL/Python--with-perl:支持 PL/Perl--with-openssl:支持 SSLmake -j$(nproc)
make install
安装完成后,PostgreSQL 在:
/usr/local/pgsql
useradd -m postgres
passwd postgres
mkdir -p /usr/local/pgsql/data
chown -R postgres:postgres /usr/local/pgsql
su - postgres
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start
测试连接:
/usr/local/pgsql/bin/psql
vi /etc/profile.d/pgsql.sh
内容:
export PATH=/usr/local/pgsql/bin:$PATH
export PGDATA=/usr/local/pgsql/data
生效:
source /etc/profile.d/pgsql.sh
创建服务文件:
vi /usr/lib/systemd/system/postgresql.service
内容示例:
[Unit]
Description=PostgreSQL database server
After=network.target
[Service]
Type=forking
User=postgres
ExecStart=/usr/local/pgsql/bin/pg_ctl start -D /usr/local/pgsql/data
ExecStop=/usr/local/pgsql/bin/pg_ctl stop -D /usr/local/pgsql/data
Restart=on-failure
[Install]
WantedBy=multi-user.target
启用:
systemctl daemon-reload
systemctl enable postgresql
systemctl start postgresql
编辑:
vi /usr/local/pgsql/data/postgresql.conf
listen_addresses = '*'
vi /usr/local/pgsql/data/pg_hba.conf
host all all 0.0.0.0/0 md5
重启:
pg_ctl restart -D /usr/local/pgsql/data
如果你需要 指定版本 / 使用 RPM 安装 / 编译报错排查,可以继续告诉我。