虚拟化容器,大数据,DBA,中间件,监控。

Linux安装postgreSQL12.1与postGIS3

27 11月
作者:admin|分类:应用管理

1.1 安装PostgreSQL

1.1.1 升级gcc

下载较新的gcc压缩文件并解压:

[root@ ~]# wget -c http://mirror.koddos.net/gcc/releases/gcc-9.2.0/gcc-9.2.0.tar.xz
[root@ ~]# tar xvf gcc-9.2.0.tar.xz

下载并安装gcc依赖:

[root@ ~]# cd gcc-9.2.0
[root@ gcc-9.2.0]# ./contrib/download_prerequisites

安装gcc,通过--prefix指定安装路径:

[root@ gcc-9.2.0]# ./configure --prefix=/usr/local/gcc-9.2.0 --enable-checking=release --enable-languages=c,c++ --disable-multilib 
#服务器如果核数较多可以使用并行编译,比如有2核 
# make -j 4
#-j后的并行数量应等于核数的2倍,不要太多。
[root@ gcc-9.2.0]# make -j 4
[root@ gcc-9.2.0]# make install

配置环境变量:

[root@ gcc-9.2.0]# vi /etc/profile
#将gcc加入path,注意path里有其他bin不要改,在后面追加,以免影响其他系统
export GCC_HOME=/usr/local/gcc-9.2.0
export PATH=$GDAL_HOME/bin:$GCC_HOME/bin:$PATH
# :wq! 保存退出

#重启生效:
[root@ gcc-9.2.0]# source /etc/profile

验证gcc安装:

[root@ ~]# gcc --version
gcc (GCC) 9.2.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

移除操作系统自带的低版本的yum安装的gcc,如果安装过将会卸载:

[root@ ~]# yum remove gcc

更新系统库依赖,避免编译时发生glibcxx_x.x.xxx not found等lib包因版本差异导致的错误:

#先全局查询libstdc++.so.6包所在位置
[root@ ~]# find / -name libstdc++.so.6
/usr/lib64/libstdc++.so.6
/usr/lib/libstdc++.so.6
/usr/local/gcc-9.2.0/lib64/libstdc++.so.6
#其中/usr/local是我们刚刚安装的,/lib与/lib64我们不清楚是不是残留,所以必须用新的直接替换即可。
[root@ ~]# cp /usr/local/gcc-9.2.0/lib64/libstdc++.so.6 /usr/lib
[root@ ~]# cp /usr/local/gcc-9.2.0/lib64/libstdc++.so.6 /usr/lib64

1.1.2 其他依赖安装

[root@ ~]#  yum install -y vim-enhanced.x86_64 gcc-java apr apr-devel openssl openssl-devel java-1.8.0-openjdk.x86_64 java-1.8.0-openjdk-devel.x86_64 perl-Module-Install.noarch readline-devel.x86_64

为了能在数据库中使用uuid,先要安装下uuid的库,(PostgreSQL13版本自带uuid,不需要安装这个):

