postgresql和postgis安装配置

原创
2015/01/23 23:20
阅读数 3.6K

安装规划:

 

1. 版本选择
根据postgis官方的说明,推荐的版本组合如下:

http://trac.osgeo.org/postgis/wiki/UsersWikiPostgreSQLPostGIS

 

postgis 2.1 pgsql 9.1/9.2/9.3是最佳的,最新的pgsql 9.4并不是最好的选择(虽然支持 实际使用中也正常)

 

postgis 2.1geos组合:

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

 

yum仓库的geosgdal版本太旧,所以应该从源码安装geos 3.5gdal 1.10

 

 

计划使用EPEL安装附加的软件包:

rpm -ivh http://mirrors.zju.edu.cn/epel/6/i386/epel-release-6-8.noarch.rpm

 

 

 

 

2. 数据目录位于 /data/pgdata

3. pgsql服务器进程账号名称为postgres

 

先按正常的顺序安装postgresql

 

安装必要的依赖库

yum install gd gd-devel libtool* autoconf* readline*

 

1. 建立系统用户postgres,  它将作为pgsql服务器进程和默认的超级用户

useradd postgres

tar -xf postgresql-9.4.0.tar.gz

cd postgresql-9.4.0

 

./configure

make

make install

 

默认安装到/usr/local/pgsql目录中

将其库目录加入到系统库文件检索路径中:

echo  /usr/local/pgsql/lib >> /etc/ld.so.conf

ldconfig

 

/root/.bashrc文件中加入以下内容;

export PATH="$PATH:/usr/local/pgsql/bin"

再执行 source ~/.bashrc

以便方便使用pgsql的命令

 

 

安装系统服务,源码包中已经包含服务启动脚本

cp contrib/start-scripts/linux /etc/init.d/postgres

chmod +x /etc/init.d/postgres

chkconfig --add postgres

 

然后修改 /etc/init.d/postgres文件,将PGDATA变量修改为/data/pgdata

即我们规划的数据目录

 

 

初始化数据库目录:

mkdir -p /data/pgdata

chown -R postgres:postgres /data/pgdata

 

初始化数据库:

必须使用postgres用户执行:

su postgres

/usr/local/pgsql/bin/initdb -D /data/pgdata/

exit

初始化完成后,就可以启动服务

service postgres start

 

验证:

netstat -ntpl

postgresql默认监听在5432端口

 

psql -U postgres

 

到此,postgresql安装完成

 

 

 

二、开始postgis的安装:

 

postgis依赖gdal, yum源中的版本过低,不满足最低版本要求(1.8+),故从源码安装之:

 

tar -xf gdal-1.9.0.tar.gz 

cd gdal-1.9.0

./configure

make

make install

 

gdal的库目录加入到系统库文件检索目录中:

echo /usr/local/lib >> /etc/ld.so.conf

ldconfig

 

 

postgis依赖以下库:

geos 3.3+, 推荐使用3.4及以上版本, EPEL中的版本为3.3.2

 

yum install geos-devel proj*

 

tar -xf postgis-2.1.5.tar.gz

cd cd postgis-2.1.5

./configure

make

make install

 

 

登录pgsql命令行,安装gis扩展:

psql test -U postgres

 

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安装完成

 

测试功能:

CREATE TABLE mytable ( 

  id SERIAL PRIMARY KEY,

  geom GEOMETRY(Point, 26910),

  name VARCHAR(128)

);

 

CREATE INDEX mytable_gix

  ON mytable 

  USING GIST (geom); 

 

INSERT INTO mytable (geom) VALUES (

  ST_GeomFromText('POINT(0 0)', 26910)

);

 

SELECT id, name

FROM mytable

WHERE ST_DWithin(

  geom, 

  ST_GeomFromText('POINT(0 0)', 26910),

  1000

); 

 

 

 

 

 


展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部