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 | |
postgresql | 12.2 | zlib-devel readline-devel |
postgis | 3.0.1 | gcc g++ |
GEOS | 3.8.0 | |
sqlite3 | 3.32.2 | |
PROJ | 6.3.1 | |
protubuf | 3.15.3 | |
protubuf-c | 1.3.3 | |
json-c | 0.13.1 | |
CMake | 3.16.8 | openssl openssl-devel |
CGAL | 4.14.3 | gmp-devel boost-devel mpfr-devel zlib-devel libxml2-devel |
SFCGAL | 1.3.7 | |
GDAL | 3.0.4 | |
pcre | 8.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';