CentOS 7.9 部署 PostgreSQL 15.17 + PostGIS 3.4.8 操作文档

CentOS 7.9 部署 PostgreSQL 15.17 + PostGIS 3.4.8 操作文档

适用系统:CentOS 7.9 x86_64

数据库版本:PostgreSQL 15.17(二进制官方版)

空间插件:PostGIS 3.4.8(稳定兼容版)

适用场景:政务内网、生产环境、离线部署

运行用户:postgres(独立权限,安全规范)

目录

1.环境初始化(root 执行)

2.PostgreSQL 15.17 二进制安装

3.PostGIS 3.4.8 编译安装

4.扩展启用与安装验证

5.数据库常用运维命令

6.常见问题解决方案

7.部署规范说明

一、环境初始化(root 用户执行)

1.1 关闭防火墙与 SELinux(政务标准配置)

运行

关闭防火墙

systemctl stop firewalld

systemctl disable firewalld

关闭SELinux

setenforce 0sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

1.2 安装系统基础依赖

运行

yum install -y wget gcc gcc-c++ make cmake libtool libxml2-devel zlib-devel readline-devel

1.3 创建专用用户与数据目录

运行

创建postgres用户useradd -m postgrespasswd postgres

创建安装/数据/日志目录mkdir -p /usr/local/pg15

mkdir -p /data/pg15_data

mkdir -p /data/pg15_log

授权权限(必须执行)chown -R postgres:postgres /usr/local/pg15chown -R postgres:postgres /data/pg15_datachmod 700 /data/pg15_data

二、PostgreSQL 15.17 二进制安装

2.1 下载官方二进制包

运行

cd /tmpwget https://get.enterprisedb.com/postgresql/postgresql-15.17-1-linux-x64-binaries.tar.gz

离线环境:手动下载安装包上传至 /tmp 目录

2.2 解压安装

运行

tar -zxvf postgresql-15.17-1-linux-x64-binaries.tar.gzcp -rf pgsql/* /usr/local/pg15/

2.3 配置环境变量

1.切换用户:su - postgres

2.编辑文件:vim ~/.bash_profile

3.写入配置:

运行

export PGHOME=/usr/local/pg15

export PGDATA=/data/pg15_data

export PATH=PGHOME/bin:PGHOME/bin:PGHOME/bin:PATH

export LD_LIBRARY_PATH=PGHOME/lib:PGHOME/lib:PGHOME/lib:LD_LIBRARY_PATH

1.生效并验证:

运行

source ~/.bash_profile

psql --version

2.4 初始化数据库

运行

initdb -D /data/pg15_data -E UTF8 --locale=en_US.UTF-8

2.5 配置远程连接

2.5.1 修改主配置

运行

vim /data/pg15_data/postgresql.conf

修改参数:

ini

listen_addresses = '*'

port = 5432

max_connections = 1000

log_destination = 'csvlog'

logging_collector = on

log_directory = '/data/pg15_log'

2.5.2 修改权限配置

运行

vim /data/pg15_data/pg_hba.conf

末尾添加:

ini

host all all 0.0.0.0/0 scram-sha-256

2.6 配置系统服务(开机自启)

切换 root:exit

创建服务文件:vim /usr/lib/systemd/system/postgresql-15.service

写入内容:

ini

UnitDescription=PostgreSQL 15.17 Database ServerAfter=network.target

ServiceUser=postgresGroup=postgresExecStart=/usr/local/pg15/bin/pg_ctl start -D /data/pg15_data -l /data/pg15_log/pg.logExecStop=/usr/local/pg15/bin/pg_ctl stop -D /data/pg15_dataExecReload=/usr/local/pg15/bin/pg_ctl reload -D /data/pg15_dataRestart=always

InstallWanted=multi-user.target

1.加载并启动服务:

运行

systemctl daemon-reload

systemctl enable postgresql-15

systemctl start postgresql-15

systemctl status postgresql-15

2.7 设置管理员密码

运行

su - postgres

psql

ALTER USER postgres ENCRYPTED PASSWORD 'postgres@123';

\q

三、PostGIS 3.4.8 安装

3.1 安装底层依赖

运行

exit

yum install -y geos-devel proj-devel gdal-devel json-c-devel libtiff-devel libpng-devel

3.2 下载并解压源码

运行

cd /tmpwget https://download.osgeo.org/postgis/source/postgis-3.4.8.tar.gztar -zxvf postgis-3.4.8.tar.gzcd postgis-3.4.8

3.3 编译安装(核心步骤)

运行

./configure --prefix=/usr/local/pg15 --with-pgconfig=/usr/local/pg15/bin/pg_configmake -j4make install

3.4 刷新系统库

运行

echo "/usr/local/pg15/lib" > /etc/ld.so.conf.d/postgres15.conf

ldconfig

四、启用扩展与安装验证

4.1 登录数据库启用扩展

运行

su - postgres

psql

执行 SQL:

sql

-- 必装核心扩展CREATE EXTENSION postgis;-- 可选拓扑扩展CREATE EXTENSION postgis_topology;

-- 验证版本SELECT postgis_version();SELECT version();

4.2 验证成功标准

1.执行 \dx 可看到 postgis 扩展

2.输出版本:PostgreSQL 15.17 + PostGIS 3.4.8

五、常用运维命令

运行

启动

systemctl start postgresql-15# 停止

systemctl stop postgresql-15# 重启

systemctl restart postgresql-15# 状态

systemctl status postgresql-15# 开机自启

systemctl enable postgresql-15

六、常见问题解决方案

pg_config 未找到检查路径:/usr/local/pg15/bin/pg_config --version

PostGIS 共享库加载失败执行命令:ldconfig

远程无法连接确认防火墙 / SELinux 已关闭,权限配置正确

编译失败重装依赖:yum reinstall -y geos-devel proj-devel gdal-devel

七、部署规范说明

权限规范:仅 postgres 用户运行数据库,禁止 root 运行

版本规范:PG15.17 + PostGIS3.4.8 官方稳定兼容组合

环境规范:支持离线 / 政务内网 / 生产环境部署

安全规范:强密码、独立目录、权限最小化

相关推荐
Teecertlabs1 分钟前
【机密计算顶会解读】15:LDR——面向嵌入式TEE系统的高效安全Linux驱动
linux·操作系统·机密计算·可信执行环境
程序员-Benothing2 分钟前
Linux网络性能分析:ss、netstat、iftop、sar实战
linux·运维·服务器
其实防守也摸鱼3 分钟前
Codex 下载与本地部署实战指南
linux·服务器·前端·数据库·算法·ai
岳麓丹枫0014 分钟前
故障案例分析:系统负载居高不下,多次出现 OOM
linux·postgresql
2401_862880827 分钟前
Linux中断、中断子系统、内核同步互斥机制
linux·驱动开发·嵌入式硬件
姓刘的哦11 分钟前
GT911触摸芯片
linux·stm32
Android系统攻城狮14 分钟前
Linux Gstreamer深度解析之gst_audio_ring_buffer_read调用流程与实战(七十五)
linux·运维·服务器·gstreamer音视频·gstreamer音视频进阶
一条破秋裤23 分钟前
04_控制GPIO通用化_从寄存器到gpiod
linux
星恒随风25 分钟前
Linux进程信号(二):深入理解信号阻塞、未决、sigaction、中断机制、可重入函数与SIGCHLD
linux·运维·服务器·笔记·学习
额额额对了35 分钟前
Linux 驱动实战:ADXL345 驱动
linux·运维·服务器