# 下载uuid-1.6.2.tar.gz然后拷贝到安装服务器上。由于官方链接太烂,根本点不开,先暂时在百度网盘分享个资源:
[uuid-1.6.2.tar.gz](https://pan.baidu.com/s/1NSHU8WrczfGDDsxYhEcAQQ)

[root@ ~]#  tar -zxvf uuid-1.6.2.tar.gz
[root@ ~]#  cd uuid-1.6.2
[root@ ~]#  ./configure
[root@ ~]#  make
[root@ ~]#  make install

1.1.3 新建用户

[root@ ~]# useradd postgres

1.1.4 PG12源码编译安装

[root@ ~]# wget https://ftp.postgresql.org/pub/source/v12.1/postgresql-12.1.tar.gz
[root@ ~]# tar -zxvf postgresql-12.1.tar.gz
[root@ ~]# cd postgresql-12.1
[root@ postgresql-12.1]# ./configure --prefix=/home/postgres --enable-thread-safety --with-uuid=ossp --with-libs=/usr/local/lib --with-includes=/usr/local/include
[root@ postgresql-12.1]# make -j 4
[root@ postgresql-12.1]# make install
# 安装contrib工具包
[root@ postgresql-12.1]# cd contrib
[root@ contrib]# make
[root@ contrib]# make install

1.1.5 文件权限

#把程序安装目录全部赋权给postgres用户
[root@ contrib]# chown -R postgres.postgres /home/postgres/

1.1.6 配置环境变量

[root@ contrib]# su - postgres
[postgres@ ~]$ vi .bashrc
#编辑内容如下:
PGHOME=/home/postgres
export PGHOME
PGDATA=$PGHOME/data
export PGDATA
PATH=$PATH:$HOME/.local/bin:$HOME/bin:$PGHOME/bin
export PATH
# wq! 保存退出

#重启生效
[postgres@ ~]$ source .bashrc

1.1.7 初始化数据库与启动

[postgres@ ~]$ initdb -D $PGDATA
[postgres@ ~]$ pg_ctl start -D $PGDATA
#登录数据库
[postgres@ ~]$ psql
psql (12.1)
Type "help" for help.

postgres=#

到此为止,数据库已经完成安装,但只能本机连接,性能参数配置是默认的。有时候希望其他客户端也能连接,需要设置$PGDATA中的pg_hba.conf与postgresql.conf中相关参数,这些内容可以详细查看其他PG相关的博客和书籍。


2 安装PostGIS

本文安装PostGIS 3.0,3.0依赖的库有geos,proj,gdal,libxml,json-c,protobuf,如何要支持三维需安装sfcgal,如果要做路网分析需安装pgrouting。

2.1 安装geos

[root@ ~]# wget https://download.osgeo.org/geos/geos-3.8.0.tar.bz2
[root@ ~]# tar -jxvf geos-3.8.0.tar.bz2     
[root@ ~]# cd geos-3.8.0   
#指定目录安装
[root@ geos-3.8.0]# ./configure --prefix=/usr/local/geos-3.8.0
[root@ geos-3.8.0]# make -j 4
[root@ geos-3.8.0]# make install

2.2 安装proj

[root@ ~]# wget http://download.osgeo.org/proj/proj-6.2.1.tar.gz    
[root@ ~]# tar -zxvf proj-6.2.1.tar.gz    
[root@ ~]# cd proj-6.2.1  
#指定目录安装
[root@ proj-6.2.1]# ./configure  --prefix=/usr/local/proj-6.2.1
[root@ proj-6.2.1]# make -j 4    
[root@ proj-6.2.1]# make install

2.3 安装gdal

[root@ ~]# wget https://download.osgeo.org/gdal/3.0.2/gdal-3.0.2.tar.gz
[root@ ~]# tar -zxvf gdal-3.0.2.tar.gz 
[root@ ~]# cd gdal-3.0.2    
#编译时间比较久,指定目录安装,且绑定已安装的pg
[root@  gdal-3.0.2]# ./configure  --prefix=/usr/local/gdal-3.0.2 --with-pg=/home/postgres/bin/pg_config    
[root@  gdal-3.0.2]# make -j 4
[root@  gdal-3.0.2]# make install

2.4 安装jsonc,libxml

[root@ ~]# wget https://github.com/json-c/json-c/archive/json-c-0.13.1-20180305.tar.gz
[root@ ~]# tar -zxvf json-c-0.13.1-20180305.tar.gz    
[root@ ~]# cd json-c-0.13.1-20180305    
[root@ json-c-0.13.1-20180305]# ./configure  --prefix=/usr/local/json-c-0.13.1
[root@ json-c-0.13.1-20180305]# make -j 4
[root@ json-c-0.13.1-20180305]# make install   

[root@ ~]# wget https://github.com/GNOME/libxml2/archive/v2.9.7.tar.gz
[root@ ~]# tar -zxvf libxml2-sources-2.9.7.tar.gz    
[root@ ~]# cd libxml2-2.9.7   
[root@ libxml2-2.9.7]# ./configure  --prefix=/usr/local/libxml2-2.9.7
[root@ libxml22.5-2.9.7]# make -j 4
[root@ libxml2-2.9.7]# make install

2.5 安装protobuf,protobuf-c

[root@ ~]#  wget https://github.com/protocolbuffers/protobuf/archive/v3.10.1.tar.gz
[root@ ~]# tar -zxvf protobuf-3.10.1.tar.gz    
[root@ ~]# cd protobuf-3.10.1  
[root@ protobuf-3.10.1]# ./configure  --prefix=/usr/local/protobuf-3.10.1
[root@ protobuf-3.10.1]# make -j 4    
[root@ protobuf-3.10.1]# make install   
#配置环境变量,增加下protobuf-3.10.1/bin
[root@ ~]# vi /etc/profile
export PROTOBUF_HOME=/usr/local/protobuf-3.10.1
export PATH=$GCC_HOME/bin:$PROTOBUF_HOME/bin:$PATH
#保存退出
[root@ ~]# source /etc/profile
#验证protobuf执行程序
[root@ ~]# protoc --version
libprotoc 3.10.1
#protobuf安装成功

[root@ ~]# wget https://github.com/protobuf-c/protobuf-c/releases/download/v1.3.2/protobuf-c-1.3.2.tar.gz
[root@ ~]# tar -zxvf protobuf-c-1.3.2.tar.gz    
[root@ ~]# cd protobuf-c-1.3.2  
#导入protobuf的pkgconfig,否则"--No package 'protobuf' found"
[root@ protobuf-c-1.3.2]# export PKG_CONFIG_PATH=/usr/local/protobuf-3.10.1/lib/pkgconfig
[root@ protobuf-c-1.3.2]# ./configure  --prefix=/usr/local/protobuf-c-1.3.2
[root@ protobuf-c-1.3.2]# make -j 4
[root@ protobuf-c-1.3.2]# make install   

#配置环境变量,增加下protobuf-c-1.3.2/bin
[root@ ~]# vi /etc/profile
export PROTOBUF_HOME=/usr/local/protobuf-3.10.1
export PROTOBUFC_HOME=/usr/local/protobuf-c-1.3.2
export PATH=$GCC_HOME/bin:$PROTOBUF_HOME/bin:$PROTOBUFC_HOME/bin:$PATH
#保存退出
[root@ ~]# source /etc/profile

2.6 安装sfcgal(三维,可选)

sfcgal需要cmkae编译,需先安装下cmake:

[root@ ~]# wget https://github.com/Kitware/CMake/releases/download/v3.16.2/cmake-3.16.2.tar.gz
[root@ ~]# tar -zxvf cmake-3.16.2.tar.gz
[root@ ~]# cd cmake-3.16.2
[root@ cmake-3.16.2]# ./configure --prefix=/usr/local/cmake-3.16.2
[root@ cmake-3.16.2]# make -j 4
[root@ cmake-3.16.2]# make install

#配置环境变量
[root@ ~]# vi /etc/profile
export CMAKE_HOME=cmake-3.16.2
export PATH=$GCC_HOME/bin:$CMAKE_HOME/bin:$PROTOBUF_HOME/bin:$PROTOBUFC_HOME/bin:$PATH
#保存退出
[root@ ~]# source /etc/profile

sfcgal依赖boost,cgal,需要提前编译,编译默认目录,避免编译sfcgal时各种找不到库的问题。

[root@ ~]# yum install boost-devel
[root@ ~]# wget https://github.com/CGAL/cgal/archive/releases/CGAL-4.13.tar.gz
[root@ ~]# tar -zxvf CGAL-4.13.tar.gz   
[root@ ~]# cd CGAL-4.13  
[root@ CGAL-4.13]# mkdir build && cd build 
#cmake不要指定安装路径
[root@ build]# cmake ..
[root@ build]# make    
[root@ build]# make install

编译sfcgal:

[root@ ~]# wget https://github.com/Oslandia/SFCGAL/archive/v1.3.7.tar.gz
[root@ ~]# tar -zxvf v1.3.7.tar.gz   
[root@ ~]# cd SFCGAL-1.3.7  
[root@ SFCGAL-1.3.7]# mkdir build && cd build 
[root@ build]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/sfcgal-1.3.7 ..
[root@ build]# make -j 4    
[root@ build]# make install

pgrouting可以单独安装,在之后文章里会单独介绍。

2.7 安装PostGIS

配置ld.so.conf:

[root@ ~]# vim /etc/ld.so.conf
#编辑内容如下
include ld.so.conf.d/*.conf
/home/postgres/lib
/usr/local/proj-6.2.1/lib
/usr/local/gdal-3.0.2/lib
/usr/local/geos-3.8.0/lib
/usr/local//sfcgal-1.3.7/lib64
/usr/local/json-c-0.13.1/lib
/usr/local/libxml2-2.9.7/lib
/usr/local/protobuf-3.10.1/lib
/usr/local/protobuf-c-1.3.2/lib
#编辑完成后wq!保存退出
#保存配置,重启生效
[root@ ~]# ldconfig -v

安装postgis:

[root@ ~]# wget http://download.osgeo.org/postgis/source/postgis-3.0.0.tar.gz    
[root@ ~]# tar -zxvf postgis-3.0.0.tar.gz    
[root@ ~]# cd postgis-3.0.0 
#根据安装不同的要求,选择任意一个configure
#基本安装,不带sfcgal
[root@ postgis-3.0.0]# ./configure --prefix=/home/postgres --with-gdalconfig=/usr/local/gdal-3.0.2/bin/gdal-config --with-pgconfig=/home/postgres/bin/pg_config --with-geosconfig=/usr/local/geos-3.8.0/bin/geos-config --with-projdir=/usr/local/proj-6.2.1 --with-xml2config=/usr/local/libxml2-2.9.7/bin/xml2-config --with-jsondir=/usr/local/json-c-0.13.1 --with-protobufdir=/usr/local/protobuf-c-1.3.2
# 带protobuf,sfcgal安装
[root@ postgis-3.0.0]# ./configure --prefix=/home/postgres --with-gdalconfig=/usr/local/gdal-3.0.2/bin/gdal-config --with-pgconfig=/home/postgres/bin/pg_config --with-geosconfig=/usr/local/geos-3.8.0/bin/geos-config --with-projdir=/usr/local/proj-6.2.1 --with-xml2config=/usr/local/libxml2-2.9.7/bin/xml2-config --with-jsondir=/usr/local/json-c-0.13.1 --with-protobufdir=/usr/local/protobuf-c-1.3.2 --with-sfcgal=/usr/local/sfcgal-1.3.7/bin/sfcgal-config

[root@ postgis-3.0.0]# make -j 4
[root@ postgis-3.0.0]# make install

可能报错什么can not found lsqlite3等错误:

yum install sqlite-devel

验证安装:

[root@ ~]# su - postgres
[postgres@ ~]$ psql
psql (12.1)
Type "help" for help.

postgres=# create database mytest;
CREATE DATABASE
postgres=# \c mytest
You are now connected to database "mytest" as user "postgres".
#验证postgis扩展
mytest=# create extension postgis;
CREATE EXTENSION
#验证栅格类数据需要的raster扩展
mytest=# create extension postgis_raster;
CREATE EXTENSION
#如果安装带有sfcgal,验证下三维sfcgal扩展
mytest=# create extension postgis_sfcgal;
CREATE EXTENSION

如果一切顺利,安装结束。

编辑于 08-24


浏览856 评论0
返回
目录
返回
首页
TeaWeb – 可视化的Web代理服务 Centos安装MySQL-Cluster集群