SharePoint Server 中以主机命名的网站集体系结构和部署
**上一次修改主题:**2017-08-18
**摘要:**在 SharePoint 2013 和 SharePoint Server 2016 中计划和实现以主机命名的网站集。了解基于路径的网站集可能会对环境造成的影响。
以主机命名的网站集是在 SharePoint Server 中部署网站的首选方法。因为 Office 365 环境使用以主机命名的网站集,所以新功能已针对这些网站集进行了优化,预计它们会更可靠。了解如何规划和实现以主机命名的网站集、设计 URL 和管理 URL。
本文内容:
用于以主机命名的网站集的体系结构和设计
建议用于以主机命名的网站集的体系结构
以主机命名的网站集与基于路径的网站集的对比
为以主机命名的网站集设计和管理 URL
何时使用基于路径的网站集
使用主机头和以主机命名的网站集
在相同的 Web 应用程序中混合以主机命名的网站集和基于路径的网站集
用于以主机命名的网站集的部署和配置
创建用于以主机命名的网站集的 Web 应用程序
创建根网站集
创建以主机命名的网站集
将托管路径与以主机命名的网站集一起使用
将 URL 映射到以主机命名的网站集
为以主机命名的网站集配置 SSL 证书
将以主机命名的网站集与外部 SSL 终止一起使用
在具有多个区域的环境中启用应用
将基于路径的网站集迁移到以主机命名的网站集
确定现有 Web 应用程序中的以主机命名的网站集
将基于路径的网站集转换为以主机命名的网站集
使用多个具有以主机命名的网站集的 Web 应用程序
创建多个具有以主机命名的网站集的 Web 应用程序
创建多个适用于以主机命名的网站集的 Web 应用程序
在 IIS 中添加虚拟 IP 地址
用于以主机命名的网站集的体系结构和设计
以主机命名的网站集使您可以将唯一的 DNS 名称分配到网站集。例如,您可以将其称为 http://TeamA.contoso.com 和 http://TeamB.contoso.com。这使您可以在相同的 Web 应用程序中部署许多具有唯一的 DNS 名称的网站。这还使主机提供商可以向许多客户扩展环境。如果不使用以主机命名的网站集,您的 SharePoint Web 应用程序将包含许多共享相同主机名称(DNS 名称)的基于路径的网站集。例如,团队 A 具有位于 https://contoso.com/sites/teamA 的网站集,而团队 B 具有位于 https://contoso.com/sites/teamB 的网站集。
我们建议使用以主机命名的网站集,除非要求必须使用具有备用访问映射的基于路径的网站(本文稍后将介绍)。本文将介绍如何使用 SharePoint Server 在建议的配置中实现以主机命名的网站集。本文最后的部分包含关于高级配置的信息:使用多个具有以主机命名的网站集的 Web 应用程序。
建议用于以主机命名的网站集的体系结构
建议用于部署网站的配置使用以主机命名的网站集,并且所有网站都位于单个 Web 应用程序内,如下图所示。
建议用于以主机命名的网站集的配置
图中建议的配置包含以下元素:
一个用于网站集的应用程序池。
一个用于网站集的 Web 应用程序,这些网站集在一个应用程序池中托管。
根网站集 (http://webapp.contoso.com)。
用于托管内容的以主机命名的网站集的多个示例网站:
已发布的具有用于人力资源、设施和采购的子网站的 Intranet 内容 (http://intranet.contoso.com)。
具有用于工作组 1、工作组 2 和工作组 3 的子网站的工作组网站 (http://teams.contoso.com)。
具有以下格式的网站 URL 的“My Sites”:webapp.contoso.comhttp://my.contoso.com/personal/<site_name>。
Web 应用程序中的网站数量和用于网站的 URL 对于该示例都不重要。
创建适用于以主机命名的网站集的应用程序,Web 应用程序的 URL 和根网站集将为 http://< webapp.contoso.com>/。
因为该配置与 Office 365 环境使用的体系结构相同,所以建议使用它部署网站。因此,这是经过最严格测试的配置。包括应用程序模型和请求管理在内的新功能都针对该配置进行了优化,它是未来最可靠的配置。
建议的配置不包含以下元素:
在具有多个区域的环境中启用应用。
混合以主机命名的网站集和基于路径的网站集(根网站集除外)。
多个具有以主机命名的网站集的 Web 应用程序。
以主机命名的网站集与基于路径的网站集
使用以主机命名的网站集时,将为 Web 应用程序中的每个网站集分配唯一的 DNS 名称。在将许多以主机命名的网站集部署到单个 Web 应用程序时,要增加服务器场的可扩展性,因为资源不会用于支持多个应用程序池和 Web 应用程序。
SharePoint Server 可以支持以主机命名的网站集和基于路径的网站集。下表将详细介绍两种选项之间的差异,并提供关于以主机命名的网站集的详细信息。
表:以主机命名的网站集和基于路径的网站集的对比
以主机命名的网站集 | 基于路径的网站集 | |
---|---|---|
创建网站 |
可以使用 Microsoft PowerShell 创建以主机命名的网站集。不可以使用 管理中心 创建以主机命名的网站集。 |
可以使用 管理中心 或 PowerShell 创建基于路径的网站集。 |
URL |
将为 Web 应用程序中的每个以主机命名的网站集分配唯一的 DNS 名称。 可以使用区域为以主机命名的网站分配最多 5 个 URL,包括虚拟 URL。 |
Web 应用程序中的所有基于路径的网站集都共享与 Web 应用程序相同的主机名(DNS 名称)。可以扩展 Web 应用程序以实现最多 5 个区域,并为每个区域创建不同的主机名。但是,用于区域的主机名将应用于 Web 应用程序内的所有网站集。 |
根网站集和搜索 |
爬网 Web 应用程序中的内容时需要根网站集。根网站集可以是用户无法访问的网站集。 |
通常,在 Web 应用程序中将单个基于路径的网站集用作根网站集。您可以使用托管路径创建 Web 应用程序中的额外网站集。 |
URL 映射 |
使用 PowerShell 命令管理 URL(Set-SPSiteURL、Remove-SPSiteURL 和 Get-SPSiteURL)。 |
使用备用访问映射管理 URL。 |
自助式网站创建 |
您需要将用于自助式网站创建的自定义解决方案与以主机命名的网站集一起使用。 默认安装的 SharePoint Server 中包含自助式网站创建功能,但此功能不可与以主机命名的网站集一起使用。 |
如果使用默认安装的 SharePoint Server 中包含的自助式网站创建功能,请创建基于路径的网站。 |
托管路径 |
将在服务器场级应用适用于以主机命名的网站集的托管路径,并且这些路径可用于所有 Web 应用程序。 必须使用 PowerShell 来创建用于以主机命名的网站集的托管路径。 |
将在 Web 应用程序级应用适用于基于路径的网站的托管路径。 可以使用 管理中心 或 Microsoft PowerShell 创建用于基于路径的网站集的托管路径。 |
为以主机命名的网站集设计和管理 URL
PowerShell cmdlet 可以为以主机命名的网站集管理 URL 映射,并使您可以将 URL 映射到单个网站集:
Set-SPSiteUrl - 添加或更改网站的 URL 映射。
Remove-SPSiteUrl - 从网站删除 URL 映射。
Get-SPSiteUrl - 查看网站集的所有 URL 和相关区域。
这些 cmdlet 为以主机命名的网站集提供类似于备用访问映射的 URL 映射功能。
区域和以主机命名的网站集
以主机命名的网站集可在任何区域中使用。以主机命名的网站集未限制为默认区域。如果需要,可以实现多个区域,并使用区域和以主机命名的网站集来配置不同的身份验证设置或策略。
备注
使用需要的不同区域扩展现有 Web 应用程序。
可以通过为每个区域分配 1 个 URL 来向单个网站集分配最多 5 个 URL。即使您通过仅实现 1 个区域来遵循建议的体系结构,您仍然可以为以主机命名的网站集分配最多 5 个 URL。这是因为如果没有通过扩展 Web 应用程序来实现区域,SharePoint Server 将使用默认区域。
例如,以下 URL 可提供对同一 Internet 网站的访问:
搜索爬网帐户需要使用集成 Windows 身份验证(NTLM 或 Kerberos)访问默认区域中的内容。因为声明身份验证允许一个区域中存在多种类型的身份验证,所以此要求不应影响其他身份验证要求。
托管路径和以主机命名的网站集
为同一网站集配置的 URL 可能具有不同的架构和域,但它们必须具有相同的托管路径,即在域后面的“/”之后命名的所有内容必须相同。例如,https://www.Contoso.com/sites/Site1 和 http://www.Fabrikam.com/sites/Site1 均可指向同一网站集,但 https://www.Contoso.com/sites/Site1 和 http://www.bar.com/sites/Project1 不能。
用于管理 URL 的 cmdlet 仅在主机名的根网站集(例如 https://www.Contoso.com)上运行。无法在根下的托管路径网站集(例如 https://www.Contoso.com/sites/Project1)上操作 cmdlet。以主机命名的网站集的根下的网站将继承该以主机命名的根网站集的 URL 设置。
使用以主机命名的网站集进行 SSL 外部终止
当代理服务器终止一个 SSL 请求,然后使用 HTTP 将该请求转发到 Web 服务器时,会发生 SSL 外部终止。若要使用以主机命名的网站集实现 SSL 外部终止,终止 SSL 连接的设备(例如反向代理服务器)必须可以生成自定义 HTTP 标头:Front-End-Https:开。有关详细信息,请参阅本文后面的将以主机命名的网站集与外部 SSL 终止一起使用。
以主机命名的网站集使用的协议取决于 URL 参数的值,您在使用 Set-SPSiteURL cmdlet 将 URL 映射到特定区域时指定了该值:http 或 https。请确保用于 Web 应用程序的 IIS 绑定、SSL 证书、反向代理配置以及其他必要配置都完整。
何时使用基于路径的网站集
虽然我们建议对大多数体系结构使用以主机命名的网站集,但如果适用于以下任意条件,您应使用传统的基于路径的网站集和备用访问映射:
需要使用默认安装的 SharePoint Server 中包含的自助式网站创建功能。
这不适用于自定义自助式网站创建解决方案。
需要 SSL 终止,但无法配置您的 SSL 终止设备以生成必要的自定义 HTTP 标头。
如果 SSL 终止不是必需的,您仍可以通过这些设备对以主机命名的网站集使用 SSL 桥接。
您计划使用不同的应用程序池来获得它们提供的额外安全性,或者使用多个代理组。
在这些情况下,可以使用以主机命名的网站集。但是,跨 Web 应用程序为以主机命名的网站集映射 URL 时需要的额外配置大大超过了使用以主机命名的网站集的好处。有关详细信息,请参阅使用多个具有以主机命名的网站集的 Web 应用程序。有关创建基于路径的网站集的详细信息,请参阅在 SharePoint Server 中创建网站集。
使用主机头与以主机命名的网站集
主机头允许 Web 服务器在相同 IP 地址和端口组合上托管多个网站。如果传入 HTTP 请求包括主机头名称且 IIS 中配置了匹配主机头,IIS 将用相应 Web 网站的内容回应。
在 Web 应用程序(IIS 网站)级别配置主机头,它们是网站绑定属性之一。
了解 IIS 中主机头和以主机命名的网站集之间的区别很重要。IIS 网站级主机头仅用于基于路径的网站集。
使用以主机命名的网站集时,SharePoint 负责根据通过 IIS 的传入请求解析地址的正确网站。在大部分情况下,应用 IIS 网站级的主机头绑定可以通过 IIS 网站来访问以主机命名的网站集。这是因为 IIS 不会对与主机头绑定不同的主机名请求进行响应。
重要
如果现有 Web 应用程序具有主机头绑定集,IIS 不会从以主机命名的网站集返回页面,除非您从 IIS 删除绑定。有关详细信息,请参阅更新 SharePoint Server 的 Web 应用程序 URL 和 IIS 绑定。
在相同的 Web 应用程序中混合以主机命名的网站集和基于路径的网站集
可以在相同的 Web 应用程序中使用以主机命名的网站集和基于路径的网站集。为了确保用户可以访问两种类型的网站集,不要在 Web 应用程序(包括用于从 Web 应用程序扩展的区域的 IIS 网站)的 IIS 网站上放置主机头绑定。如果现有 Web 应用程序具有主机头绑定集,IIS 不会从以主机命名的网站集返回页面,除非您从 IIS 删除绑定。
My Sites
在将两种类型的网站集与“My Sites”一起使用时,请考虑实现自己的设置过程以将“My Sites”创建为以主机命名的网站集,而不是基于路径的网站集。
用于以主机命名的网站集的部署和配置
创建用于以主机命名的网站集的 Web 应用程序
如果您不希望在相同的服务器上配置两个或两个以上共享相同端口号的 IIS 网站,请在“默认”区域中创建 Web 应用程序。不要在 IIS 网站级应用主机头绑定。
为以主机命名的网站集创建 Web 应用程序的具体步骤
确认您具有以下成员身份:
SQL Server 实例上的 securityadmin 固定服务器角色。
要更新的所有数据库上的 db_owner 固定数据库角色。
运行 Microsoft PowerShell cmdlet 的服务器上的 管理员 组。
管理员可使用 Add-SPShellAdmin cmdlet 来授予使用 SharePoint Server cmdlet 的权限。
备注
如果您不具有这些权限,请联系您的安装管理员或 SQL Server 管理员来请求权限。有关 PowerShell 权限的其他信息,请参阅 Add-SPShellAdmin。
打开“SharePoint 命令行管理程序”。
在 PowerShell 命令提示符(即 PS C:\>)处,键入以下语法:
New-SPWebApplication -Name 'Contoso Sites' -port 80 -ApplicationPool ContosoAppPool -ApplicationPoolAccount (Get-SPManagedAccount 'Contoso\JDoe') -AuthenticationProvider (New-SPAuthenticationProvider -UseWindowsIntegratedAuthentication)
创建根网站集
根网站集是任何 Web 应用程序的要求。这也是爬网内容的需求。该网站集必须与 Web 应用程序具有相同的 URL。当前,SharePoint 不允许创建与 Web 应用程序具有相同 URL 的以主机命名的网站集。因此,将根网站集创建为基于路径的网站集。
以下示例将创建作为根网站集的空网站集:
New-SPSite 'http://<servername>' -Name 'Portal' -Description 'Portal on root' -OwnerAlias 'contoso\administrator' -language 1033 -Template 'STS#0'
内容源中仅显示 Web 应用程序的根网站集。虽然内容源中没有显示 Web 应用程序的其他以主机命名的网站集,但在默认情况下搜索将自动对其他以主机命名的网站集进行爬网。
创建以主机命名的网站集
您必须使用 Microsoft PowerShell 创建以主机命名的网站集。不可以使用 SharePoint Server 管理中心 Web 应用程序来创建以主机命名的网站集,但可以在创建网站集后使用 管理中心 进行管理。
可以结合使用 Microsoft PowerShell New-SPSite cmdlet 和 -HostHeaderWebApplication 参数,创建以主机命名的网站集,如以下示例所示:
创建以主机命名的网站集的具体步骤
确认您具有以下成员身份:
SQL Server 实例上的 securityadmin 固定服务器角色。
要更新的所有数据库上的 db_owner 固定数据库角色。
运行 Microsoft PowerShell cmdlet 的服务器上的 管理员 组。
管理员可使用 Add-SPShellAdmin cmdlet 来授予使用 SharePoint Server cmdlet 的权限。
备注
如果您不具有这些权限,请联系您的安装管理员或 SQL Server 管理员来请求权限。有关 PowerShell 权限的其他信息,请参阅 Add-SPShellAdmin。
打开“SharePoint 命令行管理程序”。
在 PowerShell 命令提示符(即 PS C:\>)处,键入以下语法:
New-SPSite 'http://portal.contoso.com' -HostHeaderWebApplication (Get-SPWebApplication 'Contoso Sites') -Name 'Portal' -Description 'Customer root' -OwnerAlias 'contoso\administrator' -language 1033 -Template 'STS#0'
这会在 URL 为 http://webapp.contoso.com 的 SharePoint Server Web 应用程序上,创建 URL 为 http://portal.contoso.com 的以主机命名的网站集。
将托管路径与以主机命名的网站集一起使用
可以将以主机命名的网站集和托管路径一起实现。主机提供商可以为相同的客户提供多个网站集,并且每个网站集都共享客户的唯一主机名,但通过主机名后的 URL 路径进行区分。每个服务器场限制具有 20 个用于以主机命名的网站集的托管路径。有关详细信息,请参阅 Web 应用程序限制。
以主机命名的网站集的托管路径与基于路径的网站集的托管路径的行为不同。以主机命名的网站集的托管路径可用于服务器场内所有以主机命名的网站集,无论以主机命名的网站集位于哪个 Web 应用程序内。相反,基于路径的网站集的托管路径仅适用于相同 Web 应用程序中的网站。基于路径的网站集的托管路径不适用于其他 Web 应用程序中的基于路径的网站集。一种类型的网站集的托管路径不适用于另一种类型的网站集。
若要创建托管路径,您必须先创建所需基 URL 的网站集。例如,若要创建 http://teams.contoso.com/*finance*,您必须先创建 http://teams.contoso.com 的网站集。
若要创建与以主机命名的网站集一起使用的托管路径,请将 PowerShellNew-SPManagedPath cmdlet 与 HostHeader 参数一起使用,如以下示例所示:
New-SPManagedPath 'departments' -HostHeader
还可以使用 Explicit 参数来创建显式托管路径。
以下示例将显示在托管路径上创建的以主机命名的网站集:
New-SPSite 'http://portal.contoso.com/departments/marketing' -HostHeaderWebApplication (Get-SPWebApplication 'Contoso Sites') -Name 'Marketing' -Description 'Portal Marketing' -OwnerAlias 'contoso\administrator' -language 1033 -Template 'STS#0'
要删除现有的托管路径,请使用 PowerShell Remove -SPManagedPath cmdlet,如以下示例所示:
Remove-SPManagedPath 'departments' -HostHeader
即使存在网站集,也可以使用 PowerShell 删除托管路径。如果删除托管路径,则不能再访问网站集。要访问现有网站集,请使用 PowerShell 重新创建托管路径。
将 URL 映射到以主机命名的网站集
创建新的主机名网站集时,仍存在默认备用访问映射,但不能使用。请使用 PowerShell 命令来为以主机命名的网站集管理 URL 映射。
向现有网站添加映射:
Set-SPSiteUrl (Get-SPSite 'http://teams.contoso.com') -Url 'http://teamsites.contoso.com' -Zone Intranet
将每个 URL 映射应用于单个区域。映射 URL 时,请使用以下区域名称之一:
默认
Intranet
Internet
自定义
Extranet
如果不指定 Zone 参数,并且使用新的 URL 映射条目,将使用默认区域。仍然存在限制,即唯一网站集只有 5 个 URL。
删除网站的映射:
Remove-SPSiteUrl 'http://teamsites.contoso.com'
显示网站的所有 URL 映射:
Get-SPSiteUrl -Identity (Get-SPSite 'http://teams.contoso.com')
为以主机命名的网站集配置 SSL 证书
可以配置使用 SSL 的单个 Web 应用程序,然后在该 Web 应用程序内创建多个以主机命名的网站集。若要通过 SSL 浏览网站,必须将服务器证书安装并分配到 IIS 网站。Web 应用程序内的每个以主机命名的网站集都共享分配到 IIS 网站的单个服务器证书。
您需要获得通配符证书或主题备用名称 (SAN) 证书,然后使用与该证书匹配的以主机命名的网站集 URL 格式。例如如果获得 *.contoso.com 通配符证书,必须生成 https://site1.contoso.com、https://site2.contoso.com 等以主机命名的网站集 URL,以允许这些网站通过浏览器 SSL 验证。但是,如果需要用于网站的唯一的二级域名,必须创建多个 Web 应用程序,而不是多个以主机命名的网站集。
若要为以主机命名的网站集配置 SSL,请在创建 Web 应用程序时启用 SSL。这将创建具有 SSL 绑定而不是 HTTP 绑定的 IIS 网站。创建 Web 应用程序之后,请打开 IIS 管理器,然后将证书分配到 SSL 绑定。然后,您可以在该 Web 应用程序中创建网站集。
如果要使用以主机命名的网站集实现多个区域,请确保证书和绑定(SSL 或 HTTP)的配置适用于每个区域和相应的 IIS 网站。
将以主机命名的网站集与外部 SSL 终止一起使用
可以将以主机命名的网站集与外部 SSL 终止一起使用。在将 SSL 终止与以主机命名的网站集一起使用时,存在多项要求:
至少一个 IIS 网站应该具有端口 80(或终止程序将请求转发到的任何端口)上的绑定。Microsoft 建议您使用带有 HTTP/80 的 Web 应用程序的 IIS 网站(或用于 Web 应用程序的区域的 IIS 网站)。
SSL 终止程序或反向代理必须保留来自客户端的原始 HTTP 主机头。
如果客户端 SSL 请求发送到默认的 SSL 端口 (443),SSL 终止程序或反向代理必须将解密的 HTTP 请求转发到默认 HTTP 端口 (80) 上的前端 Web 服务器。如果客户端 SSL 请求发送到非默认 SSL 端口,SSL 终止程序或反向代理必须将解密的 HTTP 请求转发到相同的非默认 HTTP 端口 (80) 上的前端 Web 服务器。
终止 SSL 连接的设备(例如反向代理服务器)必须可以生成自定义 HTTP 标头:Front-End-Https:开。这是 Outlook Web Access (OWA) 所用的同一自定义标头:Front-End-Https:开/关。该部分稍后将介绍关于该自定义标头的详细信息。
若要将以主机命名的网站集与外部 SSL 终止一起使用,请按照通常为 SSL 终止配置 Web 应用程序的方法进行配置,并确保它符合上述要求。在此方案中,SharePoint Server 将使用 HTTPS 而不是 HTTP 在该 Web 应用程序中呈现以主机命名的网站集的链接。
反向代理服务器可以发布 SharePoint Server 以主机命名的网站集并执行外部 SSL 终止。在此方案中,反向代理服务器将最终用户和 SharePoint Web 前端服务器之间的联系类型从 SSL/TLS 更改为 HTTP,反之亦然。该方案中的反向代理服务器将请求转发到 SharePoint Web 前端服务器时,会在用户请求中插入额外的 HTTP 标头。该额外 HTTP 标头可以向 SharePoint Server 指示最终用户启动的连接的类型,以便 SharePoint Server 在响应中适当呈现 URL。HTTP 标头名称为“Front-End-Https”,以下是其可接受的值。
表:Front-End-Https 标头值
值 | 说明 |
---|---|
位置 |
反向代理服务器通过加密的(SSL 或 TLS)HTTPS 连接来接收最终用户的请求。例如,Front-End-Https:开。 |
关 |
反向代理服务器通过未加密的 HTTP 连接来接收最终用户的请求。 |
这些值不需要区分大小写。例如,on、ON、On 和 oN 都可以接受。
该自定义标头仅适用于以主机命名的网站集。它不适用于基于路径的网站集。
以下示例将显示在 https 上创建的以主机命名的网站集:
New-SPSite 'https://portal.contoso.com' -HostHeaderWebApplication (Get-SPWebApplication 'Contoso Sites') -Name 'Portal' -OwnerAlias 'contoso\administrator' -language 1033 -Template 'STS#0'
此示例在 URL 为 http://webapp.contoso.com 的 SharePoint Server Web 应用程序上,创建 URL 为 http://portal.contoso.com 的以主机命名的网站集。
在具有多个区域的环境中启用应用程序
备注
此部分仅适用于 SharePoint Server 2013
2013 年 3 月的公共更新使您可以为每个 Web 应用程序区域配置应用程序域,并使用备用访问映射和主机头 Web 应用程序配置。发布该更新之前,仅可以托管一个应用程序域,并且它必须位于“默认”区域。您不可以在备用访问映射或主机头 Web 应用程序上使用应用程序域。
若要解决该问题,请应用 SharePoint Server 累积更新服务器修补程序包:2013 年 3 月 12 日,并参阅适用于 SharePoint 2013 的更新。
将基于路径的网站集迁移到以主机命名的网站集
确定现有 Web 应用程序中的以主机命名的网站集
从 SharePoint Server 2010 迁移到 SharePoint Server 时,我们建议您确定 SharePoint Server 2010 网站的创建方式。如果网站创建为基于路径的网站,请考虑将这些网站迁移到以主机命名的网站集。如果一起实现了以主机命名的网站和基于路径的网站,请识别基于路径的网站,并考虑将这些网站迁移到以主机命名的网站集。若要完成该操作,请查找“HostHeaderIsSiteName”标志。
以下示例将确定给定 Web 应用程序中的网站创建为以主机命名的网站或基于路径的网站:
$webApp = Get-SPWebapplication 'http://webapp.contoso.com'
foreach($spSite in $webApp.Sites)
{
if ($spSite.HostHeaderIsSiteName)
{ Write-Host $spSite.Url 'is host-named' }
else
{ Write-Host $spSite.Url 'is path based' }
}
将基于路径的网站集转换为以主机命名的网站集
可以将基于路径的网站集转换为以主机命名的网站集,反之亦然。必须使用 PowerShell 备份和还原 cmdlet 来转换网站集。不能使用用于附加和分离或者装载和卸载内容数据库的 SharePoint 管理中心网站 或 PowerShell cmdlet 来转换网站集。
以下示例将标准网站集转换为以主机命名的网站集:
Backup-SPSite -Identity 'http://portalOld.contoso.com' -Path 'c:\Backup\portalContoso.bak' -Force -UseSQLSnapShot
Restore-SPSite -Identity 'http://portal.contoso.com' -Path 'c:\Backup\portalContoso.bak' -DatabaseName 'portal_content' -Force -HostHeaderWebApplication 'http://webapp.contoso.com' -Confirm:$false
重要
您无法在 SharePoint Server 2010 环境中运行 Backup-SPSite cmdlet,也无法从 SharePoint Server 环境使用 Restore-SPSite cmdlet。备份和还原操作应从相同的主产品版本执行。您可以在迁移之前将 SharePoint Server 2010 中基于路径的网站集转换为以主机命名的网站集,或者在转换到以主机命名的网站集之前连接 SharePoint Server 中基于路径的网站集。
使用多个具有以主机命名的网站集的 Web 应用程序
如果使用多个 Web 应用程序,将为系统添加更多操作开销和复杂性。我们建议您为网站集使用一个 Web 应用程序。但是,以下原因可能影响您,使您跨多个 Web 应用程序实现网站集:
组织的安全策略要求单独的 Web 应用程序或应用程序池。
需要以不同方式配置 Web 应用程序。
组织需要使用多个代理组。
在服务器场中使用多个 Web 应用程序实现以主机命名的网站集更加复杂,因为您必须完成更多配置步骤。例如,使用以主机命名的网站的 URL 可以分布于共享单个服务器场中同一端口的多个 Web 应用程序。此方案需要更多配置步骤以确保请求映射到正确的 Web 应用程序。必须通过配置单独的 IP 地址以代表每个 Web 应用程序来手动配置服务器场中的每个 Web 服务器上的映射。还必须创建和管理主机头绑定来为每个网站分配唯一的 IP 地址。脚本可跨服务器管理和复制此配置;但是,这将增加解决方案的复杂性。每个唯一 URL 还需要 DNS 中的映射。一般来说,如果必须使用多个 Web 应用程序,建议使用具有备用访问映射的基于路径的网站集。
以下两个表将对比三种不同的用于实现网站集的设计选择。这些表旨在帮助您了解每种方法的后果,以及配置如何根据体系结构发生变化。
表:设置网站集的不同设计选择的结果
服务器场中的所有网站均合并到一个 Web 应用程序的以主机命名的网站集 | 具有备用访问映射和多个 Web 应用程序的基于路径的网站集 | 服务器场中具有多个 Web 应用程序的以主机命名的网站集 | |
---|---|---|---|
网站集设置 |
使用 Microsoft PowerShell 或自定义网站集设置解决方案来设置网站。 |
使用 管理中心 或 Microsoft PowerShell 来部署网站。 |
使用 Microsoft PowerShell 或自定义网站集设置解决方案来设置网站。 |
URL 管理 |
可以在 DNS 中映射所有网站集以指向代表 Web 应用程序的单个 IP 地址。 |
如果实现了多个区域,请为每个网站 URL 配置备用访问映射。每个区域还需要 DNS 中的映射。 |
需要其他配置以确保共享同一端口的网站的请求映射到正确的 Web 应用程序。 每个唯一主机名还需要 DNS 中的映射。需要手动进行该配置,并且必须在每个网站的服务器场中的每个 Web 服务器上完成它。 |
额外 URL |
您可以将最多五个 URL 分配给以主机命名的网站集,每个区域一个。无需将 Web 应用程序扩展到多个区域。如果未实现区域,则使用默认区域。 |
网站集的 URL 数量限制为 5,因为这是允许的区域数量。 |
您可以将最多五个 URL 分配给以主机命名的网站集,每个区域一个。无需将 Web 应用程序扩展到多个区域。如果未实现区域,则使用默认区域。 |
服务应用程序 |
服务器场中的所有网站都使用单个服务应用程序组。 |
您可以为不同的 Web 应用程序实现自定义服务应用程序组。 |
您可以为不同的 Web 应用程序实现自定义服务应用程序组。 |
区域 |
您无须实现多个区域来为相同的网站集实现不同的 URL。如果未实现区域,则使用默认区域。 |
必须使用区域才能为同一网站集实现不同 URL。 |
您无须实现多个区域来为相同的网站集实现不同的 URL。如果未实现区域,则使用默认区域。 |
身份验证 |
使用一个 Web 应用程序时,身份验证选项限制为 5 个区域。但是,您可以在一个区域上实现多个身份验证方法。 |
您可以为每个 Web 应用程序实现不同的身份验证和区域设计。 |
您可以为每个 Web 应用程序实现不同的身份验证和区域设计。 |
身份验证 |
在域 URL 之间提供客户端脚本隔离。 |
如果需要,还可以将 Web 应用程序隔离到专门的应用程序池,以实现进程隔离。 在域 URL 之间提供隔离。 |
如果需要,还可以将 Web 应用程序隔离到专门的应用程序池,以实现进程隔离。 在域 URL 之间提供隔离。 |
策略 |
可以使用区域将不同策略分配到以主机命名的网站。 |
可以在 Web 应用程序级使用策略以强制实施权限,不管对各网站或文档配置的权限如何。此外,可为不同区域实现不同的策略。 |
可为不同的 Web 应用程序实现不同的策略以强制实施权限,不管对各网站或文档配置的权限如何。 此外,可为不同区域实现不同的策略。 |
还可能影响设计决策的可伸缩性数量包括网站集、内容数据库和托管路径建议的最大数。
下表总结了根据本文中介绍的三个设计选项中的每一个管理 URL 所必需的配置。
表:不同网站集设计所需的配置
服务器场中的所有网站均合并到一个 Web 应用程序的以主机命名的网站集 | 具有备用访问映射和多个 Web 应用程序的基于路径的网站集 | 服务器场中具有多个 Web 应用程序的以主机命名的网站集 | |
---|---|---|---|
在 SharePoint Server 内 |
|
|
|
在 IIS 中 |
为 Web 应用程序中的所有以主机命名的网站(域)关联 SSL 证书(通配符证书或 SAN 证书)。 |
在 IIS 中为每个区域(每个区域是 IIS 中的单独 Web 应用程序)关联 SSL 证书。 |
为 Web 应用程序中的以主机命名的网站(域)关联 SSL 证书(通配符证书或 SAN 证书)。 在服务器场中的每个 Web 服务器上且对于共享端口的每个 Web 应用程序:
|
如果在不同 IP 地址上使用多个 Web 应用程序,可能需要为用于每个服务器的 NIC、DNS 和负载平衡器完成额外配置。
创建多个具有以主机命名的网站集的 Web 应用程序
若要在相同的服务器和端口上将多个 Web 应用程序和以主机命名的网站集一起运行,必须向 Web 应用程序分配不同的 IP 地址。此类体系结构要求您将 IP 地址添加到 Web 服务器,并配置网络路由器,使其将主机名指向 Web 应用程序的 IP 地址。
备注
可以创建不具有主机头的 Web 应用程序。如果您创建不具有主机头的 Web 应用程序,则不可以在相同的 Web 服务器上创建具有以主机命名的网站集的多个 Web 应用程序。
创建用于以主机命名的网站集的多个 Web 应用程序的过程包含以下任务:
创建多个 Web 应用程序。
在服务器场的每个 Web 服务器上的 IIS 中添加新的虚拟 IP 地址。
创建多个适用于以主机命名的网站集的 Web 应用程序
以下示例将创建 Web 应用程序:
New-SPWebApplication -Name 'webapp' 'webapp.contoso.com' -port 80 -ApplicationPool ContosoAppPool -ApplicationPoolAccount (Get-SPManagedAccount 'Contoso\JDoe') -AuthenticationProvider (New-SPAuthenticationProvider -UseWindowsIntegratedAuthentication)
为每个 Web 应用程序重复该任务。
在 IIS 中添加虚拟 IP 地址
必须在托管 Web 应用程序的所有服务器上应用 IP 绑定。将休眠命令设置为 60 秒,以确保在服务器场的所有服务器上设置 IP 绑定之后,再删除 Web 应用程序上的现有主机头。远程脚本可用于该作业。
使用以下命令将唯一的 IP 绑定添加到创建的每个 Web 应用程序,然后从这些 Web 应用程序删除主机头绑定。
Import-Module WebAdministration
# add empty binding to webapp on IP 192.168.10.20
New-WebBinding -Name 'webapp' -IPAddress '192.168.10.20' -HostHeader ''
Sleep 60
# remove existing binding webapp.contoso.com from existing web application
Get-WebBinding -Name 'webapp' -HostHeader 'webapp.contoso.com' | Remove-WebBinding