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

2019-04-09  本文已影响0人  爱吃萝卜的小草菇

一、安装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
上一篇下一篇

猜你喜欢

热点阅读