CentOS 7源码安装PostGIS

本文涉及的产品
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
简介: 本文认为已安装PostgreSQL9.6,安装步骤如 Centos7安装PostgreSQL9.6。注意,作者将Pg9.6直接安装到了postgres用户下如下图:Postgresql数据库安装全目录下文其他依赖编译到pg的目录下最好,自行对照自己的修改下。

本文认为已安装PostgreSQL9.6,安装步骤如 Centos7安装PostgreSQL9.6
注意,作者将Pg9.6直接安装到了postgres用户下如下图:

img_c5cd1aae0602066a8374b669d359d360.png
Postgresql数据库安装全目录

下文其他依赖编译到pg的目录下最好,自行对照自己的修改下。
从源码安装,需要安装/编译 GEOS, Proj.4, GDAL, LibXML2JSON-C,所以一步步安装。

一 编译GEOS

$ cd ~    
$ wget http://download.osgeo.org/geos/geos-3.5.0.tar.bz2    
$ tar -jxvf geos-3.5.0.tar.bz2     
$ cd geos-3.5.0    
$ ./configure --prefix=/home/postgres/geos    --安装到PostgreSQL的账户里
$ make -j 32    
$ make install    

作者在执行make -j 32时报错如下:

g++: command not found

于是直接yum先装上再说:

yum install gcc-c++

但是执行make -j 32时仍然报错,报错显示:

error:#error "Can not compile without isnan function or macro"
img_3c507ccb191553ddd1ec49517d84839f.png
报错截图.png

经过网友指点如下:

# 在geos解压的文件中,找到/include/config.h
# 编辑该文件,取消#undef HAVE_ISNAN的注释,保存退出
#然后重新配置geos如下:
$ ./configure --prefix=/home/postgres/geos
$ make -j 32     #等待编译完成时间蛮长的。
$ make install    #正常编译完成
img_e85c38f4dfcd6524ad6ec59b992c41bd.png
config.h文件目录位置

img_1521fe00272ed6f8beeea210973c3846.png
取消对HAVE_ISNAN的注释

二 编译Proj

$ cd ~    
$ wget http://download.osgeo.org/proj/proj-4.9.2.tar.gz    
$ tar -zxvf proj-4.9.2.tar.gz    
$ cd proj-4.9.2    
$ ./configure --prefix=/home/postgres/proj4    
$ make -j 32    
$ make install   

三 编译GDAL

$ cd ~    
$ wget http://download.osgeo.org/gdal/2.1.1/gdal-2.1.1.tar.gz    
$ tar -zxvf gdal-2.1.1.tar.gz    
$ cd gdal-2.1.1    
#以下编译安装要花很长时间,想死
$ ./configure --prefix=/home/postgres/gdal --with-pg=/home/postgres/bin/pg_config    
$ make -j 32    
$ make install    

四 LibXML2 json-c 等等

# yum install -y libtool libxml2 libxml2-devel libxslt libxslt-devel json-c json-c-devel cmake gmp gmp-devel mpfr mpfr-devel boost-devel pcre-devel

五 安装PostGIS

看PostGIS官网的描述很简单,直接就典型的make makeinstall编译安装,很简洁,但是实际安就装会发现很多依赖库根本找不到如下图某个could not find GDAL这样,即使明明安装了,也找不到。


img_3872516ec1326306c11dea0477a3480b.png
会报各种配置依赖找不到错误,典型的是gdal.png

这种问题一般都是链接库找不到,需要手动进行软连接等各种配置,正确配置后才能正确编译。

5.1 配置依赖库软连接

#编辑ld.so.conf文件。
[root@pg1 postgres]# vim /etc/ld.so.conf
#边界内容如下
/home/postgres/lib
/home/postgres/geos/lib
/home/postgres/proj4/lib
/home/postgres/gdal/lib
#编辑完成后wq!保存退出

[root@pg1 postgres]# ldconfig    #保存配置生效

5.2 配置Postgres用户环境变量

