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
二、安装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