Postgresql 12.2 + PostGIS 3.0.1 安装部署手册

文章目录

  • Postgresql 12.2 + PostGIS 3.0.1 安装部署手册
    • 环境说明
    • 注意事项
    • Postgresql 12.2 安装
      • 1.安装基础库
      • 2.创建系统用户
      • 3.下载安装包
      • 4.解压编译安装
      • 5.环境变量配置
      • 6.初始化数据目录
      • 7.配置远程登录
      • 8.配置系统服务
      • 9.设置数据库用户密码
      • 10.远程连接测试
    • PostGIS 3.0.1 安装
      • 1.GEOS 编译安装
      • 2.PROJ 编译安装
        • 2.1.升级 sqlite3
        • 2.2.安装 proj
      • 3.Protubuf-c 编译安装
        • 3.1.安装 protubuf
        • 3.2.安装 protobuf-c
      • 4.Json-c 编译安装
      • 5.SFCGAL 编译安装
        • 5.1.安装 CMake
        • 5.2.安装 CGAL
        • 5.3.安装 SFCGAL
      • 6.GDAL 编译安装
      • 7.Pcre 编译安装
      • 8.PostGIS 编译安装

环境说明

该套环境是用来适配ArcGIS 10.8.1 和 ArcGIS Pro 2.6。

名称版本相关依赖
操作系统centos7.6
postgresql12.2zlib-devel readline-devel
postgis3.0.1gcc g++
GEOS3.8.0
sqlite33.32.2
PROJ6.3.1
protubuf3.15.3
protubuf-c1.3.3
json-c0.13.1
CMake3.16.8openssl openssl-devel
CGAL4.14.3gmp-devel boost-devel mpfr-devel zlib-devel libxml2-devel
SFCGAL1.3.7
GDAL3.0.4
pcre8.45

PostgreSQL —— PostGIS构建于PostgreSQL之上,所以PostgreSQL必须要安装。
GNU C 编译器(gcc) —— gcc是一个Linux中最标准的C语言编译器,需要安装gcc来编译PostGIS和其他软件或函数库的源码。
GNU Make(gmake或make) —— 这个也是用于编译源码。
Proj4 —— Proj4 重投影库用于在PostGIS中提供坐标重投影功能。
GEOS —— GEOS几何图形库,用于支持PostGIS中的几何信息处理、分析等功能,也可以直接认为GEOS是一个几何算法库。
LibXML2 —— LibXML2目前用于PostGIS中的一些导入函数,比如ST_GeomFromGML()和ST_GeomFromKML()。
JSON-C —— 目前使用JSON-C通过ST_GeomFromGeoJSON()函数导入GeoJSON格式的数据
GDAL —— 用于PostGIS对栅格数据的支持。
SFCGAL —— 用于PostGIS对三维数据的支持。
PostGIS —— PostgreSQL的空间数据、空间索引和空间函数的扩展。

注意事项

1.除了几个主要的组件外,能用YUM安装的就使用YUM安装。
2.本地编译安装的过程中最好不要指定安装路径,使用默认路径/usr/local,防止安装完成后找不到共享库和可执行文件。
3.环境变量和共享库修改后,一定要及时刷新和重新加载。
4.如果遇到已经配置好变量和共享库后,编译安装时仍然读不到共享库的情况,可以尝试关闭ssh会话重新连接服务器。
5.安装时严格按照指定版本进行安装,版本参数参考PostGIS官方说明。

Postgresql 12.2 安装

1.安装基础库

yum -y install zlib-devel readline-devel

2.创建系统用户

以root用户执行以下命令

# 创建 postgres 用户adduser postgres# 给 postgres 用户设置密码passwd postgres

3.下载安装包

下载地址: https://ftp.postgresql.org/pub/source/v12.2/postgresql-12.2.tar.gz

4.解压编译安装

# 切换为postgres用户su - postgres# 进入安装包所在文件夹cd /home/postgres/software# 解压安装包tar -xzvf postgresql-12.2.tar.gz # 进入解压后的安装包cd postgresql-12.2# 进行编译检查,设置安装目录为/home/postgres,构建时开启支持xml数据类型 --with-libxml./configure --prefix=/home/postgres --with-libxml# ./configure无误后,执行编译安装makemake install

5.环境变量配置

如果需要在任意环境下都能使用 postgresql 相关命令,则需要把 $PGHOME/bin 中的内容都加入PATH环境变量,编辑 /etc/profile 文件。
如果只是在postgres用户下使用,则需要编辑 /home/postgres/.bash_profile 文件。

vi /etc/profile# 在最后追加以下内容export PGHOME=/home/postgresexport PATH=$PGHOME/bin:$PATH# 如果需要设置一个单独的目录作为数据库目录,则需要明确指定PGDATA环境变量,且该文件夹的owner必须为postgres用户export PGDATA=/home/postgres/data

