Ubuntu下ArcGIS Server 10.4与PostgreSQL 9.4的完美CP

稍微说几句,为什么要折腾这个:(1)不希望再用Windows Server,理由都懂;(2)对SQL Server在应用中的各种保守表现不太满意,希望在GIS上有更激进些的工作,例如对空间数据的处理能力;(3)有些应用要有更灵活的架构,而PG在一定程度上迎合了这种需求,例如支持JSON和JSONB,成为关系和非关系混合的一种选择(据说MySQL5.7开始也支持了JSON);(4)ArcGIS Server在linux下的表现,希望用实践来验证;(5)搞技术的人面对互联网的热闹,实在无法完全抵御尝试和改变的欲望。

1 环境安装

1.1 配置说明

  • OS:Ubuntu 14.04 LTS
  • DB:PostgreSQL-9.4
  • ArcGIS:ArcGIS Server 10.4 for Linux

1.2 安装PostgreSQL

1.2.1 常规安装

PostgreSQL的安装就不多说了,按照官方教程可以很顺利地安装目前比较稳定的9.4版。在上篇文章中说过不建议使用PG官方的Installer,因此还是使用各Linux发行版自己的安装方式较好。Ubuntu下就用apt-get。如果需要PostGIS,可以先查找合适的deb包,再安装,查找方式:

然后psql到目标数据库下,用Create Extension的方式增加postgis的扩展:

1.2.2 支持GDB的安装

言归正传,ESRI一如既往地自己实现了一套geometry操作,不会选择依赖postgis,并在安装server时把这些东西拷贝到了安装目录里,具体路径是:

当然,windows或其他pg版本也可以在此找到,目前为止最新支持到pg9.4。注意,一定要拷贝这个文件夹里的st_geometry.so文件到pg的lib目录下,这个目录会被存在一个叫PKGLIBDIR的变量中(登录postgres的db账户后输入pg_config可以查看所有的变量)。比如我的目录是:

1.3 安装ArcGIS Server

首先,吐槽一下ESRI,刚开始看ArcGIS Server 10.4 for Linux的iso文件中有单独的for linux版的license manager,于是手贱安装了一把,发现其实没有任何用处,ESRI打包和发布软件的是实习生么难道?其实只需要关注ArcGIS_for_Server_Linux_xx….tar.gz这一个包即可(如下图)。剩下的就是解压和安装,这个暂且不谈,后面有需要再写。

installer

其次,表扬一下ESRI,10.4中默认的manager和rest服务路径已跳转为https,终于有改进。例如:

2 权限配置

如果要使用ArcGIS创建Geodatabase, pg的用户名必须是sde(ESRI一向如此无礼),这个用户不是单单需要login和createdb之类权限即可,而必须是超级用户:

否则Enable Geodatabase的时候会报这个错误:

_SFQX5E9ZGRMQ$@M9M60D0D

如果查下ESRI的官方文档,有这么句话:

如果使用的是 PostgreSQL,该值必须为 sde。如果 sde 登录角色不存在,此工具将创建 sde 登录角色并授予其超级用户状态。同时还会在数据库中创建 sde 方案。如果 sde 登录角色已存在,当其没有超级用户状态时,此工具将对其授予这一状态。

这个值指的是gdb_admin_name,用于创建GDB的PG用户。

So far so good ! 先写这些吧。