Centos7 安装Postgresql10.5和PostGIS

Centos7 安装Postgres10.5和PostGIS

又安装了一次Postgresql,每次安装总会出一些莫名其妙的问题,这次给记录下来

  • 系统:Centos7.4

安装Postgres10.5

1.首先安装PostgreSQL的rpm

yum install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-2.noarch.rpm -y  

查看postgresql源

yum list | grep postgresql

这里写图片描述

安装postgresql10-contrib和postgresql10-server。

yum install postgresql10-contrib postgresql10-server -y

这样会给我们的系统增加一个postgres用户

2.修改默认数据目录
Postgresql默认的数据目录是/var/lib/pgsql/版本号/data目录,这要求你在/var下有足够的存储空间,我们这里将其换掉,假设/home的空间很大。

首先在/home下创建一个Postgresql的数据目录,指定所有者postgres同时分配权限

mkdir /home/postgresql_data
chown postgres:postgres /home/postgresql_data
chmod 750 /home/postgresql_data

设置环境变量

export PATH=/usr/pgsql-10/bin:$PATH
export LD_LIBRARY_PATH=/usr/pgsql-10/lib
export PGDATA=/home/postgresql_data

切换到postgres用户,使用initdb初始化数据库,这样在/home/postgresql_data下会增加很多东西,
这里写图片描述

修改/usr/lib/systemd/system/postgresql-10.service文件的内容,在#Location of database direcotry里面指定正确的PGDATA:

#Location of database directory
Environment=PGDATA=/home/postgresql_data

3.配置数据库服务开机启动并立即启动数据库服务

systemctl enable postgresql-10.service
service postgresql-10 start
service postgresql-10 status

检查数据库状态,有绿色,没红色说明启动完成
这里写图片描述

这个过程中出现过一个错误,启动失败:
这里写图片描述
我这边将/home/postgresql_data下的postmaster.pid删除再重启服务就好了

4.修改密码
分为postgres用户密码和数据库密码,保持一致吧

passwd postgres

这里写图片描述

设置数据库密码:

su postgres
psql
ALTER USER postgres WITH PASSWORD '密码';

\l 列出当前库:
这里写图片描述

安装PostGIS

1.先安装几个工具包

yum  install wget net-tools epel-release -y

然后安装postgis

yum install postgis24_10 postgis24_10-client -y

安装拓展工具

yum install ogr_fdw10 -y
yum install pgrouting_10 -y

2.创建数据库spatial_testdb

CREATE DATABASE spatial_testdb OWNER postgres;

进入

\c spatial_testdb

安装PostGis扩展

spatial_testdb=# CREATE EXTENSION postgis;
spatial_testdb=# CREATE EXTENSION postgis_topology;
spatial_testdb=# CREATE EXTENSION ogr_fdw;

然后可以验证是否安装成功

SELECT postgis_full_version();

这里写图片描述

3.创建空间数据表
存储城市信息(cities),并添加一个存储空间位置的列

spatial_testdb=# CREATE TABLE cities(id varchar(20),name varchar(50));
spatial_testdb=# SELECT AddGeometryColumn ('cities', 'the_geom', 4326, 'POINT', 2);

之后插入数据

spatial_testdb=# INSERT INTO cities(id, the_geom, name) VALUES (1,ST_GeomFromText('POINT(-0.1257 51.508)',4326),'London, England');
spatial_testdb=# INSERT INTO cities (id, the_geom, name) VALUES (2,ST_GeomFromText('POINT(-81.233 42.983)',4326),'London, Ontario');
spatial_testdb=# INSERT INTO cities (id, the_geom, name) VALUES (3,ST_GeomFromText('POINT(27.91162491 -33.01529)',4326),'East London,SA');

4.查询

spatial_testdb=# SELECT * FROM cities;
spatial_testdb=# SELECT id, ST_AsText(the_geom), ST_AsEwkt(the_geom), ST_X(the_geom), ST_Y(the_geom) FROM cities;

这里写图片描述

这里写图片描述

空间查询城市相互距离
这里写图片描述

设置远程连接

1.修改配置文件
首先修改/home/postgresql_data/pg_hba.conf,改为:
这里写图片描述
其次修改/home/postgresql_data/postgresql.conf,改为:
这里写图片描述

之后重启服务

service postgresql-10 restart

!!!重要:开启服务器防火墙

firewall-cmd --add-service=postgresql --permanent  开放postgresql服务
firewall-cmd --reload  重载防火墙

2.远程连接
这里使用pgAdmin进行远程连接,下载地址:https://www.pgadmin.org/download/pgadmin-4-windows/。选择创建服务器,填入相应内容,主机名称填自己服务器的IP
这里写图片描述

之后就能够看到数据库内容了。

参考:

原文链接:加载失败,请重新获取