安装规划:
1.版本选择:
根据postgis官方的说明,推荐的版本组合如下:
http://trac.osgeo.org/postgis/wiki/UsersWikiPostgresqlPostGIS
postgis2.1与pgsql9.1/9.2/9.3是最佳的,最新的pgsql9.4并不是最好的选择(虽然支持实际使用中也正常)
postgis2.1与geos组合:
3.3可用,但不推荐
3.4/3.5推荐
gdal版本要求:1.8可用,但不推荐。推荐使用1.9/1.10/1.11
postgresql9.4
gdal1.9
postgis2.1.5
最佳组合如下:
pgsql9.1/9.2/9.3
geos3.4/3.5
gdal1.9
故推荐的组合为pgsql9.3+geos3.5+gdal1.10
yum仓库的geos和gdal版本太旧,所以应该从源码安装geos3.5和gdal1.10
计划使用EPEL安装附加的软件包:
rpm-ivhhttp://mirrors.zju.edu.cn/epel/6/i386/epel-release-6-8.noarch.rpm
2.数据目录位于/data/pgdata
先按正常的顺序安装postgresql
安装必要的依赖库
yuminstallgdgd-devellibtool*autoconf*readline*
1.建立系统用户postgres,它将作为pgsql服务器进程和默认的超级用户
useraddpostgres
tar-xfpostgresql-9.4.0.tar.gz
cdpostgresql-9.4.0
./configure
make
makeinstall
默认安装到/usr/local/pgsql目录中
将其库目录加入到系统库文件检索路径中:
echo/usr/local/pgsql/lib>>/etc/ld.so.conf
ldconfig
exportPATH="$PATH:/usr/local/pgsql/bin"
再执行source~/.bashrc
以便方便使用pgsql的命令
安装系统服务,源码包中已经包含服务启动脚本
cpcontrib/start-scripts/linux/etc/init.d/postgres
chmod+x/etc/init.d/postgres
chkconfig--addpostgres
然后修改/etc/init.d/postgres文件,将PGDATA变量修改为/data/pgdata
即我们规划的数据目录
初始化数据库目录:
mkdir-p/data/pgdata
chown-Rpostgres:postgres/data/pgdata
初始化数据库:
必须使用postgres用户执行:
supostgres
/usr/local/pgsql/bin/initdb-D/data/pgdata/
exit
初始化完成后,就可以启动服务
servicepostgresstart
验证:
netstat-ntpl
postgresql默认监听在5432端口
psql-Upostgres
到此,postgresql安装完成
二、开始postgis的安装:
postgis依赖gdal,但yum源中的版本过低,不满足最低版本要求(1.8+),故从源码安装之:
tar-xfgdal-1.9.0.tar.gz
cdgdal-1.9.0
./configure
make
makeinstall
将gdal的库目录加入到系统库文件检索目录中:
echo/usr/local/lib>>/etc/ld.so.conf
ldconfig
postgis依赖以下库:
geos3.3+,推荐使用3.4及以上版本,EPEL中的版本为3.3.2
yuminstallgeos-develproj*
tar-xfpostgis-2.1.5.tar.gz
cdcdpostgis-2.1.5
./configure
make
makeinstall
psqltest-Upostgres
CREATEEXTENSIONpostgis;
CREATEEXTENSIONpostgis_topology;
CREATEEXTENSIONfuzzystrmatch;
出错:
ERROR:couldnotopenextensioncontrolfile"/usr/local/pgsql/share/extension/fuzzystrmatch.control":Nosuchfileordirectory
这个扩展已经包含在pgsql源码中,但是默认并未完成,所以需要安装之,进入pgsql源码目录:
cdcontrib/fuzzystrmatch/
make
makeinstall
然后再在pgsql命令行下执行:CREATEEXTENSIONfuzzystrmatch;
没有出现错误
CREATEEXTENSIONpostgis_tiger_geocoder;
没有出错,至此postgis安装完成
测试功能:
CREATETABLEmytable(
idSERIALPRIMARYKEY,
geomGEOMETRY(Point,26910),
nameVARCHAR(128)
);
CREATEINDEXmytable_gix
ONmytable
USINGGIST(geom);
INSERTINTOmytable(geom)VALUES(
ST_GeomFromText('POINT(00)',26910)
);
SELECTid,name
FROMmytable
WHEREST_DWithin(
geom,
ST_GeomFromText('POINT(00)',
1000
);