在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。