postgersql+postgis
安装规划: 1. 版本选择: 根据postgis官方的说明,推荐的版本组合如下: http://trac.osgeo.org/postgis/wiki/UsersWikiPostgreSQLPostGIS postgis 2.1 与pgsql 9.1/9.2/9.3是最佳的,最新的pgsql 9.4并不是最好的选择(虽然支持 实际使用中也正常) postgis 2.1与geos组合: 3.3 可用,但不推荐 3.4/3.5 推荐 gdal 版本要求:1.8可用,但不推荐。推荐使用 1.9/1.10/1.11 postgresql 9.4 gdal 1.9 postgis 2.1.5 最佳组合如下: pgsql 9.1/9.2/9.3 geos 3.4/3.5 gdal 1.9 故推荐的组合为 pgsql 9.3 + geos 3.5 + gdal 1.10 一、搭建postgresql 安装前准备 yum install readline-devel zlib-devel useradd pgsql 下载源码并解压、编译安装 wget https://ftp.postgresql.org/pub/source/v9.4.1/postgresql-9.4.1.tar.bz2 tar -xjvf postgresql-9.4.1.tar.bz2 cd postgresql-9.4.1 ./configure --prefix=/home/pgsql make&&make install 建立好database cluster目标文件夹 mkdir -p /home/pgsql/data 环境变量设置: [root@web1 data]# cat /etc/profile.d/pgsql.sh #/bin/bash PGDATA=/home/pgsql/data PATH=$PATH:/home/pgsql/bin LD_LIBRARY_PATH=/home/pgsql/lib export PGDATA PATH LD_LIBRARY_PATH 让环境变量生效 source /etc/profile 初始化数据库(指定PGDATA后可以不用-D参数) pg_ctl initdb 否则需要: initdb -D /home/pgsql/data(上面的不行就用下面这种,data文件夹里需为空) 可以看到最后显示为: Success. You can now start the database server using: /home/pgsql/bin/postgres -D /home/pgsql/data or /home/pgsql/bin/pg_ctl -D /home/pgsql/data -l logfile start 启动数据库实例 ,开启服务(根据上面结果两种选一种) mkdir /home/pgsql/log # 记录日志 /home/pgsql/bin/postgres -D /home/pgsql/data(需在pgsql用户下进行) 关闭数据库实例 pg_ctl stop 开启远程连接 修改: cd /home/hadoop/pgsql/data vim pg_hba.conf # hba = host based authentication # IPv4 local connections: host all all 0.0.0.0/0 trust 为了打开PostgreSql Server的外部访问,需要向文件末尾添加内容。例如:假如我们安装PostgreSql Server的服务器IP地址是192.168.10.254,我们希望该子网内(即IP为192.168.10.*)所有计算机都能连接这台PostgreSql Server,并且都需要用户名/密码登录,则可以添加如下行: host all all 192.168.10.0/24 md5 这个例子中,“192.168.10.0/24”表示允许所有IP为“192.168.10.*”的计算机对服务器进行访问,“24”即IP的掩码有24个二进制的“1”,就是子网掩码的概念;例如,如果我们希望所有IP为“192.168.*.*”的计算机对服务器进行访问,则可以写为“192.168.10.0/16”。 第一个all表示允许访问所有数据库,第二个all表示允许所有用户名的用户登录;这两个域的设置可以参阅该文件前面长长的说明内容,本文不再赘述。 最后的md5表示用加密后的密码进行用户名/密码匹配的认证,这里的“用户名”是指数据库的用户,而不是操作系统的用户。常用的几种其他认证方式有ident(与操作系统的用户名做映射,采用操作系统的认证,数据库用户与操作系统用户之间的映射在pg_ident.conf文件中配置)、password(在网络传送明文密码认证,不安全)、trust(完全信任)、peer(取客户端操作系统的用户名,一般仅用来做本地连接)。 通常,采用数据库用户的用户名和密码进行认证,即md5。 继续修改: vim postgresql.conf listen_addresses = '*' # 修改该行为监听所有地址的请求 配置防火墙 su - root vi /etc/sysconfig/iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 5432 -j ACCEPT service iptables restart 或者直接关闭: /etc/init.d/iptables status chkconfig iptables off #永久关闭,重启生效 /etc/init.d/iptables stop #当前关闭 系统服务(用root权限): 复制postgresql安装目录下的linux文件到/etc/init.d/,进入postgresql 的安装目录(即刚刚使用tar命令解压的目录): cd postgresql-9.4.1 cp contrib/start-scripts/linux /etc/init.d/postgresql vim /etc/init.d/postgresql 修改如下: # 修改prefix prefix = /home/pgsql # 修改PGDATA PGDATA="/home/pgsql/data" # 修改PGUSER PGUSER=pgsql # 修改PGLOG PGLOG="$PGDATA/log/logfile"(可能没有这个文件,需要自己创建) 添加执行权限: chmod +x /etc/init.d/postgresql 这样,还可以通过系统命令开启和关闭postgresql服务(需要root权限): /etc/init.d/postgresql start /etc/init.d/postgresql stop 综上,搭建完成。 测试(切换到PGUSER用户下),创建一个新数据库,并打开: createdb test psql test l # 查看所有数据库 q # 退出 下面配置PgAdmin。 使用psql命令行界面设置postgres用户的密码: psql test test=#ALTER USER pgsql with password ‘pgsql‘; ALTER ROLE postgres=#q 上面test=#表示目前进入PostgreSql Server的是超级用户,否则是test=形式。 这样,PostgreSql Server具备了一个超级用户pgsql,其密码是pgsql。可以从远程用各种客户端工具连接这台服务器了。 二、开始postgis的安装: postgis依赖gdal,但yum源中的版本过低,不满足最低版本要求(1.8+),故从源码安装之: wget ftp://ftp.remotesensing.org/gdal/gdal-1.9.2.tar.gz tar -zvxf gdal-1.9.2.tar.gz cd gdal-1.9.2 ./configure --prefix=/home/user/gdal make make install 将gdal的库目录加入到系统库文件检索目录中: echo /home/user/gdal/lib/ >> /etc/ld.so.conf ldconfig postgis依赖以下库: geos 3.3+,推荐使用3.4及以上版本,EPEL中的版本为3.3.2 yum install geos-devel proj* wget http://download.osgeo.org/postgis/source/postgis-2.1.6.tar.gz tar zxvf postgis-2.1.6.tar.gz cd postgis-2.1.6 ./configure --with-gdalconfig= /home/user/gdal/gdal-config make&&make install 登录pgsql命令行,安装gis扩展: psql test -U pgsql CREATE EXTENSION postgis; CREATE EXTENSION postgis_topology; CREATE EXTENSION fuzzystrmatch; 出错: ERROR: could not open extension control file "/usr/local/pgsql/share/extension/fuzzystrmatch.control": No such file or directory 这个扩展已经包含在pgsql源码中,但是默认并未完成,所以需要安装之,进入pgsql源码目录: cd contrib/fuzzystrmatch/ make make install 然后再在pgsql命令行下执行:CREATE EXTENSION fuzzystrmatch; 没有出现错误 CREATE EXTENSION postgis_tiger_geocoder; 没有出错,至此postgis安装完成 感谢朋友黄炜 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |