在PostgreSQL中安装设置PostGIS

经过多种尝试的结果,我们推荐使用PostGIS 2或3,以及CentOS 7和PostgreSQL 12。由于兼容性的考虑,应避免使用Amazon Linux和Amazon Linux 2。本文主要介绍CentOS 7,但也适用于CentOS 8。如果您的现有环境已经安装了gdal、geos和proj,请参考错误处理步骤。

操作系統已經準備就緒。

使用CentOS 7 (x86_64) – with Updates HVM的最新版本。

如果要在AWS上使用CentOS 7,请选择[Continue to Subscribe] -> [Continue to Configuration],然后在选择操作中选择[Launch through EC2]来创建实例。
当前的最新软件版本是2002_01 (Mar 16,2020)。
我建议选择已应用最新安全补丁的版本。

一旦启动实例后,则可使用.pem文件进行登录。
初始用户将不是ec2-user,而是centos。
$ ssh centos@[IPv4公有IP] -i [.pem文件路径]

软件安装

请在首次登录后将yum更新到最新版本。

sudo su
yum update -y

PostgreSQL 12 -> PostgreSQL 12 版本

安装RPM软件库

// CentOS 8
sudo yum -y install https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm

// CentOS 7
sudo yum -y install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

安装基体

// PostgreSQL 12 on CentOS 8
sudo dnf -qy module disable postgresql
sudo dnf -y install postgresql12 postgresql12-server

// PostgreSQL 12 on CentOS 7
sudo yum -y install epel-release yum-utils
sudo yum-config-manager --enable pgdg12
sudo yum install postgresql12-server postgresql12

在CentOS7上进行PostgreSQL12的初始设置。

初始化

sudo /usr/pgsql-12/bin/postgresql-12-setup initdb
sudo systemctl enable --now postgresql-12
systemctl status postgresql-12

↑ 状态应该是Active: 正在运行。

为postgres用户设置密码

sudo su - postgres 
psql -c "ALTER USER postgres with password 'YourPassword'"

登录控制

sudo vi /var/lib/pgsql/12/data/pg_hba.conf

如果要在本地主机访问时进行密码认证(MD5),请编辑以下内容。

local   all             all                                     peer
↓
local   all             all                                     md5

在重新启动后,可以使用postgres用户登录。

sudo systemctl restart postgresql-12
psql -U postgres
\q

PostGIS 地理信息系统

sudo yum -y install epel-release

// PostGIS 2 on PostgreSQL 12
sudo yum install postgis25_12

// PostGIS 3 on PostgreSQL 12
sudo yum install postgis30_12

启用PostGIS

需要在数据库级别上启用PostGIS。

psql -U postgres
# CREATE USER test_user;
# CREATE DATABASE test_db OWNER test_user;
# ALTER USER test_user with password 'Test';
\q

使用超级用户postgres登录到创建的test_db。

psql -U postgres -d test_db

启用PostGIS

# CREATE EXTENSION postgis;
# SELECT PostGIS_version();

        postgis_version            
---------------------------------------
 3.0 USE_GEOS=1 USE_PROJ=1 USE_STATS=1
(1 行)

错误处理

在PostGIS中,需要安装gcc、libxml2、gdal、geos和proj等软件包,但是如果单独安装会有兼容性问题,执行CREATE EXTENSION postgis命令时会出错。

建议使用pgdg-common存储库中的gdal,geos和proj。
※ 使用sudo yum install postgis30_12命令将安装gdal30-libs,geos38和proj70。

广告
将在 10 秒后关闭
bannerAds