若需要环境变量立即生效,则执行以下命令

source /etc/profilesource /home/postgres/.bash_profile

6.初始化数据目录

初始化数据库目录(单实例)
若配置好PG的bin目录为环境变量后,直接针对目标数据库执行以下命令
(令数据库目录为 /home/postgres/data)

initdb -D /home/postgres/data

若有调整WAL日志大小的需求(主要用于归档、主从配置的优化,一旦initdb初始化指定后,不可修改),则可以执行以下命令(非必要),–wal-segsize的单位为MB
initdb -D /data/pgdata –wal-segsize=128

7.配置远程登录

1.编辑 pg_hba.conf 文件

vi /home/postgres/data/pg_hba.conf

host all all 0.0.0.0/0 md5 添加到文件中,代表所有的用户通过任意 ip 都可以通过md5(密码)的方式登陆PostgreSQL。
如下图所示:

host all all 0.0.0.0/0 md5


2.编辑 postgresql.conf 文件

vi /home/postgres/data/postgresql.conf

修改listen_addresses为*,如下图所示:

8.配置系统服务

1.创建postgresql.service文件

vi /usr/lib/systemd/system/postgresql.service

写入

[Unit]Description=PostgreSQL database serverAfter=network.target[Service]Type=forkingUser=postgresGroup=postgresEnvironment=PGPORT=5432Environment=PGDATA=/home/postgres/dataOOMScoreAdjust=-1000ExecStart=/home/postgres/bin/pg_ctl start -D ${PGDATA} -s -o "-p ${PGPORT}" -w -t 300ExecStop=/home/postgres/bin/pg_ctl stop -D ${PGDATA} -s -m fastExecReload=/home/postgres/bin/pg_ctl reload -D ${PGDATA} -sTimeoutSec=300[Install]WantedBy=multi-user.target

2.控制命令

systemctl daemon-reload      # 启用服务控制守护systemctl start postgresql   # 启动systemctl stop postgresql    # 停止systemctl restart postgresql # 重启systemctl enable postgresql  # 开机自启systemctl staus postgresql   # 查看状态

9.设置数据库用户密码

# 切换到postgres用户su - postgres # 直接用postgres超级用户登录,默认不需要密码,psql直接回车就以postgres用户进入了postgres数据库psql -U postgres# 修改超级用户密码为:postgresalter role postgres with pass 'postgres';# 退出\q

10.远程连接测试

通过 Navicat 连接访问

成功连接如下

PostGIS 3.0.1 安装

注意: 先安装gcc 、gcc-c++,其他组件的依赖其进行编译安装.

yum install -y gcc gcc-c++

版本查看

gcc --versiong++ --version

1.GEOS 编译安装

下载地址: https://download.osgeo.org/geos/geos-3.8.0.tar.bz2

1.安装命令

tar -jxvf geos-3.8.0.tar.bz2cd geos-3.8.0./configuremakemake install

2.测试

geos-config --version

2.PROJ 编译安装

注意: proj6.3.2依赖于sqlite3,且sqlite3的版本要 ≥ 3.11,系统yum安装的sqlite3版版是3.7的,所以要对sqlite3进行升级。

2.1.升级 sqlite3

下载地址: http://www.sqlite.org/2020/sqlite-autoconf-3320200.tar.gz

1.yum 安装

yum -y install sqlite sqlite-devel

2.编译安装

tar zxvf sqlite-autoconf-3320200.tar.gzcd sqlite-autoconf-3320200/ ./configure --prefix=/usr/local/sqlitemakemake install

3.环境配置

vi /etc/profile# 在最后面追加以下内容export SQLITE3=/usr/local/sqliteexport PATH=$SQLITE3/bin:$PATHexport PKG_CONFIG_PATH=/usr/local/sqlite/lib/pkgconfig# 刷新source /etc/profile

4.替换版本

cp /usr/local/sqlite/bin/sqlite3 /usr/bin/

5.测试

sqlite3 --version

2.2.安装 proj

下载地址: http://download.osgeo.org/proj/proj-6.3.1.tar.gz

1.安装命令

tar -zxvf proj-6.3.1.tar.gzcd proj-6.3.1./configuremakemake install

安装成功如下:

2.测试

proj

3.Protubuf-c 编译安装

说明: protobuf-c依赖protobuf,所以先安装protobuf。

3.1.安装 protubuf

下载地址: https://github.com/protocolbuffers/protobuf/releases/download/v3.15.3/protobuf-all-3.15.3.tar.gz

1.安装命令

