PostGIS安装
PostGIS Extension源码包可通过网站 https://opengauss.obs.cn-south-1.myhuaweicloud.com/dependency/postgis-xc-master-2020-09-17.tar.gz获取。该Extension需使用GCC-7.3(GNU编译器套件)进行编译安装。
• 在整个安装过程中,可使用make -sj和make install -sj命令并行加速编译,-sj命令极低概率性出现安装错误,如果安装失败则请使用make和make install进行串行安装。
• 对于ARM物理机,在configure时增加如下编译参数:–build=aarch64-unknown-linux-gnu。
官方文档
https://docs.opengauss.org/zh/docs/3.0.0/docs/Developerguide/PostGIS%E5%AE%89%E8%A3%85.html
--1 PostGIS概述
openGauss提供PostGIS Extension(版本为PostGIS-2.4.2),PostGIS Extension是PostgreSQL的空间数据库扩展,提供如下空间信息服务功能:空间对象、空间索引、空间操作函数和空间操作符,PostGIS Extension完全遵循OpenGIS规范。
PostGIS Extension依赖第三方开源软件如下:
· Geos 3.6.2
· Proj 4.9.2
· Json 0.12.1
· Libxml2 2.7.1
· Gdal 1.11.0
--2 PostGIS安装
2.1 PostGIS Extension 源码包下载
下载地址: https://opengauss.obs.cn-south-1.myhuaweicloud.com/dependency/postgis-xc-master-2020-09-17.tar.gz
【备注】
1)该Extension需使用GCC-7.3(GNU编译器套件)进行编译安装;
2)在整个安装过程中,可使用 make -sj 和 make install -sj 命令并行加速编译,-sj 命令极低概率性出现安装错误,如果安装失败则请使用 make 和 make install 进行串行安装;
对于ARM物理机,在configure时增加如下编译参数:–build=aarch64-unknown-linux-gnu。
2.2 GCC-7.3(GNU编译器套件)编译器安装
2.2.1 下载相关依赖包
若数据库中已经安装好GCC-7.3,则跨过此步骤;
GCC-7.3编译器推荐使用源码由低版本的 gcc 和 g++ 编译器进行升级安装;
若数据库实例中没有低版本 gcc 和 g++ 编译器,可以通过挂载操作系统镜像等方法进行安装,这里不做赘述;
GCC-7.3 编译器相关依赖软件包,包括 gcc-7.3.0、gmp-6.1.0、mpfr-3.1.4、mpc-1.0.3,依赖包下载地址分别为:
https://ftp.gnu.org/gnu/gcc/gcc-7.3.0/gcc-7.3.0.tar.gz
https://ftp.gnu.org/gnu/gmp/gmp-6.1.0.tar.xz
https://ftp.gnu.org/gnu/mpfr/mpfr-3.1.4.tar.gz
https://ftp.gnu.org/gnu/mpc/mpc-1.0.3.tar.gz
为了校验安装包的完整性,请同时下载安装包的同名的.sig文件和keyring文件:
https://ftp.gnu.org/gnu/gcc/gcc-7.3.0/gcc-7.3.0.tar.gz.sig
https://ftp.gnu.org/gnu/gmp/gmp-6.1.0.tar.xz.sig
https://ftp.gnu.org/gnu/mpfr/mpfr-3.1.4.tar.gz.sig
https://ftp.gnu.org/gnu/mpc/mpc-1.0.3.tar.gz.sig
https://ftp.gnu.org/gnu/gnu-keyring.gpg
【备注】使用以下命令验证安装包完整性,如果提示信息中出现 Good signature from XXX 则说明安装包完整:
gpg --verify --keyring ./gnu-keyring.gpg your_package_name.sig
如果提示信息中出现Good signature from XXX则说明安装包完整。
2.2.2 安装相关依赖包
以下安装依赖包操作通过任一台主机登录 omm 用户进行
su - omm
1)创建GCC安装主目录$GAUSSHOME/gcc和代码下载目录$GAUSSHOME/gcc/packages,并下载软件包gcc-7.3.0.tar.gz、gmp-6.1.0.tar.xz、mpc-1.0.3.tar.gz、mpfr-3.1.4.tar.gz至$GAUSSHOME/gcc/packages目录。
mkdir $GAUSSHOME/gcc
mkdir $GAUSSHOME/gcc/packages
2)解压下载的依赖包
cd $GAUSSHOME/gcc/packages
tar -xzf gcc-7.3.0.tar.gz
tar -xvJf gmp-6.1.0.tar.xz
tar -xzf mpc-1.0.3.tar.gz
tar -xzf mpfr-3.1.4.tar.gz
chown -R omm:dbgrp /database/panweidb
chmod -R 755 /database/panweidb
3)创建GCC安装目录
mkdir $GAUSSHOME/gcc/gcc-7.3.0
mkdir $GAUSSHOME/gcc/gcc-7.3.0/depend
mkdir $GAUSSHOME/gcc/gcc-7.3.0/depend/gmp-6.1.0
mkdir $GAUSSHOME/gcc/gcc-7.3.0/depend/mpfr-3.1.4
mkdir $GAUSSHOME/gcc/gcc-7.3.0/depend/mpc-1.0.3
mkdir $GAUSSHOME/gcc/gcc-7.3.0/depend/gcc
4)安装 gmp-4.3.2
cd $GAUSSHOME/gcc/packages/gmp-6.1.0
./configure --prefix $GAUSSHOME/gcc/gcc-7.3.0/depend/gmp-4.3.2
make -sj && make install -sj
5)安装mpfr-2.4.2
cd $GAUSSHOME/gcc/packages/mpfr-3.1.4
./configure --prefix $GAUSSHOME/gcc/gcc-7.3.0/depend/mpfr-3.1.4 --with-gmp=$GAUSSHOME/gcc/gcc-7.3.0/depend/gmp-4.3.2
make -sj && make install -sj
6)安装mpc-1.0.3
cd $GAUSSHOME/gcc/packages/mpc-1.0.3
./configure --prefix=$GAUSSHOME/gcc/gcc-7.3.0/depend/mpc-1.0.3 --with-gmp=$GAUSSHOME/gcc/gcc-7.3.0/depend/gmp-4.3.2 --with-mpfr=$GAUSSHOME/gcc/gcc-7.3.0/depend/mpfr-3.1.4
make -sj && make install -sj
7)安装gcc-7.3.0
· 添加 lib 路径至 ~/.bashrc
vim ~/.bashrc
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$GAUSSHOME/gcc/gcc-7.3.0/depend/gmp-4.3.2/lib:$GAUSSHOME/gcc/gcc-7.3.0/depend/mpfr-3.1.4/lib:$GAUSSHOME/gcc/gcc-7.3.0/depend/mpc-1.0.3/lib
source ~/.bashrc
· 执行下列命令完成 gcc 安装操作
cd $GAUSSHOME/gcc/packages/gcc-7.3.0
./configure --prefix=$GAUSSHOME/gcc/gcc-7.3.0/depend/gcc -disable-multilib --with-gmp=$GAUSSHOME/gcc/gcc-7.3.0/depend/gmp-4.3.2 -enable-languages=c,c++ --with-mpfr=$GAUSSHOME/gcc/gcc-7.3.0/depend/mpfr-3.1.4 --with-mpc=$GAUSSHOME/gcc/gcc-7.3.0/depend/mpc-1.0.3
make -sj && make install -sj
· 设置环境变量
vim ~/.bashrc
export CC=$GAUSSHOME/gcc/gcc-7.3.0/depend/gcc/bin/gcc
export CXX=$GAUSSHOME/gcc/gcc-7.3.0/depend/gcc/bin/g++
export LD_LIBRARY_PATH=$GAUSSHOME/gcc/gcc-7.3.0/depend/gcc/lib64:$LD_LIBRARY_PATH
export PATH=$GAUSSHOME/gcc/gcc-7.3.0/depend/gcc/bin:$PATH
source ~/.bashrc
验证gcc版本:gcc -v
2.2.3 确认zlib已安装
Libxml2软件包编译安装依赖zlib无损数据压缩库;
omm用户可执行 find /usr/ -name libz.a(或者执行find $GAUSSHOME/ -name libz.so)查看zlib是否安装(如果libz.a存在则zlib已安装);
zlib在数据库安装时已默认安装,若查看到zlib未安装,可从网站 https://sourceforge.net/projects/libpng/files/zlib/1.2.8/zlib-1.2.8.tar.gz/download 下载并安装,安装成功后,可以在 /usr/local/lib 下找到libz.a。
2.2.4 autoconf和automake安装
JSON-C 软件包编译安装依赖 autoconf 和 automake 工具,若数据库实例中没有 autoconf 和 automake 工具,可以通过挂载操作系统镜像等方法进行安装,这里不做赘述。
rpm -qa|grep autoconf
rpm -qa|grep automake
yum install -y autoconf automake
2.2.5 PostGIS 依赖库安装
1)从网站 https://opengauss.obs.cn-south-1.myhuaweicloud.com/dependency/postgis-xc-master-2020-09-17.tar.gz 获取PostGIS源码至$GAUSSHOME目录,下载压缩包,解压后需将文件夹重命名为postgis-xc。
cd $GAUSSHOME
tar zxvf postgis-xc-master-2020-09-17.tar.gz
mv postgis-xc-master postgis-xc
2)从网站 https://gitee.com/opengauss/openGauss-third_party/blob/master/gpl_dependency/postgis/postgis_2.4.2-1.patch 下载补丁文件到$GAUSSHOME目录,并打入补丁。
cd $GAUSSHOME/postgis-xc/
patch -p1 < $GAUSSHOME/postgis_2.4.2-1.patch
3)从网站 https://gitee.com/opengauss/openGauss-third_party/blob/master/gpl_dependency/postgis/extension_dependency.h 下载postgis依赖头文件到$GAUSSHOME/include/postgresql/server/
cd $GAUSSHOME/include/postgresql/server/
mv extension_dependency.h_v3.0.0 extension_dependency.h
4)分别编译Geos、Proj、JSON-C、Libxml2、PostGIS并生成相关动态链接库。编译命令为:
· Geos
cd $GAUSSHOME/postgis-xc/geos-3.6.2
chmod +x ./configure
./configure --prefix=$GAUSSHOME/install/geos
make -sj
make install -sj
· Proj
cd $GAUSSHOME/postgis-xc/proj-4.9.2
chmod +x ./configure
./configure --prefix=$GAUSSHOME/install/proj
make -sj
make install -sj
· JSON-C
cd $GAUSSHOME/postgis-xc/json-c-json-c-0.12.1-20160607
chmod +x ./configure
./configure --prefix=$GAUSSHOME/install/json
make -sj
make install -sj
· Libxml2
cd $GAUSSHOME/postgis-xc/libxml2-2.7.1
chmod +x ./configure
./configure --prefix=$GAUSSHOME/install/libxml2
make -sj
make install -sj
对于ARM操作系统,Libxml2配置时则需使用如下configure命令:
./configure --prefix=$GAUSSHOME/install/libxml2 --build=aarch64-unknown-linux-gnu
安装PostGIS 前两步准备操作:
1、需要将lock文件上传到对应的路径下,即将lock包里所有的文件上传到路径为 /database/panweidb/app/include/postgresql/server/storage/lock 中,并修改权限;
mv /home/zhengjiajia/lock.h /database/panweidb/app/include/postgresql/server/storage/lock
mv /home/zhengjiajia/lwlock.h /database/panweidb/app/include/postgresql/server/storage/lock
mv /home/zhengjiajia/lwlock_be.h /database/panweidb/app/include/postgresql/server/storage/lock
mv /home/zhengjiajia/pg_sema.h /database/panweidb/app/include/postgresql/server/storage/lock
mv /home/zhengjiajia/s_lock.h /database/panweidb/app/include/postgresql/server/storage/lock
2、编辑configure文件,修改openGauss为PanWeiDB
cd $GAUSSHOME/postgis-xc/postgis-2.4.2
vim configure
把if test "$PGXS_ALIAS" = "openGauss"; then 这行的openGauss替换为PanWeiDB
· PostGIS
cd $GAUSSHOME/postgis-xc/postgis-2.4.2
chmod +x ./configure
./configure --prefix=$GAUSSHOME/install/postgis2.4.2 --with-pgconfig=$GAUSSHOME/bin/pg_config --with-projdir=$GAUSSHOME/install/proj --with-geosconfig=$GAUSSHOME/install/geos/bin/geos-config --with-jsondir=$GAUSSHOME/install/json --with-xml2config=$GAUSSHOME/install/libxml2/bin/xml2-config --without-raster --without-topology CFLAGS='-O2 -fpermissive -DPGXC -pthread -D_THREAD_SAFE -D__STDC_FORMAT_MACROS -DMEMORY_CONTEXT_CHECKING -w' CC=g++
make -sj
make install -sj
【备注】如果编译出现类似 /home/carrot/data/openGauss-server/third_party/buildtools/gcc/res/lib64/libstdc++.la 找不到,可以自建目录,将libstdc++.la拷贝进去,然后再make -sj(如果libstdc++.so出现类似问题,按同样方法处理)。
在进行configure操作前需按照如下截图进行修改配置,其次需要将lock文件上传到对应的路径下,即将lock包里所有的文件上传到路径为 /database/panweidb/app/include/postgresql/server/storage/lock 中,并修改权限;
5) omm用户执行下面的语句,完成 PostGIS 相关动态链接库在数据库实例节点中的分发
mv $GAUSSHOME/lib/postgresql/postgis-2.4.so $GAUSSHOME/install/postgis-2.4.so
cp $GAUSSHOME/install/postgis-2.4.so $GAUSSHOME/lib/postgresql/postgis-2.4.so
cp $GAUSSHOME/install/json/lib/libjson-c.so.2 $GAUSSHOME/lib/libjson-c.so.2
cp $GAUSSHOME/install/geos/lib/libgeos_c.so.1 $GAUSSHOME/lib/libgeos_c.so.1
cp $GAUSSHOME/install/proj/lib/libproj.so.9 $GAUSSHOME/lib/libproj.so.9
cp $GAUSSHOME/install/geos/lib/libgeos-3.6.2.so $GAUSSHOME/lib/libgeos-3.6.2.so
cp $GAUSSHOME/install/postgis2.4.2/lib/liblwgeom-2.4.so.0 $GAUSSHOME/lib/liblwgeom-2.4.so.0
cp $GAUSSHOME/postgis-xc/postgis-2.4.2/postgis--2.4.2.sql $GAUSSHOME/share/postgresql/extension/postgis--2.4.2.sql
cp $GAUSSHOME/postgis-xc/postgis-2.4.2/postgis.control $GAUSSHOME/share/postgresql/extension/postgis.control
cp $GAUSSHOME/bin/pgsql2shp $GAUSSHOME/bin/pgsql2shp
cp $GAUSSHOME/bin/shp2pgsql $GAUSSHOME/bin/shp2pgsql
【备注】
动态链接库分发脚本执行完毕后,可执行下列命令删除 $GAUSSHOME/postgis 安装目录。
rm -rf $GAUSSHOME/postgis-xc
若用户不想保留GCC5.4编译器,可删除GCC5.4安装目录并在~/.bashrc文件中删除安装GCC5.4时添加的环境配置信息。
rm -rf $GAUSSHOME/gcc
6)重启数据库实例
gs_om -t stop && gs_om -t= start
7)主节点把10个文件传至从节点
例:上传至从节点/home/zhengjiajia目录后传至对应目录并授权即可
cp /home/zhengjiajia/postgis-2.4.so /database/panweidb/app/lib/postgresql/postgis-2.4.so
cp /home/zhengjiajia/libjson-c.so.2 /database/panweidb/app/lib/libjson-c.so.2
cp /home/zhengjiajia/libgeos_c.so.1 /database/panweidb/app/lib/libgeos_c.so.1
cp /home/zhengjiajia/libproj.so.9 /database/panweidb/app/lib/libproj.so.9
cp /home/zhengjiajia/libgeos-3.6.2.so /database/panweidb/app/lib/libgeos-3.6.2.so
cp /home/zhengjiajia/liblwgeom-2.4.so.0 /database/panweidb/app/lib/liblwgeom-2.4.so.0
cp /home/zhengjiajia/postgis--2.4.2.sql /database/panweidb/app/share/postgresql/extension/postgis--2.4.2.sql
cp /home/zhengjiajia/postgis.control /database/panweidb/app/share/postgresql/extension/postgis.control
cp /home/zhengjiajia/pgsql2shp /database/panweidb/app/bin/pgsql2shp
cp /home/zhengjiajia/shp2pgsql /database/panweidb/app/bin/shp2pgsql
chown -R omm:dbgrp /database/panweidb
chmod -R 755 /database/panweidb
8)登录对应业务库创建postgis并核查
gsql -d postgres -p 17700
CREATE EXTENSION postgis;
select * from pg_extension;
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




