cenos6.8安装postgresql与添加postgis扩展

一、安装postgresql(无特殊说明,命令均为root权限命令,不是root用户请自行添加sudo)

1、下载postgresql

采用源码安装,可以到官网https://www.postgresql.org/ftp/source/选择合适版本进行下载安装,本实例中选择postgresql-9.3.2.tar.gz此版本进行安装

2、解压文件:

tar -zxvf postgresql-9.3.2.tar.gz

3、进入解压目录并配置参数

cd postgresql-9.3.2     //进入解压目录
sudo mkdir /opt/postgresql-9.3.2    //创建安装目录
./configure --prefix=/opt/postgresql-9.3.2    //配置安装参数

问题处理:
如果出现configure: error: readline library not found错误,说明系统中缺少readline库,这时输入:

rpm -qa | grep readline

如果提示:

readline-6.0-4.el6.x86_64

那么,你的电脑缺少readline-devel库,你只要安装一下readline-devel就行了:

yum -y install readline-devel

再次rpm -qa | grep readline
提示:

readline-6.0-4.el6.x86_64
readline-devel-6.0-4.el6.x86_64

说明readline-devel安装成功。

4、编译与安装:

make
make install

5、创建用户组和用户来管理postgresql数据库

groupadd postgres      //创建用户组:
useradd -g postgres postgres     //创建用户:

6、创建数据库库文件存储目录并给postgresql用户赋予权限:

cd /opt/postgresql-9.3.2   //进入数据库安装目录
mkdir data            //创建data目录
chown postgres.postgres  data    //给postgres 用户赋予权限

7、添加环境变量

#postgresql
export POSTGRESQL_HOME=/opt/postgresql-9.3.2
export PGDATA=/opt/postgresql-9.3.2/data
export PATH=$PATH:$POSTGRESQL_HOME/bin:$PGDATA

8、初始化数据库目录:

su postgres    //切换用户
sudo passwd postgres    //如果没有配置密码,先给postgresql配置密码
bin/initdb -D data         //在安装目录下初始化数据

9、启动数据库

bin/postmaster -D /opt/postgresql-9.3.2/data      //可以通过postmaster脚本启动:

10、进行配置文件

(1)目前位置,该数据库只能允许本地访问,如果运行其他用户访问的话还需继续进行如下配置:

vi data/postgresql.conf     //编辑配置文件
#原配置
#  listen_addresses = '127.0.0.1'
#  port = 5432
#修改后
#     listen_addresses = '*'
#  port = 5432

(2)允许远程主机连接

 vi data/pg_hba.conf    //编辑配置文件 天加如下配置host all all 0.0.0.0/0  password

# TYPE  DATABASE        USER            ADDRESS                 METHOD
# "local" is for Unix domain socket connections only
local   all             all                                     trust
# IPv4 local connections:
host    all             all             0.0.0.0/0               password
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
#host    all             all             ::1/128                 trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local   replication     postgres                                trust
#host    replication     postgres        127.0.0.1/32            trust
#host    replication     postgres        ::1/128                 trust

注意:
1.其中,"trust"和"password"为postgresql数据库登陆验证的方式,"trust"表示信任,即不需要输入密码(即使有密码),"password"表示需要输入密码。
2.host all all 127.0.0.1/31 trust表示本地连接数据库不需要输入密码(即使有密码,设为trust后就不需要密码)
3.host all all 0.0.0.0/0 所有主机连接数据库需要输入密码(如果有密码)
4.当然,这两个综合后表现的结果就是:对于本机链接表示信任(不需要输入密码),对于非本机链接需要输入密码

(3)打开日志(根据个人习惯与需求而定)

# - Where to Log -
log_destination = 'stderr'              # Valid values are combinations of
                                        # stderr, csvlog, syslog, and eventlog,
                                        # depending on platform.  csvlog
                                        # requires logging_collector to be on.
# This is used when logging to stderr:
logging_collector = on          # Enable capturing of stderr and csvlog
                                        # into log files. Required to be on for
                                        # csvlogs.
                                        # (change requires restart)
# These are only used if logging_collector is on:
log_directory = 'pg_log'                # directory where log files are written,
                                        # can be absolute or relative to PGDATA
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' # log file name pattern,
                                        # can include strftime() escapes
log_file_mode = 0600                    # creation mode for log files,
                                        # begin with 0 to use octal notation
log_rotation_size = 10MB                # Automatic rotation of logfiles will
                                        # happen after that much log output.
                                        # 0 disables.

11、修改防火墙,开放5432端口:

vim /etc/sysconfig/iptables             //打开防火墙配置表
-A INPUT -p tcp -m tcp --dport 5432 -j ACCEPT    //添加端口配置
service iptables restart               //重启防火墙

12、添加开机自启

vim /etc/rc.d/rc.local                      //修改脚本文件rc.local
/opt/postgresql-9.3.2/bin/pg_ctl start &          //添加启动项

13、常用命令

