环境
ArcGIS Server版本:10.6.1
操作系统:Redhat7.4
问题适用范围:ArcGIS Server10.1至10.6.1版本
问题描述
在升级ArcGIS Server之后,发现登录ArcGIS Server Manager中,看不到PublishingTools,如下图所示:
同时在ArcGIS Server Administrator Directory的 services > System 目录下也看不到这个服务,和地图服务发布相关的PublishingToolsEx服务倒是还在,如下图所示:
看了下日志,其中有一个信息记录如下:
这个提示信息是PublishingTools配置文件(JSON)缺少{字符作为JSON文件的开始。
解决思路及方法
对于GIS Server系统自带的服务丢失问题,Esri提供了重新创建系统自带服务的操作,具体可以参考以下链接:
http://enterprise.arcgis.com/zh-cn/server/latest/administer/windows/re-creating-the-geometry-service.htm
但是我在使用这种方法操作时,提示了一个错误,而这个错误信息,和ArcGIS Server Manager里之前记录的错误信息竟然一致:
根据Create这个操作的意思推断:这个操作可能会创建一个新的配置文件,而日志里报错的提示是配置文件中缺少配置信息,所以有可能是文件已经存在了,但是内容丢失。所以,基于这个思路,找到了PublishingTools服务的配置信息,它的路径位置在:
%GISServerConfigHome%/config-store/services/System/PublishingTools.GPServer
注意:%GISServerConfigHome%是站点配置存储的路径(主要包括:服务器目录和配置存储目录):
从上面的图,我们可以看到PublishingTools服务的配置信息为空。
我们需要做的就是找到一台正常的ArcGIS Server服务器,然后把它的配置信息拷贝过来:
注意:拷贝过来的信息需要修改站点的配置存储路径。
接下来,我们需要登录到admin后台(ArcGIS Server Administrator Directory),看看PublishingTools是不是恢复了,一般这需要个几十秒的恢复时间。如果过了1分钟还没有看到,那直接在浏览器中打开以下地址:
https://xxx:6443/arcgis/admin/services/System/PublishingTools.GPServer
就可以看到服务的信息:
最后在ArcGIS Server Manager中看下PublishingTools服务是否已经启动,很大可能会处于正在关闭的状态,所以这时候我们可以直接重启动PublishingTools就OK。
配置信息参考:
{
“serviceName”: “PublishingTools”,
“type”: “GPServer”,
“description”: “The PublishingTools service is used by ArcGIS Server to publish service definition files as services.”,
“capabilities”: “null”,
“provider”: “ArcObjects”,
“clusterName”: “default”,
“minInstancesPerNode”: 1,
“maxInstancesPerNode”: 2,
“instancesPerContainer”: 1,
“maxWaitTime”: 60,
“maxStartupTime”: 300,
“maxIdleTime”: 1800,
“maxUsageTime”: 3600,
“loadBalancing”: “ROUND_ROBIN”,
“isolationLevel”: “HIGH”,
“configuredState”: “STARTED”,
“recycleInterval”: 24,
“recycleStartTime”: “00:00”,
“keepAliveInterval”: -1,
“private”: false,
“isDefault”: true,
“maxUploadFileSize”: 0,
“allowedUploadFileTypes”: “”,
“properties”: {
“virtualOutputDir”: “/rest/directories/arcgisoutput”,
“maximumRecords”: “1000”,
“outputDir”: “/netshare/gisserver/directories/arcgisoutput”,
“jobsDirectory”: “/netshare/gisserver/directories/arcgisjobs”,
“showMessages”: “Info”,
“executionType”: “Asynchronous”,
“toolbox”: “${AGSSERVER}/ArcToolBox/Services/Publishing Tools.tbx”,
“jobsVirtualDirectory”: “/rest/directories/arcgisjobs”
},
“extensions”: [],
“frameworkProperties”: {“manages”: “[\”PublishingToolsEx\”]”},
“datasets”: []
}
问题原因
之所以在GIS Server升级中会出现这个问题,主要是因为在升级完之后,站点配置目录丢失导致。两个节点的GIS Server站点配置目录挂接在另外一台机器的共享目录,通过NFS的方式挂接,但是在升级的过程总由于网络不稳定导致了信息的丢失。