美文网首页
cenos6.8安装postgresql与添加postgis扩展

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

作者: 爱吃萝卜的小草菇 | 来源:发表于2019-04-09 16:25 被阅读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
    

    相关文章

      网友评论

          本文标题:cenos6.8安装postgresql与添加postgis扩展

          本文链接:https://www.haomeiwen.com/subject/gvwpiqtx.html