当前位置:首页>Linux>Rocky Linux 9 源码编译安装 PostgreSQL 16 完整步骤

Rocky Linux 9 源码编译安装 PostgreSQL 16 完整步骤

  • 2026-10-11 06:59:09
Rocky Linux 9 源码编译安装 PostgreSQL 16 完整步骤
整体规划
  • 安装路径:/usr/local/postgres16
  • 数据存放目录:/data/postgres16/data
  • 日志目录:/data/postgres16/log
  • 运行用户:系统用户 postgres
  • PG 版本:16.4(稳定 LTS 版)
  • 配套:源码编译 pgvector 向量插件,适配 SpringAI 向量库

一、安装编译依赖环境

# 安装开发工具组 + PG编译所需全部依赖sudo dnf groupinstall -y ”Development Tools”sudo dnf install -y readline-devel zlib-devel openssl-devel libxml2-devel libxslt-devel bzip2-devel libicu-devel

二、创建系统运行用户 & 目录结构

# 创建专用运行用户,禁止root运行数据库sudo useradd -m postgres# 设置postgres用户的密码sudo passwd postgres# 程序目录、数据目录、日志目录sudo mkdir -p /usr/local/postgres16sudo mkdir -p /data/postgres16/data /data/postgres16/log# 赋予postgres用户全部权限sudo chown -R postgres:postgres /usr/local/postgres16sudo chown -R postgres:postgres /data/postgres16

三、下载 PostgreSQL16 源码、编译安装

# 进入工作目录cd /opt# 下载PG16.4源码包sudo wget https://ftp.postgresql.org/pub/source/v16.4/postgresql-16.4.tar.gzsudo tar -zxvf postgresql-16.4.tar.gzcd postgresql-16.4# 配置编译参数sudo ./configure \--prefix=/usr/local/postgres16 \--with-openssl \--with-libxml \--with-zlib \--with-icu# 多核编译加速sudo make -j$(nproc)# 安装至指定目录sudo make install# 安装系统uuid依赖库(扩展需要)sudo dnf install e2fsprogs-devel libuuid-devel -ymake clean./configure --prefix=/usr/local/postgres16 --with-uuid=e2fs --with-openssl --with-zlib --with-readline# 确认编译扩展所需依赖齐全sudo dnf install e2fsprogs-devel libuuid-devel openssl-devel readline-devel zlib-devel gcc gcc-c++ make -y# 进入contrib包cd /opt/software/postgresql-16.4/contrib# 编译安装所有扩展make -j$(nproc)make install# 检验文件是否生成成功,可以正常看到文件,说明部署完成ls /usr/local/postgres16/share/extension/uuid-ossp.controlls /usr/local/postgres16/share/extension/hstore.control

四、配置系统全局环境变量(任意位置执行 psql/pg_ctl)

sudo tee -a /etc/profile <<'EOF'# Postgres16 Envexport PGHOME=/usr/local/postgres16export PATH=$PATH:$PGHOME/binexport PGDATA=/data/postgres16/dataEOF# 全局生效source /etc/profile# 验证版本psql --version

五、初始化数据库实例(仅首次执行一次)

# 初始化数据库使用绝对路径sudo -u postgres /usr/local/postgres16/bin/initdb -D /data/postgres16/data -E UTF8 --locale=en_US.UTF-8

参数说明:

  • -E UTF8
    :默认数据库编码 utf8
  • --locale=en_US.UTF-8
    :解决中文乱码

六、修改 PostgreSQL 核心配置(远程访问、日志、性能)

6.1 修改 postgresql.conf

sudo -u postgres vim /data/postgres16/data/postgresql.conf

修改以下配置项:

# 监听所有网卡,允许局域网/公网访问listen_addresses = '*'# 日志存放路径log_directory = '/data/postgres16/log'log_filename = 'postgresql-%Y-%m-%d.log'logging_collector = on

6.2 修改访问权限 pg_hba.conf

sudo vim /data/postgres16/data/pg_hba.conf

文件最底部添加全网段密码访问规则

# 本地访问host    all             all             127.0.0.1/32            trusthost    all             all             ::1/128                 trust# 所有IP远程连接host    all             all             0.0.0.0/0               trust

七、编写 systemd 系统服务(systemctl 统一管理启停)

sudo vim /etc/systemd/system/postgres16.service

粘贴如下内容:

[Unit]Description=PostgreSQL 16 Database ServerAfter=network.target[Service]Type=forkingUser=postgresGroup=postgres# 启动命令ExecStart=/usr/local/postgres16/bin/pg_ctl start -D /data/postgres16/data -l /data/postgres16/log/startup.log# 停止命令ExecStop=/usr/local/postgres16/bin/pg_ctl stop -D /data/postgres16/data -m fast# 重载配置ExecReload=/usr/local/postgres16/bin/pg_ctl reload -D /data/postgres16/dataRestart=on-failureRestartSec=3[Install]WantedBy=multi-user.target

八、加载服务、开机自启、启动 PG

sudo systemctl daemon-reload# 设置开机自启sudo systemctl enable postgres16# 启动数据库sudo systemctl start postgres16# 查看运行状态sudo systemctl status postgres16

九、设置超级用户 postgres 密码

# 登录数据库sudo -u postgres psql# 免密进入数据库sudo -u postgres /usr/local/postgres16/bin/psql# 设置密码(自行修改密码)ALTER USER postgres WITH PASSWORD 'Aa#123456';# 退出\q

十、把本地认证改回安全的scram-sha-256

再次编辑 pg_hba.conf

sudo vim /data/postgres16/data/pg_hba.conf# 把所有的trust改为scram-sha-256host    all             all             127.0.0.1/32            scram-sha-256host    all             all             ::1/128                 scram-sha-256host    all             all             0.0.0.0/0               scram-sha-256

重载配置

systemctl reload postgres16

此时再次登录数据库,就需要输入密码了。

十一、源码编译安装 pgvector(向量插件,SpringAI 必装)

cd /opt# 下载pgvector源码sudo wget https://github.com/pgvector/pgvector/archive/refs/tags/v0.8.0.tar.gz -O pgvector-0.8.0.tar.gzsudo tar -zxvf pgvector-0.8.0.tar.gzcd pgvector-0.8.0# 指定PG的bin目录编译sudo make PG_CONFIG=/usr/local/postgres16/bin/pg_configsudo make PG_CONFIG=/usr/local/postgres16/bin/pg_config install

在数据库启用 vector 插件

sudo -u postgres psqlCREATE EXTENSION IF NOT EXISTS vector;# 查看pgvector版本SELECT extversion FROM pg_extension WHERE extname='vector';\q

登录数据库创建所需扩展

su - postgres# 切换到业务数据库psql -d 数据库名称CREATE EXTENSION IF NOT EXISTS hstore;CREATE EXTENSION IF NOT EXISTS ”uuid-ossp”;CREATE EXTENSION IF NOT EXISTS vector;# 无报错就是成功\q

十二、防火墙放行 5432 端口

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

常用运维命令汇总

# 启停服务systemctl start postgres16systemctl stop postgres16systemctl restart postgres16# 实时日志查看tail -f /data/postgres16/log/postgresql-$(date +%Y-%m-%d).log# 客户端连接psql -h 127.0.0.1 -U postgres -W

一键卸载(需要重装时执行)

systemctl stop postgres16systemctl disable postgres16rm -rf /etc/systemd/system/postgres16.servicesystemctl daemon-reloadrm -rf /usr/local/postgres16 /data/postgres16 /opt/postgresql-16.4 /opt/pgvector-0.8.0userdel -r postgres

最新文章

随机文章