Postgresql 12.2 + PostGIS 3.0.1 安装部署

环境说明

该套环境是用来适配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无误后,执行编译安装
make
make install

5.环境变量配置

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

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

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

source /etc/profile
source /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 server
After=network.target
[Service]
Type=forking
User=postgres
Group=postgres
Environment=PGPORT=5432
Environment=PGDATA=/home/postgres/data
OOMScoreAdjust=-1000
ExecStart=/home/postgres/bin/pg_ctl start -D ${PGDATA} -s -o "-p ${PGPORT}" -w -t 300
ExecStop=/home/postgres/bin/pg_ctl stop -D ${PGDATA} -s -m fast
ExecReload=/home/postgres/bin/pg_ctl reload -D ${PGDATA} -s
TimeoutSec=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
# 修改超级用户密码为:postgres
alter role postgres with pass 'postgres';
# 退出
\q

10.远程连接测试

通过 Navicat 连接访问
在这里插入图片描述
成功连接如下
在这里插入图片描述

PostGIS 3.0.1 安装

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

yum install -y gcc gcc-c++

版本查看

gcc --version
g++ --version

1.GEOS 编译安装

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

1.安装命令

tar -jxvf geos-3.8.0.tar.bz2
cd geos-3.8.0
./configure
make
make 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.gz
cd sqlite-autoconf-3320200/ 
./configure --prefix=/usr/local/sqlite
make
make install

3.环境配置

vi /etc/profile
# 在最后面追加以下内容
export SQLITE3=/usr/local/sqlite
export PATH=$SQLITE3/bin:$PATH
export 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.gz
cd proj-6.3.1
./configure
make
make 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.gz
cd protobuf-3.15.3
./configure
make
make install

安装成功如下:
在这里插入图片描述

2.环境配置

vi /etc/profile
# 最后面追加以下内容
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
export 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.gz
cd protobuf-c-1.3.3
./configure
make
make 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.gz
cd json-c-json-c-0.13.1-20180305/
./configure
make
make 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.gz
cd cmake-3.16.8
./bootstrap
gmake
make 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.xz
cd CGAL-4.14.3
mkdir build && cd build
cmake ..
make
make 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.gz
cd SFCGAL-1.3.7  
mkdir build && cd build
cmake .. 
make
make install

安装成功如下:
在这里插入图片描述
安装完成后,需要配置软链接到libSFCGAL.so,防止后续gdal安装找不到

ln -s /usr/local/lib64/libSFCGAL.so /usr/local/lib/libSFCGAL.so
ln -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 
./configure
make
make 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 
make
make 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.gz
cd postgis-3.0.1
./configure --with-pgconfig=/home/postgres/bin/pg_config
make
make 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';

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_41166785/article/details/127674169