上传服务定义 (Server)

许可等级:BasicStandardAdvanced

摘要

根据过渡的服务定义 (.sd) 文件上传并发布 GIS 服务至特定的 GIS 服务器。

用法

语法

UploadServiceDefinition_server (in_sd_file, in_server, {in_service_name}, {in_cluster}, {in_folder_type}, {in_folder}, {in_startupType}, {in_override}, {in_my_contents}, {in_public}, {in_organization}, {in_groups})
参数说明数据类型
in_sd_file

服务定义 (.sd) 包含发布 GIS 服务所需的所有信息。

File
in_server

您可以使用在目录 窗口中 GIS 服务器节点下列出的 ArcGIS for Server 连接,也可以导航到您用于存储服务器连接文件的其他文件夹。

如果您连接到 ArcGIS Online,请确保在您所输入的服务器连接的我的托管服务中,每个单词均采用大写字母且每个单词之间都留有空格。

ServerConnection
in_service_name
(可选)

使用此参数以用新名称来覆盖当前在服务定义中指定的服务名称。

String
in_cluster
(可选)

如果您要更改为其分配了服务的集群,则可以使用此参数。您必须从指定服务器上的可用聚类中选择。

String
in_folder_type
[in_folder_type,...]
(可选)

文件夹类型用于确定文件夹来源。默认设置是从服务定义中获取文件夹。您还可以选择获取指定服务器上已经存在的一系列文件夹,或者您可以在发布该服务时指定要创建的新文件夹。

  • NEW使用此参数来创建新文件夹。
  • 现有使用此参数来指定服务器上存在的文件夹。
  • FROM_SERVICE_DEFINITION使用服务定义中已指定的文件夹。这是默认设置。
String
in_folder
(可选)

使用此参数来指定服务所对应的文件夹。默认设置是使用服务定义中指定的文件夹。如果您选择了 NEW 文件夹类型,则使用此参数来输入新的文件夹名称。如果您选择了 EXISTING 文件夹类型,则可从服务器上的已有文件夹中选择。

String
in_startupType
(可选)

使用此参数在发布之后立即确定该服务的开始/停止状态。

  • STARTED该服务在发布之后立即启动。
  • STOPPED该服务在发布之后不会启动。您必须手动启动该服务。
Boolean
in_override
(可选)

如果您要覆盖在服务定义中设置的共享属性,请使用此参数。这些属性定义了您是否正在与 ArcGIS Online 共享您的服务以及共享的方式。与 ArcGIS Online 共享您的服务可以让其他人使用该服务。

  • OVERRIDE_DEFINITION用新值来覆盖在服务定义中设置的共享属性。
  • USE_DEFINITION将在发布服务时使用当前在服务定义中设置的共享属性。这是默认设置。

要覆盖共享属性,您必须登录 ArcGIS Online。

Boolean
in_my_contents
(可选)

所有共享服务均可通过“我的内容”提供。即使您只想与组织中的某一特定组共享,也可通过“我的内容”共享该服务。

  • SHARE_ONLINE共享 ArcGIS Online 上的服务。该服务将在“我的内容”下列出。
  • NO_SHARE_ONLINE该服务不会在 ArcGIS Online 上共享且其他 ArcGIS Online 用户和 web 客户端无法对其进行访问。

要覆盖共享属性,您必须登录 ArcGIS Online。

Boolean
in_public
(可选)

选择是否要向公共提供您的服务。

  • PUBLIC将该服务与公共共享。
  • PRIVATE不将该服务与公共共享。

要覆盖共享属性,您必须登录 ArcGIS Online。

Boolean
in_organization
(可选)

您可以将您的服务与您所在的组织共享。

  • SHARE_ORGANIZATION将该服务与您所在的组织共享。
  • NO_SHARE_ORGANIZATION不将该服务与您所在的组织共享。

要覆盖共享属性,您必须登录 ArcGIS Online。

Boolean
in_groups
[group_name,...]
(可选)

要与之共享服务的组的名称列表。

要覆盖共享属性,您必须登录 ArcGIS Online。

String

代码实例

上传服务定义 (UploadServiceDefinition) 示例(Python 窗口)

将服务定义上传并发布到指定服务器。

import arcpy
from arcpy import env
env.workspace = "C:/data"
arcpy.UploadServiceDefinition_server("myMapService.sd", "GIS Servers/myServerConnection")
发布工作流示例(独立脚本)

以下脚本通过过渡服务上传服务定义演示了发布工作流。

