该套环境是用来适配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官方说明。
yum -y install zlib-devel readline-devel
以root用户执行以下命令
# 创建 postgres 用户
adduser postgres
# 给 postgres 用户设置密码
passwd postgres
下载地址: https://ftp.postgresql.org/pub/source/v12.2/postgresql-12.2.tar.gz
# 切换为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
如果需要在任意环境下都能使用 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
初始化数据库目录(单实例)
若配置好PG的bin目录为环境变量后,直接针对目标数据库执行以下命令
(令数据库目录为 /home/postgres/data)
initdb -D /home/postgres/data
若有调整WAL日志大小的需求(主要用于归档、主从配置的优化,一旦initdb初始化指定后,不可修改),则可以执行以下命令(非必要),–wal-segsize的单位为MB
initdb -D /data/pgdata --wal-segsize=128
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
vi /home/postgres/data/postgresql.conf
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 # 查看状态
# 切换到postgres用户
su - postgres
# 直接用postgres超级用户登录,默认不需要密码,psql直接回车就以postgres用户进入了postgres数据库
psql -U postgres
# 修改超级用户密码为:postgres
alter role postgres with pass 'postgres';
# 退出
\q
注意: 先安装gcc 、gcc-c++,其他组件的依赖其进行编译安装.
yum install -y gcc gcc-c++
版本查看
gcc --version
g++ --version
下载地址: 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
注意: proj6.3.2依赖于sqlite3,且sqlite3的版本要 ≥ 3.11,系统yum安装的sqlite3版版是3.7的,所以要对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
下载地址: 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
说明: protobuf-c依赖protobuf,所以先安装protobuf。
下载地址: 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
下载地址: 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
下载地址: 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
说明: 由于PostGIS对应的版本比较新,因此CentOS 7默认的CMake版本不足,需要编译安装新版本的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
cmake --version
说明: 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
下载地址: 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
下载地址: 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
gdal-config --version
下载地址: 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
下载地址: 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';