centos9 编译安装pogtgressql 17.5

作者: Penny 分类: 未分类 发布时间: 2025-06-22 00:34

下面给你全流程,基于 CentOS 9 Stream,源码安装 PostgreSQL 17.5(也可以换 16 或更高):


1. 安装编译依赖

dnf groupinstall -y "Development Tools" 
dnf install -y readline-devel zlib-devel bison flex gcc gcc-c++ libuuid-devel openssl-devel libicu-devel 
dnf install -y perl perl-Encode perl-ExtUtils-Embed

编译 PostgreSQL 必要的依赖:gcc、readline、zlib、openssl。


2. 下载源码包

去官网下载,比如 PostgreSQL 15.6 版:

wget https://ftp.postgresql.org/pub/source/v17.5/postgresql-17.5.tar.gz

3. 解压

tar -xvzf postgresql-17.5.tar.gz 
cd postgresql-17.5

4. 配置编译参数

./configure --prefix=/data/svr/postgresql-17.5 --with-openssl

–prefix 是安装目录,–with-openssl 支持 SSL。


5. 编译安装

make -j$(nproc) # 并行加速编译 
make install

6. 创建 PostgreSQL 用户

sudo useradd -m -U -r -s /bin/bash postgres 
sudo mkdir /data/dbdat/pgsql/data -p 
sudo chown postgres:postgres /data/dbdat/pgsql/data 
mkdir -p /data/logs/pgsql 
chown -R postgres:postgres /data/logs/pgsql 
chown -R postgres:postgres /data/svr/pgsql

7. 初始化数据库

切换到 postgres 用户:

sudo su - postgres /data/svr/pgsql/bin/initdb -D /data/dbdat/pgsql/data

8. 启动 PostgreSQL

/data/svr/pgsql/bin/pg_ctl -D /data/dbdat/pgsql/data -l logfile start

logfile 是日志输出。


9. 设置环境变量(可选)

给 postgres 用户加环境变量:

echo 'export PATH=/data/svr/pgsql/bin:$PATH' >> ~/.bash_profile 
source ~/.bash_profile

10. 配置远程访问(可选)

和之前一样,改:

vim /data/dbdat/pgsql/data/postgresql.conf

把:

listen_addresses = '*' max_parallel_workers_per_gather = 8 parallel_tuple_cost = 0.0 parallel_setup_cost = 0.0

改好,再改:

vim /data/dbdat/pgsql/data/pg_hba.conf

加:

host all all 0.0.0.0/0 md5

重启:

/data/svr/pgsql/bin/pg_ctl -D /data/dbdat/pgsql/data restart
sudo vim /etc/systemd/system/postgresql.service
[Unit] Description=PostgreSQL database server 
After=network.target 
[Service] 
Type=forking 
User=postgres 
Group=postgres 
# 这里根据你 initdb 初始化的目录来
Environment=PGDATA=/data/dbdat/pgsql/data 
ExecStart=/data/svr/pgsql/bin/pg_ctl start -D ${PGDATA} -s -l /data/logs/pgsql/postgresql.log 
ExecStop=/data/svr/pgsql/bin/pg_ctl stop -D ${PGDATA} -s -m fast 
ExecReload=/data/svr/pgsql/bin/pg_ctl reload -D ${PGDATA} -s 
# 关闭时也自动 stop 
Restart=on-failure 
LimitNOFILE=65536 
[Install] 
WantedBy=multi-user.target

11. 设密码

psql ALTER USER postgres WITH PASSWORD 'password'; \q

12. 开启防火墙(可选)

sudo firewall-cmd --add-port=5432/tcp --permanent sudo firewall-cmd --reload

全程不用 yum 安装 PostgreSQL,也不用 docker。纯源码编译。

wp-content