[root@pg1 postgres]#  su - postgres
[root@pg1 postgres]#  vim .bashrc
#原先这个用户环境变量配置了Postgres的东西,现在加进一些依赖进来
PGHOME=/home/postgres
export PGHOME
PGDATA=$PGHOME/data
export PGDATA

export LD_LIBRARY_PATH=/home/postgres/geos/lib:/home/postgres/proj4/lib:/home/postgres/gdal/lib::$PGHOME/lib:/lib64:/usr/lib64:/usr/local/lib64:/lib:/usr/lib:/usr/local/lib:$LD_LIBRARY_PATH
PATH=$PATH:$HOME/.local/bin:$HOME/bin:$PGHOME/bin
export PATH
#编辑完成wq!保存退出。

[root@pg1 postgres]# source .bashrc #重启配置生效

5.3 编译安装PostGIS

$ wget http://download.osgeo.org/postgis/source/postgis-2.3.0.tar.gz    
$ tar -zxvf postgis-2.3.0.tar.gz    
$ cd postgis-2.3.0 
$ ./configure --prefix=/home/postgres   
--with-gdalconfig=/home/postgres/gdal/bin/gdal-config   
--with-pgconfig=/home/postgres/bin/pg_config    
--with-geosconfig=/home/postgres/geos/bin/geos-config  
--with-projdir=/home/postgres/proj4    
$  make
$ make install

六 创建postgis扩展

[root@pg1 postgres]# psql Test
Test=# create extension postgis;
CREATE EXTENSION
#在测试数据库中创建扩展成功。
相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
8月前
|
应用服务中间件 Linux 网络安全
CentOS 7.4源码编译nginx1.12 并且隐藏nginx的版本
CentOS 7.4源码编译nginx1.12 并且隐藏nginx的版本
130 0
|
监控 PHP Apache
centos7.源码安装zabbix4.4
centos7.源码安装zabbix4.4
|
Linux Shell 开发工具
centos7源码包安装git傻瓜式安装步骤
centos7源码包安装git傻瓜式安装步骤
288 0
|
2月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。通过具体案例,读者可以了解如何准备环境、下载源码、编译安装、配置服务及登录 MySQL。编译源码安装虽然复杂,但提供了更高的定制性和灵活性,适用于需要高度定制的场景。
129 3
|
2月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。
本文介绍了在 CentOS 7 中通过编译源码安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。内容涵盖准备工作、下载源码、编译安装、配置服务、登录设置及实践心得,帮助读者根据需求选择最适合的安装方法。
127 2
|
2月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
186 2
|
3月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置服务等,并与使用 RPM 包安装进行了对比,帮助读者根据需求选择合适的方法。编译源码安装虽然复杂,但提供了更高的定制性和灵活性。
302 2
|
3月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤
【10月更文挑战第7天】本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据自身需求选择合适的方法。
75 3
|
3月前
|
安全 Linux 编译器
Centos 7.9如何使用源码编译安装curl最新版本
通过上述步骤,您就能在CentOS 7.9上成功地从源代码编译并安装curl的最新版本。这种方法不仅提供了灵活性,允许您定制编译选项,还确保了软件的最新功能和安全更新得到应用。
121 1
|
5月前
|
应用服务中间件 Linux 网络安全
2022年超详细在CentOS 7上安装Nginx方法(源码安装)
这篇文章提供了在CentOS 7系统上通过源码安装Nginx的详细步骤,包括从官网下载Nginx源码包、上传至虚拟机、解压、删除压缩包、编译安装前的配置、安装PCRE库(因为Nginx使用PCRE库解析正则表达式)、安装zlib和OpenSSL库(用于支持HTTPS协议)、重新编译Nginx、安装后启动Nginx服务、关闭服务、修改默认端口、以及重启服务测试等步骤。文章还提供了相关命令和操作截图,帮助用户更好地理解和执行安装过程。
2022年超详细在CentOS 7上安装Nginx方法(源码安装)