RedHat6安装PostgreSQL9.6及Postgis2.26

一、PostgreSQL rpm离线安装

1. 安装环境

RedHat 6.9/ 64位

2. 准备工作

下载RPM包

访问PostgreSQL网站,根据系统类别,系统版本选择相关的包:(这里针对Redhat6的链接,如果需要下载Redhat7的,那就修改链接中rhel6.x86_64rhel7.x86_64),点击以下下载链接:
https://yum.postgresql.org/9.6/redhat/rhel-6-x86_64/postgresql96-9.6.10-1PGDG.rhel6.x86_64.rpm
https://yum.postgresql.org/9.6/redhat/rhel-6-x86_64/postgresql96-contrib-9.6.10-1PGDG.rhel6.x86_64.rpm
https://yum.postgresql.org/9.6/redhat/rhel-6-x86_64/postgresql96-libs-9.6.10-1PGDG.rhel6.x86_64.rpm
https://yum.postgresql.org/9.6/redhat/rhel-6-x86_64/postgresql96-server-9.6.10-1PGDG.rhel6.x86_64.rpm

https://yum.postgresql.org/9.6/redhat/rhel-6-x86_64/postgresql96-devel-9.6.10-1PGDG.rhel6.x86_64.rpm

下载的文件:

postgresql96-9.6.10-1PGDG.rhel6.x86_64.rpm

postgresql96-contrib-9.6.10-1PGDG.rhel6.x86_64.rpm

postgresql96-libs-9.6.10-1PGDG.rhel6.x86_64.rpm

postgresql96-server-9.6.10-1PGDG.rhel6.x86_64.rpm

postgresql96-devel-9.6.10-1PGDG.rhel6.x86_64.rpm(我在安装postgis的时候提示错误:Please install the PostgreSQL server development packages and re-run configure,之后才下载的安装包安装)

3. 安装PG

将上述Postgres安装包放置在同一个文件夹中, 执行安装命令:

rpm -ivh postgresql96-*.rpm

通过RPM包安装, Postgres安装程序会在/var和/usr下创建文件夹.
/var/lib/pgsql: 用于存放Postgres数据库默认的数据文件夹
/usr/pgsql-9.6: 用于存放Postgres数据库的命令、依赖库及文档目录等信息
/var/lib/pgsql/9.6/data : 用户存放PG默认配置的pg_hba.conf,postgresql.conf配置文件。

安装完成查看pg版本:

postgres --version

4. 初始化数据库

配置好数据后(如果配置了自定义路径)数据库默认是未启动状态。 需要进行初始化。
CentOS 6/Redhat 6

service postgresql-9.6 initdb

 初始化数据库后,会默认在系统的目录里面初始化PG数据库
如果自定义了目录,会在/data/postgres里面初始化文件,并生成pg_hba.conf,postgresql.conf

默认情况:

/var/lib/pgsql: 用于存放Postgres数据库默认的数据文件夹
/usr/pgsql-9.6: 用于存放Postgres数据库的命令、依赖库及文档目录等信息
数据库只能本机访问,127.0.0.1 默认没有密码
/var/lib/pgsql/9.6/data : 用户存放PG默认配置的pg_hba.conf,postgresql.conf配置文件

5. 配置数据库远程访问

PG默认只能本机访问,但是实际情况中,应用服务器多单独部署,需要开通PG的远程访问权限,且是需要配置用户密码的。
需要修改postgres.conf, pg_hba.conf文件。
如果找不到文件在哪,使用 find命令搜索:

find / -name postgresql.conf

5.1 修改postgresql.conf

主要配置参数详解:

#listen_addresses='localhost'
listen_addresses='*'   --- 修改成'*'全部ip都可以访问改数据库。

5.2 修改pg_hba.conf

vi pg_hba.conf

找到如下内容:
·”local” is for Unix domain socket connections only
local   all             all                                     trust
IPv4 local connections:
host    all             all             127.0.0.1/32            trust

在“host    all             all             127.0.0.1/32            trust”其后添加下面的内容

host    all             all             0.0.0.0/0               md5    #-- 添加本行

6. 启动数据库

启动Postgres数据库

service postgresql-9.6 start
#Starting postgresql-9.6 service:                               [  OK  ]

7. 测试数据库

PG模式是不能用root用户访问数据库,使用时需要用su postgres 切换到postgres用户下。
使用psql命令进行测试。

psql命令详解:

-h host, 指定连接的Postgres数据库IP地址
-U username: 指定连接数据库的用户名
-d database: 指定连接的数据库名
-p port: 指定数据库连接的服务端口
-w: 表示不提示用户输入密码
-W : 表示验证数据库用户密码
-l : 表示列出Postgres可用的数据库信息

示例如下:

su - postgres    # -- root 切换到postgres
psql -h localhost -U postgres -d postgres -W
#Password for user postgres: 
#psql (9.6.10)
#Type "help" for help.
# 

使用默认脚本service postgresql initdb或/usr/pgsql-9.6/bin/postgresql96-setup initdb初始化数据库时,需要修改用户的密码。在修改Postgres用户密码时,需要确保以下条件:

配置”pg_hba.conf”时需要确定服务器本地址的验证方法为trust, 即:
host all all 127.0.0.1/32 trust
如果为peer|indent|md5方法时,需要将其修改为trust, 否则登录时会提醒输入用户密码。