# Name: StageService_UploadServiceDefinition_example2.py
# Description: Use a service definition draft to create a service definition
# and then upload and publish that service definition.
# Requirements: Connection to an ArcGIS Server or My Hosted Services

# Import system modules
import arcpy
from arcpy import env

# Set environment settings
env.workspace = "C:/data"

# Set local variables
inServiceDefinitionDraft = "myMapService.sddraft"
outServiceDefinition = "myMapService.sd"

# Execute StageService
arcpy.StageService_server(inServiceDefinitionDraft, outServiceDefinition)

# Set local variables
inSdFile = outServiceDefinition
inServer = "GIS Servers/myServerConnection"

# Execute UploadServiceDefinition
arcpy.UploadServiceDefinition_server(inSdFile, inServer)
上传服务定义 (UploadServiceDefinition) 示例 2(独立脚本)

以下脚本可在某个文件夹中的所有服务定义中循环,并将每个服务定义都发布到 ArcGIS Server。

# Name: UploadServiceDefinition_example3.py
# Description: Upload and publish all service definitions contained in a folder
# Requirements: Connection to an ArcGIS Server or My Hosted Services

# Import system modules
import arcpy
from arcpy import env

# Set environment settings
env.workspace = "C:/data"

# Set local variable
inServer = "myServerConnection.ags"
print "Publishing to " + inServer

# Find all the service definitions (.sd or .sds) in a workspace and 
# upload\publish each one to an ArcGIS Server, Spaital Data Server, or My Hosted Services
sdList = arcpy.ListFiles("*.sd")
for inSdFile in sdList:
    print "Publishing " + sdName
    try:
        arcpy.UploadServiceDefinition_server(inSdFile, inServer)        
    except Exception, e:
        print e.message
上传服务定义 (UploadServiceDefinition) 示例 3(独立脚本)

以下脚本可上传现有的服务定义并可使用可选参数对该服务的某些属性进行修改。

# Name: UploadServiceDefinition_example5.py
# Description: Uploads an existing service definition and uses optional 
#              parameters to modify some details of the service
# Requirements: Connection to an ArcGIS Server or My Hosted Services

# Import system modules
import arcpy
from arcpy import env

# Set environment settings
env.workspace = "C:/data"

# Set local variables
inSdFile = "myMapService.sd"
inServer = "myServerConnection.ags"
inServiceName = "newServiceName"
inCluster = "myCluster"
inFolderType = "NEW"
inFolder = "newFolder"
inStartup = "STOPPED"
inOverride = "OVERRIDE_DEFINITION"
inMyContents = "SHARE_ONLINE"
inPublic = "PRIVATE"
inOrganization = "NO_SHARE_ORGANIZATION"
inGroups = "My Group"

# Execute UploadServiceDefinition
arcpy.UploadServiceDefinition_server(inSdFile, inServer, inServiceName, 
                                     inCluster, inFolderType, inFolder, 
                                     inStartup, inOverride, inMyContents, 
                                     inPublic, inOrganization, inGroups)
覆盖服务示例(独立脚本)

以下脚本可创建并上传能用于覆盖现有服务的服务定义。

# Name: StageService_example3_UploadServiceDefinition_example4.py
# Description: Creates a service definition that can be used to overwrite an 
#              existing service. When this service definition is published it 
#              will overwrite the existing service.
# Requirements: Connection to an ArcGIS Server or My Hosted Services


# Import system modules
import arcpy
from arcpy import env
import xml.dom.minidom as DOM 

# Set environment settings
env.workspace = "C:/data"

# Set local variables
inServiceDefinitionDraft = "myMapService.sddraft"
outServiceDefinition = "myMapService.sd"
newType = 'esriServiceDefinitionType_Replacement'

xml = draftPath + in_sd_draft
doc = DOM.parse(xml)
descriptions = doc.getElementsByTagName('Type')
for desc in descriptions:
    if desc.parentNode.tagName == 'SVCManifest':
        if desc.hasChildNodes():
            desc.firstChild.data = newType
outXml = xml    
f = open(outXml, 'w')     
doc.writexml( f )     
f.close()

# Execute StageService
arcpy.StageService_server(inServiceDefinitionDraft, outServiceDefinition)

# Set local variables
inSdFile = outServiceDefinition
inServer = "GIS Servers/myServerConnection"

# Execute UploadServiceDefinition
arcpy.UploadServiceDefinition_server(inSdFile, inServer)

环境

此工具不使用任何地理处理环境

相关主题

许可信息

ArcGIS for Desktop Basic: 是
ArcGIS for Desktop Standard: 是
ArcGIS for Desktop Advanced: 是
5/25/2014