1. 环境准备与依赖包下载在内网环境部署PostgreSQL 14和PostGIS扩展最大的挑战就是解决依赖关系。我经历过多次离线部署发现最稳妥的方式是先在联网环境准备好所有RPM包。这里有个小技巧可以找一台相同版本的CentOS 7.5临时连接外网用yumdownloader工具下载所有依赖。PostgreSQL 14的核心包包括postgresql14-14.11-1PGDG.rhel7.x86_64.rpmpostgresql14-libs-14.11-1PGDG.rhel7.x86_64.rpmpostgresql14-server-14.11-1PGDG.rhel7.x86_64.rpm实测过程中发现libicu是常见依赖缺失项建议提前下载wget http://mirror.centos.org/centos/7/os/x86_64/Packages/libicu-50.2-4.el7_7.x86_64.rpm对于PostGIS扩展依赖关系更复杂。我推荐使用yum-utils的downloadonly功能yum install -y yum-utils yumdownloader --resolve --destdir/tmp/postgis_packages postgis32_142. 离线安装PostgreSQL 14安装顺序很关键我踩过坑之后总结出最佳实践先安装基础库rpm -ivh postgresql14-libs-14.11-1PGDG.rhel7.x86_64.rpm再安装主程序rpm -ivh postgresql14-14.11-1PGDG.rhel7.x86_64.rpm最后安装服务端rpm -ivh postgresql14-server-14.11-1PGDG.rhel7.x86_64.rpm如果遇到依赖错误可以用以下命令查看缺失项rpm -qpR 包名.rpm | grep -v 已安装3. 初始化与基础配置初始化数据库前需要特别注意权限问题。我习惯将数据目录放在/home下mkdir -p /home/pgsql/14/data chown -R postgres:postgres /home/pgsql chmod 700 /home/pgsql/14/data初始化命令需要指定数据目录su - postgres /usr/pgsql-14/bin/initdb -D /home/pgsql/14/data修改postgresql.conf关键参数listen_addresses * port 5432 max_connections 200 shared_buffers 1GB配置客户端认证pg_hba.confhost all all 0.0.0.0/0 md54. PostGIS扩展安装PostGIS的依赖包较多建议将所有下载的rpm包放在同一目录后批量安装yum localinstall -y *.rpm验证安装后在数据库中启用扩展CREATE DATABASE gisdb; \c gisdb CREATE EXTENSION postgis; SELECT PostGIS_Version();常见问题排查如果遇到符号链接错误可以手动创建ln -s /run/postgresql/.s.PGSQL.5432 /var/run/postgresql/.s.PGSQL.5432服务启动失败时检查日志journalctl -xe5. 服务管理与优化配置systemd服务时需要注意环境变量vim /usr/lib/systemd/system/postgresql-14.service添加数据目录配置EnvironmentPGDATA/home/pgsql/14/data启动和启用服务systemctl daemon-reload systemctl enable --now postgresql-14性能优化建议调整shared_buffers为物理内存的25%设置effective_cache_size为物理内存的50%对于GIS应用建议增加maintenance_work_mem6. 空间数据验证创建测试空间表验证功能CREATE TABLE spatial_test ( id serial PRIMARY KEY, geom geometry(POINT,4326) ); INSERT INTO spatial_test (geom) VALUES (ST_SetSRID(ST_MakePoint(116.404, 39.915), 4326)); SELECT ST_AsText(geom) FROM spatial_test;对于生产环境建议额外安装这些扩展CREATE EXTENSION postgis_topology; CREATE EXTENSION postgis_raster; CREATE EXTENSION fuzzystrmatch;7. 备份与迁移策略在内网环境中备份尤为重要。我常用的备份命令su - postgres pg_dump -Fc gisdb gisdb_backup.dump恢复数据库时使用pg_restore -C -d postgres gisdb_backup.dump对于大型空间数据库可以考虑使用pg_basebackuppg_basebackup -D /backup/pgsql -Ft -z -P8. 常见问题解决方案连接数不足问题ALTER SYSTEM SET max_connections 300;空间查询性能优化CREATE INDEX idx_spatial_test_geom ON spatial_test USING GIST(geom); VACUUM ANALYZE spatial_test;编码问题处理UPDATE pg_database SET encoding pg_char_to_encoding(UTF8) WHERE datname gisdb;扩展版本冲突rpm -qa | grep postgis yum reinstall postgis32_14-*
CentOS 7.5 内网环境部署PostgreSQL 14与PostGIS实战:从依赖包下载到服务验证
1. 环境准备与依赖包下载在内网环境部署PostgreSQL 14和PostGIS扩展最大的挑战就是解决依赖关系。我经历过多次离线部署发现最稳妥的方式是先在联网环境准备好所有RPM包。这里有个小技巧可以找一台相同版本的CentOS 7.5临时连接外网用yumdownloader工具下载所有依赖。PostgreSQL 14的核心包包括postgresql14-14.11-1PGDG.rhel7.x86_64.rpmpostgresql14-libs-14.11-1PGDG.rhel7.x86_64.rpmpostgresql14-server-14.11-1PGDG.rhel7.x86_64.rpm实测过程中发现libicu是常见依赖缺失项建议提前下载wget http://mirror.centos.org/centos/7/os/x86_64/Packages/libicu-50.2-4.el7_7.x86_64.rpm对于PostGIS扩展依赖关系更复杂。我推荐使用yum-utils的downloadonly功能yum install -y yum-utils yumdownloader --resolve --destdir/tmp/postgis_packages postgis32_142. 离线安装PostgreSQL 14安装顺序很关键我踩过坑之后总结出最佳实践先安装基础库rpm -ivh postgresql14-libs-14.11-1PGDG.rhel7.x86_64.rpm再安装主程序rpm -ivh postgresql14-14.11-1PGDG.rhel7.x86_64.rpm最后安装服务端rpm -ivh postgresql14-server-14.11-1PGDG.rhel7.x86_64.rpm如果遇到依赖错误可以用以下命令查看缺失项rpm -qpR 包名.rpm | grep -v 已安装3. 初始化与基础配置初始化数据库前需要特别注意权限问题。我习惯将数据目录放在/home下mkdir -p /home/pgsql/14/data chown -R postgres:postgres /home/pgsql chmod 700 /home/pgsql/14/data初始化命令需要指定数据目录su - postgres /usr/pgsql-14/bin/initdb -D /home/pgsql/14/data修改postgresql.conf关键参数listen_addresses * port 5432 max_connections 200 shared_buffers 1GB配置客户端认证pg_hba.confhost all all 0.0.0.0/0 md54. PostGIS扩展安装PostGIS的依赖包较多建议将所有下载的rpm包放在同一目录后批量安装yum localinstall -y *.rpm验证安装后在数据库中启用扩展CREATE DATABASE gisdb; \c gisdb CREATE EXTENSION postgis; SELECT PostGIS_Version();常见问题排查如果遇到符号链接错误可以手动创建ln -s /run/postgresql/.s.PGSQL.5432 /var/run/postgresql/.s.PGSQL.5432服务启动失败时检查日志journalctl -xe5. 服务管理与优化配置systemd服务时需要注意环境变量vim /usr/lib/systemd/system/postgresql-14.service添加数据目录配置EnvironmentPGDATA/home/pgsql/14/data启动和启用服务systemctl daemon-reload systemctl enable --now postgresql-14性能优化建议调整shared_buffers为物理内存的25%设置effective_cache_size为物理内存的50%对于GIS应用建议增加maintenance_work_mem6. 空间数据验证创建测试空间表验证功能CREATE TABLE spatial_test ( id serial PRIMARY KEY, geom geometry(POINT,4326) ); INSERT INTO spatial_test (geom) VALUES (ST_SetSRID(ST_MakePoint(116.404, 39.915), 4326)); SELECT ST_AsText(geom) FROM spatial_test;对于生产环境建议额外安装这些扩展CREATE EXTENSION postgis_topology; CREATE EXTENSION postgis_raster; CREATE EXTENSION fuzzystrmatch;7. 备份与迁移策略在内网环境中备份尤为重要。我常用的备份命令su - postgres pg_dump -Fc gisdb gisdb_backup.dump恢复数据库时使用pg_restore -C -d postgres gisdb_backup.dump对于大型空间数据库可以考虑使用pg_basebackuppg_basebackup -D /backup/pgsql -Ft -z -P8. 常见问题解决方案连接数不足问题ALTER SYSTEM SET max_connections 300;空间查询性能优化CREATE INDEX idx_spatial_test_geom ON spatial_test USING GIST(geom); VACUUM ANALYZE spatial_test;编码问题处理UPDATE pg_database SET encoding pg_char_to_encoding(UTF8) WHERE datname gisdb;扩展版本冲突rpm -qa | grep postgis yum reinstall postgis32_14-*