修改默认的postgres用户密码

切换系统用户为postgres, 通过psql -h localhost -U postgres -d postgres登录Postgres数据库,进入数据后,使用SQL

alter user postgres with password 'newpassword'

来为用户修改默认密码。

示例如下:

su - postgres    # -- root 切换到postgres
psql -h localhost -U postgres -d postgres -w
postgres=#  alter user postgres with password 'newpassword';
#ALTER ROLE

8. PG开机自启动

postges默认不自动启动,使用以下命令打开。

chkconfig postgresql-9.6 on

9. Postgres日常服务管理

启动数据库:pg_ctl start -D /data/postgres
重启数据库: pg_ctl restart -D /data/postgres
停止数据库:pg_ctl stop -D /data/postgres
强制重启:pg_ctl restart -D /data/postgres -m f
强制停止:pg_ctl stop -D /data/postgres -m f
加载配置:pg_ctl reload -D /data/postgres
显示服务状态:pg_ctl status -D /data/postgres
连接数据库: psql -h 127.0.0.1 -U postgres -p 5432 -d postgres -W

 

二、Postgis离线安装

1 准备源码包

准备gdal、proj、geos和postgis的源码包,postgis版本注意和postgresql保持兼容。

Pg和Postgis的版本需要兼容,具体信息请看:http://trac.osgeo.org/postgis/wiki/UsersWikiPostgreSQLPostGIS

安装包可以使用以下链接进行下载:

http://download.osgeo.org/gdal/2.2.3/gdal-2.2.3.tar.gz
http://download.osgeo.org/proj/proj-4.8.0.tar.gz
http://download.osgeo.org/geos/geos-3.3.3.tar.bz2
http://download.osgeo.org/postgis/source/postgis-2.2.6.tar.gz

将下载的文件拷贝到服务器,所需文件如下:

gdal-2.2.3.tar.gz
proj-4.8.0.tar.gz
geos-3.3.3.tar.bz2
postgis-2.2.6.tar.gz 

2 解压编译安装gdal、proj、geos和postgis

依次解压、编译、安装以上软件包。

$ tar xf gdal-2.2.3.tar.gz && cd gdal-2.2.3 && ./configure --prefix=/usr/local/gdal && make && sudo make install
$ tar xf proj-4.8.0.tar.gz && cd proj-4.8.0 && ./configure --prefix=/usr/local/proj && make && sudo make install
$ tar xf geos-3.3.3.tar.bz2 && cd geos-3.3.3 && ./configure --prefix=/usr/local/geos && make && sudo make install
$ tar xf postgis-2.2.6.tar.gz && cd postgis-2.2.6 && ./configure -prefix=/usr/local/postgis --with-geosconfig=/usr/local/geos/bin/geos-config --with-projdir=/usr/local/proj --with-gdalconfig=/usr/local/gdal/bin/gdal-config && make && sudo make install

3 配置ldconfig

将gdal、proj、geos的lib目录添加到ldconfig。

#vi /etc/ld.so.conf

include ld.so.conf.d/*.conf
#添加以下内容
/usr/local/gdal/lib/
/usr/local/proj/lib/
/usr/local/geos/lib/

 执行 ldconfig命令即可。

4 创建空间数据库模板

# 创建无空间特性数据库
postgres $ createdb txhglgj

# 创建相关空间数据库相关的函数,类型,操作符等
postgres $ psql -f /usr/pgsql-9.6/share/contrib/postgis-2.2/postgis.sql -d txhglgj
postgres $ psql -f /usr/pgsql-9.6/share/contrib/postgis-2.2/rtpostgis.sql -d txhglgj

# 验证空间数据库版本
postgres $ psql txhglgj
psql (9.6.10)
输入 "help" 来获取帮助信息.

txhglgj=# select postgis_full_version(); 
                                                            postgis_full_version                                                             
---------------------------------------------------------------------------------------------------------------------------------------------
 POSTGIS="2.2.6 r16006" GEOS="3.3.3-CAPI-1.7.4" PROJ="Rel. 4.8.0, 6 March 2012" GDAL="GDAL 2.2.3, released 2017/11/20" LIBXML="2.9.1" RASTER
(1 行记录)

txhglgj=# \d
                     关联列表
 架构模式 |       名称        |  型别  |  拥有者  
----------+-------------------+--------+----------
 public   | geography_columns | 视观表 | postgres
 public   | geometry_columns  | 视观表 | postgres
 public   | raster_columns    | 视观表 | postgres
 public   | raster_overviews  | 视观表 | postgres
 public   | spatial_ref_sys   | 资料表 | postgres
(5 行记录)

 

5. 简单测试

测试点(0, 0)是否在指定的多边形内。

new_database=# select ST_Within(ST_GeomFromText('POINT(0 0)', 4326), ST_GeomFromText('POLYGON((1 1, 1 -1, -1 -1, -1 1, 1 1))', 4326)) ;
 st_within 
-----------
 t
(1 行记录)

内容参考于:

https://www.jianshu.com/p/816141e62830

https://www.cnblogs.com/fanzhidongyzby/p/8279891.html

 

转载自:https://blog.csdn.net/yzj_xiaoyue/article/details/84936530

You may also like...