psql       //进入数据库
pg_ctl stop -m fast     //pg_ctl工具关闭postgresql数据库
pg_ctl start      //pg_ctl工具启动postgresql数据库
CREATE USER testuser WITH PASSWORD '123456'   //创建数据库用户并设置密码

至此,postgresql数据库就安装完毕了,可以使用上面创建的用户进行远程登录了。
为了给大家提供更多参考,贴上我的远程登录截图:

image.png

image.png

二、安装postgis扩展

依然选择源码安装,其中依赖放入/opt目录下(与上面postgresql同一目录)

1、安装GEOS

cd /home
wget http://download.osgeo.org/geos/geos-3.5.0.tar.bz2
tar -jxvf geos-3.5.0.tar.bz2     
cd geos-3.5.0    
./configure --prefix=/opt/geos   
make  
make install  

2、安装PROJ

cd /home
wget http://download.osgeo.org/proj/proj-4.9.2.tar.gz 
tar -zxvf proj-4.9.2.tar.gz     
cd proj-4.9.2     
./configure --prefix=/opt/proj
make  
make install  

3、安装GDAL

cd /home
wget http://download.osgeo.org/gdal/2.1.1/gdal-2.1.1.tar.gz
tar -zxvf gdal-2.1.1.tar.gz 
cd gdal-2.1.1     
./configure --prefix=/opt/gdal --with-pg=/opt/postgresql-9.3.2/bin/pg_config
make  
make install  

4、安装LibXML2 json-c 等等

yum install -y libtool libxml2 libxml2-devel libxslt libxslt-devel json-c json-c-devel cmake gmp gmp-devel mpfr mpfr-devel boost-devel pcre-devel

5、安装postgis

起初选用的是postgis-2.3.9.tar.gz进行安装,后来由于与geos版本冲突,降至postgis-2.3.0.tar.gz,下面直接安装postgis-2.3.0.tar.gz

cd /home
wget http://download.osgeo.org/postgis/source/postgis-2.3.0.tar.gz
tar -zxvf postgis-2.3.0.tar.gz
./configure --prefix=/opt/postgis  --with-gdalconfig=/opt/gdal/bin/gdal-config   --with-pgconfig=/opt/postgresql-9.3.2/bin/pg_config     --with-geosconfig=/opt/geos/bin/geos-config  --with-projdir=/opt/proj
make
make install

问题

在执行 ./configure 语句时,报错报错信息如下:
checking for library containing GDALAllRegister... no
configure: error: could not find GDAL
寻找资料查到
解决办法:将PostgreSQL的lib目录(/postgresql/lib)和GDAL的lib文件目录(/usr/local/lib)添加到系统的库文件目录中

echo '/opt/postgresql-9.3.2/lib' >> /etc/ld.so.conf
echo '/opt/gdal/lib' >> /etc/ld.so.conf
ldconfig

检查是否生效

[root@iZwz91test postgis]# ldconfig -p | grep libpq
        libpqwalreceiver.so (libc6,x86-64) => /opt/postgresql-9.3.2/lib/libpqwalreceiver.so
        libpq.so.5 (libc6,x86-64) => /opt/postgresql-9.3.2/lib/libpq.so.5
        libpq.so (libc6,x86-64) => /opt/postgresql-9.3.2/lib/libpq.so
[root@iZwz91test postgis]# ldconfig -p | grep gdal
        libgdal.so.20 (libc6,x86-64) => /opt/gdal/lib/libgdal.so.20
        libgdal.so (libc6,x86-64) => /opt/gdal/lib/libgdal.so
[root@iZwz91xrxrsmpvm8nkl1n6Z postgis]# 

但是执行完代码后,仍然报错,后来我将gdal路径添加到环境变量中

#gdal
export GDAL=/opt/gdal
export PATH=$PATH:$GDAL/bin

然后./configure 竟然神奇的通过了!
后续进行创建posigis扩展测试

[postgres@iZwz91test /]$ psql
psql (9.3.2)
Type "help" for help.

postgres=# create extension postgis;
ERROR:  could not load library "/opt/postgresql-9.3.2/lib/postgis-2.3.so": /opt/postgresql-9.3.2/lib/postgis-2.3.so: undefined symbol: GEOSClipByRect
postgres=# \q

配置依赖软连接

 vim /etc/ld.so.conf
/opt/postgresql-9.3.2/lib
/opt/gdal/lib
#添加代码
/opt/geos/lib
/opt/proj/lib
#刷新
ldconfig

继续进行创建posigis扩展测试最终创建成功了。

[postgres@iZwz91test /]$ psql
psql (9.3.2)
Type "help" for help.

postgres=# create extension postgis;
CREATE EXTENSION
postgres=# \q
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,843评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,538评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,187评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,264评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,289评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,231评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,116评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,945评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,367评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,581评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,754评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,458评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,068评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,692评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,842评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,797评论 2 369
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,654评论 2 354

推荐阅读更多精彩内容