centos9 编译安装pogtgressql 17.5
下面给你全流程,基于 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。纯源码编译。