tar -zxvf protobuf-all-3.15.3.tar.gzcd protobuf-3.15.3./configuremakemake install

安装成功如下:

2.环境配置

vi /etc/profile# 最后面追加以下内容export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATHexport PKG_CONFIG_PATH=/usr/local/lib/pkgconfig# 刷新source /etc/profile

3.测试

protoc --version

3.2.安装 protobuf-c

下载地址: https://github.com/protobuf-c/protobuf-c/releases/download/v1.3.3/protobuf-c-1.3.3.tar.gz

1.安装命令

tar -zxvf protobuf-c-1.3.3.tar.gzcd protobuf-c-1.3.3./configuremakemake install

安装成功如下:

2.测试

protoc-c --version

4.Json-c 编译安装

下载地址: https://codeload.github.com/json-c/json-c/tar.gz/refs/tags/json-c-0.13.1-20180305

安装命令

tar -zxvf json-c-json-c-0.13.1-20180305.tar.gzcd json-c-json-c-0.13.1-20180305/./configuremakemake install

安装成功如下:

5.SFCGAL 编译安装

说明: 由于PostGIS对应的版本比较新,因此CentOS 7默认的CMake版本不足,需要编译安装新版本的CMake。

5.1.安装 CMake

下载地址: https://github.com/Kitware/CMake/releases/download/v3.16.8/cmake-3.16.8.tar.gz

1.安装openssl相关库

yum -y install openssl openssl-devel

2.安装命令

tar -zxvf cmake-3.16.8.tar.gzcd cmake-3.16.8./bootstrapgmakemake install

安装成功如下:

3.测试

cmake --version

5.2.安装 CGAL

说明: sfcgal、pgRouting(网络分析)都依赖boost、cgal,可能会出现boost、cgal安装编译都成功,就是无法编译sfcgal,或者编译好了pgrouting却无法使用。原因就是boost、cgal的问题,只要记住一点,只安装到默认路径,不要指定路径。

下载地址: https://github.com/CGAL/cgal/releases/download/releases%2FCGAL-4.14.3/CGAL-4.14.3.tar.xz

1.安装相关依赖库

yum -y install gmp-devel boost-devel mpfr-devel zlib-devel libxml2-devel

2.安装命令

tar -xvf CGAL-4.14.3.tar.xzcd CGAL-4.14.3mkdir build && cd buildcmake ..makemake install

安装成功如下:

5.3.安装 SFCGAL

下载地址: https://codeload.github.com/Oslandia/SFCGAL/tar.gz/refs/tags/v1.3.7

1.安装命令

tar -zxvf SFCGAL-1.3.7.tar.gzcd SFCGAL-1.3.7  mkdir build && cd buildcmake .. makemake install

安装成功如下:

安装完成后,需要配置软链接到libSFCGAL.so,防止后续gdal安装找不到

ln -s /usr/local/lib64/libSFCGAL.so /usr/local/lib/libSFCGAL.soln -s /usr/local/lib64/libSFCGAL.so.1 /usr/local/lib/libSFCGAL.so.1

6.GDAL 编译安装

下载地址: https://download.osgeo.org/gdal/3.0.4/gdal-3.0.4.tar.gz

1.安装命令

tar -zxvf gdal-3.0.4.tar.gz cd gdal-3.0.4 ./configuremakemake install

安装成功如下:

2.测试

gdal-config --version

7.Pcre 编译安装

下载地址: http://downloads.sourceforge.net/project/pcre/pcre/8.45/pcre-8.45.tar.gz

1.安装命令

tar -zxvf pcre-8.45.tar.gz cd pcre-8.45./configure makemake install

安装成功如下:

2.测试

pcre-config --version

8.PostGIS 编译安装

下载地址: https://download.osgeo.org/postgis/source/postgis-3.0.1.tar.gz

1.安装命令

tar -zxvf postgis-3.0.1.tar.gzcd postgis-3.0.1./configure --with-pgconfig=/home/postgres/bin/pg_configmakemake install

安装成功如下:

2.环境配置

vi /etc/ld.so.conf# 在最后面追加以下内容/home/postgres/lib/usr/local/lib/usr/local/lib64# 重新加载ldconfig

3.测试
3.1 切换postgres用户

su - postgres

3.2 登录数据库

psql -p 5432 -d postgres -U postgres -W

3.3 创建一个测试库

create datebase test;

3.4 进入测试库,创建拓展

# 进入测试库\c test;# 创建postgis扩展create extension postgis;# 验证栅格类数据需要的raster扩展create extension postgis_raster;# 如果安装带有sfcgal,验证下三维sfcgal扩展create extension postgis_sfcgal;

3.5 查看postgresql和postgis版本

select  VERSION();select * from pg_available_extensions WHERE name like 'postgis';