CentOS7.6安装Postgresq11和PostGIS
由于在CentOS7.6下使用《CentOS7.5安装Postgresql10.5和PostGIS》安装PostGIS时候会报错,下面安利一个 CentOS7.6安装Postgresq11和PostGIS。
- 系统:Centos7.6
一、安装Postgres11
1.首先安装PostgreSQL的rpm
yum install https://download.postgresql.org/pub/repos/yum/11/redhat/rhel-7-ppc64le/pgdg-centos11-11-2.noarch.rpm -y
查看postgresql源
yum list | grep postgresql
安装postgresql11
yum install postgresql11-server postgresql11-contrib -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-11/bin:$PATH
export LD_LIBRARY_PATH=/usr/pgsql-11/lib
export PGDATA=/home/postgresql_data
切换到postgres用户,使用initdb初始化数据库,这样在/home/postgresql_data下会增加很多东西
在root用户下授权读写权限
chmod 777 /usr/lib/systemd/system/postgresql-11.service
修改/usr/lib/systemd/system/postgresql-11.service文件的内容,在#Location of database direcotry里面指定正确的PGDATA:
#Location of database directory
Environment=PGDATA=/home/postgresql_data
3.在root用户下配置数据库服务开机启动并立即启动数据库服务
systemctl enable postgresql-11.service
service postgresql-11 start
service postgresql-11 status
检查数据库状态,有绿色,没红色说明启动完成
这个过程中出现过一个错误,启动失败:
我这边将/home/postgresql_data下的postmaster.pid删除再重启服务就好了
4.修改密码
分为postgres用户密码和数据库密码,保持一致吧
passwd postgres
设置数据库密码:
su postgres
psql
ALTER USER postgres WITH PASSWORD '密码';
二、安装PostGIS
1.先安装几个工具包
yum install wget net-tools epel-release -y
然后安装postgis
yum install postgis25_11 postgis25_11-client -y
安装拓展工具
yum install ogr_fdw11 -y
yum install pgrouting_11 -y
2.创建数据库osm_db
CREATE DATABASE osm_db OWNER postgres;
进入数据库
\c osm_db
安装PostGis扩展
CREATE EXTENSION postgis;
CREATE EXTENSION postgis_topology;
CREATE EXTENSION ogr_fdw;
然后可以验证是否安装成功
SELECT postgis_full_version();
设置远程连接
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 重载防火墙