1. 环境准备与依赖安装
在CentOS 7.6系统上部署PostgreSQL 12.0之前,需要确保系统满足基本运行条件。我通常会先执行yum update -y更新系统所有包到最新版本,这个步骤能避免很多因版本不兼容导致的问题。特别提醒:如果是在生产环境操作,建议先在测试机验证,因为某些更新可能会影响现有服务。
网络连通性检查容易被忽视但至关重要。我习惯用ping -c 3 www.postgresql.org测试外网访问,同时用telnet localhost 22检查本地服务端口。曾经有次安装失败就是因为防火墙规则阻断了yum源访问,后来养成了先运行systemctl stop firewalld临时关闭防火墙的习惯(生产环境需谨慎)。
安装依赖包时,这个组合经过多次实践验证:
bash复制yum groupinstall "Development Tools" -y
yum install -y perl-ExtUtils-Embed readline-devel zlib-devel pam-devel \
libxml2-devel libxslt-devel openldap-devel python-devel \
gcc-c++ openssl-devel cmake
其中readline-devel和zlib-devel直接影响客户端工具使用体验,libxml2-devel则是XML支持必备。有次漏装python-devel导致PL/Python扩展无法编译,现在我会特意检查rpm -qa | grep devel确认所有开发包已安装。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. PostgreSQL源码编译详解
2.1 源码获取与目录规划
从官方镜像站下载时,我推荐使用wget直接获取特定版本:
bash复制wget https://ftp.postgresql.org/pub/source/v12.0/postgresql-12.0.tar.gz
校验文件完整性是个好习惯:
bash复制sha256sum postgresql-12.0.tar.gz | grep a85e3554f0a9b7d70d9b7f2839d0d764
目录结构设计影响后期维护。我的标准做法是:
code复制/opt/pgsql/
├── postgresql-12.0/ # 源码目录
├── postgresql/ # 安装目录
│ ├── bin
│ ├── data # 数据目录
│ └── lib
└── backups/ # 预留备份目录
这种分离式布局方便后续版本升级和备
