CentOS安装PostGIS最方便的方法是用PostgreSQL源加上EPEL源,直接yum安装,无痛解决依赖问题(源码安装时遇到的依赖问题会让人抓狂的)。

1、yum添加PostgreSQL源

参考http://wiki.postgresql.org/wiki/YUM_Installation
http://yum.postgresql.org/repopackages.php页面选择下载相应系统的rpm包,安装

rpm -ivh pgdg-centos94-9.4-1.noarch.rpm

添加yum源:编辑 /etc/yum.repos.d/CentOS-Base.repo
在 [base] 和 [updates] 区域中各加入一行 

exclude=postgresql*

 

2.使用EPEL源

为CentOS7/RHEL7安装EPEL 仓库(repo)
yum -y install epel-release

 

重建yum缓存:

yum clean all && yum makecache

 

3.安装PostgreSQL
查看可安装组件:yum list postgres*

yum install postgresql94-server

默认路径:

/usr/pgsql-9.4

建数据库:

service postgresql-9.4 initdb     
不能成功执行的话用:/usr/pgsql-9.4/bin/postgresql94-setup initdb
数据库路径:/var/lib/pgsql/9.4/data

注:data目录为数据库实例路径,每个下面有对应配置文件,修改后发现数据库启动失败,多为配置文件错误导致。

 

修改pg_hba.conf和postgresql.conf配置

pg_hba.conf:

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only

local   all             all                                 md5

# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
host    all             all             0.0.0.0/0              md5

postgresql.conf:

# - Connection Settings -

listen_addresses = '*'         # what IP address(es) to listen on;
                    # comma-separated list of addresses;
                    # defaults to 'localhost'; use '*' for all
                    # (change requires restart)
port = 5432                # (change requires restart)

注:解释详见 http://www.cnblogs.com/hiloves/archive/2011/08/20/2147043.html

 

启动服务器:
service postgresql-9.4 start
参数说明:

  • start : start the database
  • stop : stop the database
  • restart : stop/start the database; used to read changes to core configuration files
  • reload : reload pg_hba.conf file while keeping database running

 

查看状态:
systemctl status postgresql-9.4.service


连接测试数据库:
# psql -d postgres -U postgres

 

先改为trust,无密码连接进入数据库,修改账户密码

alter user postgres with password 'foobar';

再改回 md5 加密认证模式,注意重启配置生效。

 

设置随linux自启动数据库

chkconfig postgresql-9.4 on

 

 

4.安装PostGIS
yum list postgis*

yum install postgis2_94.x86_64 postgis2_94-client.x86_64 postgis2_94-debuginfo.x86_64 postgis2_94-devel.x86_64 postgis2_94-docs.x86_64 postgis2_94-utils.x86_64

查看PostGIS相关文件确认安装成功:/usr/pgsql-9.4/share/extension /usr/pgsql-9.4/share/contrib/postgis-2.1 有相关postgis文件

 

加载PostGIS插件
# psql -d postgres -U postgres
psql (9.4.1)
输入 "help" 来获取帮助信息.

postgres=# \l
                                     资料库列表
   名称    |  拥有者  | 字元编码 |  校对规则   |    Ctype    |       存取权限        
-----------+----------+----------+-------------+-------------+-----------------------
 postgres  | postgres | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 | 
 template0 | postgres | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
(3 行记录)

postgres=# create database postgis ;
CREATE DATABASE
postgres=# \c postgis 
您现在已经连线到数据库 "postgis",用户 "postgres".
postgis=# select * from pg_extension;
 extname | extowner | extnamespace | extrelocatable | extversion | extconfig | extcondition 
---------+----------+--------------+----------------+------------+-----------+--------------
 plpgsql |       10 |           11 | f              | 1.0        |           | 
(1 行记录)

postgis=# create extension postgis;
CREATE EXTENSION
postgis=# \dt
                    关联列表
 架构模式 |      名称       |  型别  |  拥有者  
----------+-----------------+--------+----------
 public   | spatial_ref_sys | 资料表 | postgres
(1 行记录)

postgis=# select count(*) from spatial_ref_sys ;
 count 
-------
  3911
(1 行记录)

postgis=# \dn
   架构模式列表
  名称  |  拥有者  
--------+----------
 public | postgres
(1 行记录)

postgis=# create extension postgis_topology;
CREATE EXTENSION
postgis=# \dn
    架构模式列表
   名称   |  拥有者  
----------+----------
 public   | postgres
 topology | postgres
(2 行记录)


 

5.卸载

官方:yum erase postgresql94*

手工检查是否已经有PostgreSQL安装程序

命令:

rpm -qa | grep postgres

通过上述命令,找到了则卸载他们(当然,如果你机器上已经装了,本教程你可以当学习或者忽略了)。

rpm -ev [rpm包名成]

在卸载的过程中,可以能会报一些错误,例如:

 error: Failed dependencies:

此时,你可以这样用卸载命令 (当然--nodeps这个参数你也一刻写在命令的最后边)

rpm -ev --nodeps [rpm包名成]

删除相关文件及目录

 

参考:
https://wiki.postgresql.org/wiki/YUM_Installation
http://blog.chinaunix.net/xmlrpc.php?r=blog/article&id=4005071&uid=26600678
http://www.cnblogs.com/hiloves/archive/2011/08/20/2147043.html
http://www.linuxidc.com/Linux/2014-12/110108.htm
http://blog.csdn.net/drift_away/article/details/20617467
http://fedoraproject.org/wiki/PostgreSQL