环境:centOS stream 9\ postgresql 18.0;
通过宝塔自带的postgreSQL管理器安装了postgresql version 18.0;
第一步:找到 pg_config
bash
find /www/server/pgsql -name pg_config
预期结果类似:说明安装的路径是正确的;必须是以下路径:
bash
/www/server/pgsql/bin/pg_config
bash
/www/server/pgsql/bin/psql -U postgres -c "SELECT version();"
只要能连上,版本正常(18.x),就可以继续。
以下要安装postgis的依赖,在centOS Stream 9上;
bash
sudo dnf install -y \
gcc gcc-c++ make \
libxml2 libxml2-devel \
json-c json-c-devel \
proj proj-devel \
geos geos-devel \
gdal gdal-devel \
protobuf-c protobuf-c-devel \
readline-devel \
zlib-devel \
pcre2-devel \
flex bison \
pkgconfig \
perl \
libxml2-tools \
gettext
说明一下这些东西干嘛的:
-
gcc / g++ / make / flex / bison / pkgconfig:基本编译工具链
-
libxml2 / json-c:PostGIS 内部用 XML / JSON
-
proj / geos / gdal:GIS 三件套(坐标转换 / 几何引擎 / 栅格)
-
protobuf-c / protobuf-c-devel:支持 MVT / Geobuf(你之前没装它就报错了)
-
readline / zlib / pcre2:PostgreSQL / 扩展常见依赖
-
libxml2-tools / gettext:文档、多语言相关(非必须,但装上没坏处)
这样装完之后,基本不会再在 ./configure 上被依赖绊住。
切到适合放源码的目录:
bash
cd /usr/local/src
wget https://download.osgeo.org/postgis/source/postgis-3.6.0.tar.gz
tar zxvf postgis-3.6.0.tar.gz
cd postgis-3.6.0
获取postgis,并且解压postgis压缩包,然后重新进入到postgis-3.6.0文件夹下;以上步骤,每一步都不可以少;
配置 PostGIS,明确告诉它用"宝塔的 pg_config"
bash
./configure --with-pgconfig=/www/server/pgsql/bin/pg_config
配置结束后,屏幕底部会出现类似这样的 summary(你刚才已经见过):
-
PostgreSQL config: /www/server/pgsql/bin/pg_config✅ -
PostgreSQL version: PostgreSQL 18.0✅ -
GEOS version: 3.13.x✅ -
PROJ version: 9.x✅ -
GDAL version: 3.x✅ -
JSON-C support: yes✅ -
protobuf support: yes✅
只要没有 error: ...,有几个 WARNING(比如 docbook、codespell、CUnit)都可以无视------那都是文档/测试相关,不影响功能。
下面开始安装postgis:
bash
make
sudo make install
安装成功后,扩展文件会被复制到:
bash
/www/server/pgsql/share/extension/
到这里,安装结束;
通过进入postgres数据库,创建postgis扩展:
bash
CREATE EXTENSION postgis;
CREATE EXTENSION postgis_raster;
CREATE EXTENSION postgis_topology;
验证 PostGIS 是否正常:
bash
SELECT postgis_full_version();
下面是完整的代码:
bash
# 1. 安装依赖
sudo dnf install -y \
gcc gcc-c++ make \
libxml2 libxml2-devel \
json-c json-c-devel \
proj proj-devel \
geos geos-devel \
gdal gdal-devel \
protobuf-c protobuf-c-devel \
readline-devel \
zlib-devel \
pcre2-devel \
flex bison \
pkgconfig \
perl \
libxml2-tools \
gettext
# 2. 下载源码
cd /usr/local/src
wget https://download.osgeo.org/postgis/source/postgis-3.6.0.tar.gz
tar zxvf postgis-3.6.0.tar.gz
cd postgis-3.6.0
# 3. configure (注意这里换成实际 pg_config 路径)
./configure --with-pgconfig=/www/server/pgsql/bin/pg_config
# 4. 编译 + 安装
make -j$(nproc)
sudo make install
然后在postgreSQL里:
bash
CREATE EXTENSION postgis;
CREATE EXTENSION postgis_raster;
CREATE EXTENSION postgis_topology;
SELECT postgis_full_version();