【IT168 专稿】文介绍如何创建可用于安装和配置 Search Server 2008 基本功能的脚本。为了便于创建和管理以及实现可移植,我们将创建三个单独的脚本,每个脚本在安装中将执行不同的功能。
注意:可以将所有脚本合并到一个主脚本中。但是,我们发现将其分开并从主脚本对其进行调用是非常好的方案。
本文介绍如何更改可从 http://www.mindsharp.com 高级内容区域免费下载的现有脚本,或者如何创建可用于在服务器场环境中安装 Search Server 2008 的新脚本。基本过程列出如下:
创建一个名为 config.xml 的非常简单的配置文件。setup.exe 使用此配置文件来确定需要安装哪些二进制文件、安装方法以及产品密钥信息。
创建三个脚本。
bits.cmd 此脚本将在特定安装中安装二进制文件,并且需要配置文件 config.xml。
farm-build.cmd 此脚本将在服务器场中生成初始配置数据库、创建和设置管理中心以及启动所需的服务。
farm-connect.cmd(可选) 如果在搜索服务器场中拥有多台服务器,则需要此脚本将其他服务器连接到先前创建的配置数据库中。
按创建脚本的顺序来运行上述脚本。
调试并修复脚本中的所有错误 - 例如:录入错误、用户名和密码错误以及服务器名称错误。
继续测试脚本直至没有错误为止。
重要说明:如果要进行远程安装或者使用脚本进行灾难恢复,则安装时不能出现任何错误,这一点非常重要。
开始之前
在继续进行脚本创建的阶段,必须确定如何部署 Search Server 2008 服务器场。如果使用独立安装,则安装程序将安装 Microsoft SQL Server 2005 Express Edition。虽然这样可以显著地简化安装,但是大多数管理员不会使用此方法进行安装,因为这将局限于单一服务器。因此,本文介绍了使用 SQL Server 2005 Standard Edition 或 SQL Server 2005 Enterprise Edition 的 Search Server 2008 安装。
注意:这些脚本未使用变量进行重构,原因是每个服务器场安装都是唯一的。必须编辑脚本来反映特定的实施。例如,这些脚本是针对运行名为 app1 的 SQL Server 的计算机,以及运行名为 app2 的 Search Server 2008 的计算机设计的。必须根据需要编辑服务器名称、Active Directory 域和用户名。
先决条件和假设条件
查看硬件和软件要求,这些要求会在 http://technet.microsoft.com/zh-cn/library/bb905370.aspx中定期更新。
由于这些脚本也需要 Active Directory 名称、用户名、密码和服务器名称等基本信息,所以我们使用了以下必须针对部署更改的名称。
contoso.msft - Active Directory 名称
contoso\mossfarm - 服务器场帐户(中心管理员应用程序池 ID)
contoso\mosscrawler - 搜索爬网程序帐户(Microsoft Office SharePoint Server 2007 和 Windows SharePoint Services 3.0 的默认内容访问帐户)
contoso\mossservice - 核心服务帐户
contoso\sspapid - 共享服务主机应用程序池标识
contoso\sspservice - SSP 服务帐户
contoso\portalapid - 搜索门户应用程序池标识
服务器场管理员帐户必须是 SQL Server 中 dbcreator 和 securityadmin 固定服务器角色的成员,另外,在安装过程中还必须为本地服务器上 Administrators 组的成员;同时在安装过程中还将自动被授予所有其他权限。必须以服务器场管理员帐户登录以执行安装,或者创建另一个帐户用作安装程序帐户。
如果需要其他服务帐户隔离,则应根据需要更改脚本。这些脚本假设有一个公共服务帐户。如果需要单个应用程序池和关联的标识,则应相应地更改脚本。这些脚本可为已创建的每个 Web 应用程序创建单独的应用程序池和关联的标识。
针对脚本的测试服务器场中的服务器,如下所示:
App1 - Microsoft SQL Server 2005 Service Pack 2 (SP2) 默认安装和 Active Directory contoso.msft 域的成员。
App2 - Contoso.msft Active Directory 域的成员。
QueryN - 将使用 farm-connect.cmd 脚本的查询服务器。它们还必须是 Active Directory contoso.msft 域的成员。
修改 config.xml 并安装二进制文件
若要开始编写 Search Server 2008 安装的脚本,必须创建一个来自安装媒体的 config.xml 文件的副本。setup.exe 将使用 config.xml 文件作为安装二进制文件的说明。在完成对此文件副本的修改后,该文件会在安装时使用并会影响安装软件的类型和安装方式,并影响位于安装媒体上的产品 ID 的自动输入,如果有一个图形表示的安装进程时还可以使用它进行定义。
可以在安装媒体上的 x86\Files\Setup<type> 下找到 32 位媒体的若干示例,在 x64\Files\Setup<type> 下找到 64 位媒体的若干示例。如果使用的是可下载的 Search Server 2008 试用版,则必须先在命令提示符下运行以下命令解压缩这些内容:
searchservertrial.exe /extract: <驱动器> :\ <文件夹>
其中:
<驱动器> 是要解压缩可执行文件的内容所在的驱动器号。
<文件夹> 是要解压缩可执行文件内容所在的文件夹的名称。
在 <驱动器>:\<文件夹>\files\SetupFarmSilent 目录下,将找到一个 config.xml 副本。若要完全自动安装 Search Server 2008,必须编辑此文件。对于脚本创建和测试,应创建一个路径,如 c:\scripts,然后将 config.xml 文件复制到此位置。我们建议不要使用 XML 编辑器(如 Microsoft Visual Studio)编辑此文件。建议使用 notepad.exe 以避免格式被更改。以下是默认 config.xml 文件的一个示例。
<Configuration>
<Package Id="sts">
<Setting Id="LAUNCHEDFROMSETUPSTS" Value="Yes"/>
<Setting Id="REBOOT" Value="ReallySuppress"/>
<Setting Id="SETUPTYPE" Value="CLEAN_INSTALL"/>
</Package>
<Logging Type="verbose" Path="%temp%" Template="Search Server Setup(*).log"/>
<Display Level="none" CompletionNotice="no" />
<Setting Id="SERVERROLE" Value="APPLICATION"/>
<Setting Id="USINGUIINSTALLMODE" Value="0"/>
</Configuration>
修改 config.xml 之前
根据必须安装的二进制文件和服务类型,可以在要执行的两种安装类型中进行选择,选项如下所示:
SINGLESERVER SINGLESERVER 选项(通过修改"SERVERROLE"参数进行设置)将安装 Microsoft SQL Server 2005 Express Edition,并同时安装 Search Server 2008 二进制文件。本文不介绍如何使用此选项的相关说明。
APPLICATION APPLICATION 选项将安装支持 Search Server 2008(除了 SQL Server)所需的所有二进制文件。必须已安装了 SQL Server 2005 Standard Edition 或 Enterprise Edition 的实例,该实例可通过承载 Search Server 2008 的服务器进行访问。这是本文所使用的安装选项。
修改 config.xml
"显示级别"设置应设置为"无",这是因为将其设置为"基本"会阻止安装脚本使用自定义参数。同时,还应将设置"USINGUIINSTALLMODE"保留为"0"。
接下来,必须插入安装媒体上找到的产品 ID 项(PIDKEY 值)。以下示例显示了这些设置。
<Configuration>
<Package Id="sts">
<Setting Id="LAUNCHEDFROMSETUPSTS" Value="Yes"/>
<Setting Id="REBOOT" Value="ReallySuppress"/>
<Setting Id="SETUPTYPE" Value="CLEAN_INSTALL"/>
</Package>
<Logging Type="verbose" Path="%temp%" Template="Search Server Setup(*).log"/>
<Display Level="none" CompletionNotice="no" AcceptEULA="Yes" />
<PIDKEY Value="D2KBC-9JQ6T-4P6C2-F7BFF-BB96D" />
<Setting Id="SERVERROLE" Value="APPLICATION"/>
<Setting Id="USINGUIINSTALLMODE" Value="0"/>
</Configuration>
注意:前一示例使用 Search Server 2008 试用版的密钥。必须提供该产品完整功能版的密钥。
如果是远程安装,则需要稳固的日志记录支持。因此,请确保定义一个可从远程位置进行访问的日志记录位置。默认的日志记录位置是 %temp%。此位置仅用于二进制文件安装,并非用于服务器场设置。服务器场设置的日志位于 12 \Logs 目录下。
创建 bits.cmd 脚本
bits.cmd 脚本用于安装二进制文件。它使用 setup.exe 并引用修改的 config.xml 文件。使用以下示例创建此脚本。
:: Installs binaries
:: Requires .NET2, .NET3, and IIS. As an alternative run the prerequisite installer.
@echo off
c:\searchiso\setup.exe /config c:\scripts\config.xml
此时,创建了第一个脚本,该脚本在服务器场的第一台服务器上安装二进制文件。还必须创建服务器场(服务器场 = 配置数据库)并创建所需的 Web 应用程序。
创建 farm-build.cmd 脚本
二进制文件安装完成后,必须继续设置 Search Server 2008 服务器场。请记住,服务器"场" = 配置数据库。一个完整的服务器场通常有多个服务器。但是,就本文而言,我们将在一台计算机上安装 Search Server 2008 。这样做将不会防碍日后扩展此服务器场。我们不会在本文中讨论生成多服务器场的方法。有关详细信息,请参阅 规划冗余性 (Search Server 2008)。我们将重点介绍如何使用 psconfig.exe 和 stsadm.exe 命令生成脚本以设置单个服务器场。
注意:在本文的结尾处有一个简短的示例脚本,该脚本显示了将其他服务器连接到服务器场的方法。
使用 bits.cmd 安装二进制文件之后,即可访问 12 配置单元中的 psconfig.exe,具体路径为 %COMMONPROGRAMFILES %\ Microsoft Shared\web server extensions\12\BIN\psconfig.exe。若要创建服务器场,请定义 SQL Server 实例和数据库的名称,如下所示:
psconfig.exe -cmd configdb -create -server app1 -database ContosoSearch_SharePoint_ConfigDB -user contoso\mossfarm -password P@ssw0rd -admincontentdatabase Central_Admin_Content
前面的命令通过名为 ContosoSearch_SharePoint_ConfigDB 的配置数据库在名为 app1 的 SQL Server 实例上创建一个服务器场,并且还创建管理中心的内容数据库和嵌入网站集。这种情况在使用图形用户界面时会发生,只是看不到而已。
注意:我们使用 contoso\mossfarm 帐户作为安装程序帐户。在安装过程中此帐户只需要管理权限,可以在安装完成后删除其本地管理员的权限。
下一步是在服务器场的至少一台服务器上设置管理中心。在创建服务器场时已经创建了 Web 应用程序。但是,仍需设置 Internet Information Services (IIS) 服务器以呈现该内容。在本示例中,我们将使用以下命令在服务器场的第一台服务器 app2 上安装:
psconfig.exe -cmd adminvs -provision -port 12345 -windowsauthprovider onlyusentlm
管理中心设置完成后,必须安装与已安装的服务器角色关联的所有服务。使用以下命令来执行:
psconfig.exe -cmd services install
接下来非常重要的一步就是在注册表设置和文件系统上设置安全性。如果不执行此步骤,也可顺利完成安装。但是,会遇到其他错误。
psconfig.exe -cmd secureresources
创建了服务器场、设置了管理中心、安装了服务并且对资源进行了安全保护之后,必须启动所需的服务,尤其是搜索服务。首先,通过使用 stsadm.exe(位于 12 配置单元 \Bin 目录下)启动 Search Server 2008。应该定义参数,例如性能级别和索引位置。
注意:虽然以下脚本示例显示了 c:\ 为索引位置,但是将索引文件放置在卷上(而不是系统驱动器)才是非常好的方案。
stsadm.exe -o osearch -action start -role query -farmcontactemail administrator@contoso.msft -farmperformancelevel maximum -farmserviceaccount "contoso\mossservice" -farmservicepassword P@ssw0rd -propagationlocation c:\indexes
启动搜索服务后,使用以下命令启动 Windows SharePoint Services 3.0 搜索:
stsadm.exe -o spsearch -action start -farmserviceaccount contoso\mossservice -farmservicepassword P@ssw0rd -farmcontentaccessaccount contoso\mosscrawler -farmcontentaccesspassword P@ssw0rd -databaseserver app1 -databasename Contoso_WSS_App2_Search
此时,请使用以下命令验证是否已经正确安装了所有的功能:
psconfig.exe -cmd installfeatures
现在,必须创建 Web 应用程序来承载 Search Server 2008 的共享服务提供程序。
stsadm.exe -o extendvs -url http://ssp.contoso.msft -exclusivelyusentlm -databaseserver app1 -databasename Contoso_WSS_Content_SSP -donotcreatesite -description "Search Admin Host" -sethostheader -apidname SSP -apidtype configurableid -apidlogin contoso\sspapid -apidpwd P@ssw0rd
创建了承载共享服务管理网站的 Web 应用程序后,必须创建共享服务提供程序以管理搜索,如下例所示:
stsadm.exe" -o createssp -title "Contoso Search" -url http://ssp.contoso.msft -ssplogin contoso\sspservice -indexserver app2 -indexlocation c:\indexes -ssppassword P@ssw0rd -sspdatabaseserver app1 -sspdatabasename Contoso_SSP_Config -searchdatabaseserver app1 -searchdatabasename Contoso_SSP_Search -ssl no
最后需要一段代码来创建搜索提供程序 Web 应用程序。这应该是承载搜索中心的代码拥有的 Web 应用程序。以下示例创建了具有 URL http://search.contoso.msft 的 Web 应用程序。
stsadm.exe -o extendvs -url http://search.contoso.msft -ownerlogin "contoso\administrator" -owneremail "administrator@contoso.msft" -exclusivelyusentlm -ownername "Administrator" -databaseserver app1 -databasename Contoso_WSS_Content_Search_Center -sitetemplate srchcenterlite#1 -description "Contoso Search Center" -sethostheader -apidname PortalAppPool -apidtype configurableid -apidlogin contoso\portalapid -apidpwd P@ssw0rd
对上述命令进行某些说明是有必要的。首先,我们使用 extendvs 参数创建新的 Web 应用程序(以前为虚拟服务器,因此在命令名称中是 vs)。接下来,我们在示例中定义所有者,即 contoso/administrator。如果使用 Kerberos 身份验证,请参阅 stsadm.exe 参考信息以获取有关其用法的详细信息。我们还必须定义 SQL Server 实例和数据库名称。我们将 app1 用作 SQL Server 实例的名称,将 Contoso_WSS_Content_Search_Center 用作数据库名称。
我们必须在根管理路径中创建网站集。在我们的示例中,URL 应为 http://search.contoso.msft/,其中"/"承载搜索中心。正确的网站集模板是 srchcenterlite#1。最后,我们将配置名为 PortalAppPool 的应用程序池并使用 contoso/portalapid 配置标识。门户应用程序池标识应该已在 Active Directory 目录服务中创建。
在添加所有需要的命令之后,将此文件另存为 farm-build.cmd。
下列代码显示了完整的 farm-build.cmd 脚本。
:: @Echo off
:: leaving echo ON for demonstration purposes
:: Farm_Build.cmd
:: Provisions configuration database and Central Administration
:: Creates http://ssp.contoso.msft, then creates SSP Admin in that Web app
:: Installer account requires DB Creator and Security Administrator on SQL Server
:: Pauses are for command verification and demonstration. you can remove if you want.
:: App1 is SQL Server
:: App2 is Search Server
:: Calling bits.cmd to install binaries
@call bits.cmd
Echo Ready to connect server to farm
pause
::Create Index Location on Index Server
@Echo Creating Index Location
mkdir \\app2\c$\indexes
@Echo Creating Farm
:: Creating Farm via populating the ConfigDB. Set SQL Servername, configDB name, Central Admin ContentDB, and Farm Account.
"c:\program files\common files\microsoft shared\web server extensions\12\bin\psconfig.exe" -cmd configdb -create -server app1 -database ContosoSearch_SharePoint_ConfigDB -user contoso\mossfarm -password P@ssw0rd -admincontentdatabase Central_Admin_Content
@Echo Provision Central Admin
:: Provision Central Admin Application on this server. Uses configDB and ContentDB above. Set port number to suit your requirements.
"c:\program files\common files\microsoft shared\web server extensions\12\bin\psconfig.exe" -cmd adminvs -provision -port 12345 -windowsauthprovider onlyusentlm
@Echo Install all Services
:: Install all services on the server
"c:\program files\common files\microsoft shared\web server extensions\12\bin\psconfig.exe" -cmd services install
@Echo Securing File System and Registry Keys
:: Set Security on File System and Registry Keys
"c:\program files\common files\microsoft shared\web server extensions\12\bin\psconfig.exe" -cmd secureresources
@Echo Starting MOSS Search
:: Start SharePoint Server Search Service with IndexQuery.Verify database and services names. Change role to Index if you are scaling out Search Server in the farm.Subsequent servers would only be Query.
"C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\BIN\stsadm.exe" -o osearch -action start -role IndexQuery -farmcontactemail administrator@contoso.msft -farmperformancelevel maximum -farmserviceaccount "contoso\mossservice" -farmservicepassword P@ssw0rd
@Echo Starting WSS Search
:: Start WSS Search. Verify database and service names.
"c:\program files\common files\microsoft shared\web server extensions\12\bin\stsadm.exe" -o spsearch -action start -farmserviceaccount contoso\mossservice -farmservicepassword P@ssw0rd -farmcontentaccessaccount contoso\mosscrawler -farmcontentaccesspassword P@ssw0rd -databaseserver app1 -databasename Contoso_WSS_App2_Search
@Echo Installing all Features
:: Install all features on machine
"c:\program files\common files\microsoft shared\web server extensions\12\bin\psconfig.exe" -cmd installfeatures
@Echo Creating SSP Web
:: Create SSP Web application. Verify database and apid names. (APID = Application Pool Identity)
"c:\program files\common files\microsoft shared\web server extensions\12\bin\stsadm.exe" -o extendvs -url http://ssp.contoso.msft -exclusivelyusentlm -databaseserver app1 -databasename Contoso_WSS_Content_SSP -donotcreatesite -description "SSP Admin Host" -sethostheader -apidname SSP -apidtype configurableid -apidlogin contoso\sspapid -apidpwd P@ssw0rd
:: We must reset IIS before building the SSP. If you are local on the box, you can check all services are created before creating SSP.
iisreset
@Echo Creating SSP
:: Create Search SSP. Verify all names and URLs.
"C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\BIN\stsadm.exe" -o createssp -title "Contoso Search" -url http://ssp.contoso.msft -ssplogin contoso\sspservice -indexserver app2 -indexlocation c:\indexes -ssppassword P@ssw0rd -sspdatabaseserver app1 -sspdatabasename Contoso_SSP_Config -searchdatabaseserver app1 -searchdatabasename Contoso_SSP_Search -ssl no
@Echo Creating Search Center
:: Creating Search Center. Change the URL if you will have a different URL than 'search'.
"c:\program files\common files\microsoft shared\web server extensions\12\bin\stsadm.exe" -o extendvs -url http://search.contoso.msft -ownerlogin "contoso\administrator" -owneremail "administrator@contoso.msft" -exclusivelyusentlm -ownername "Administrator" -databaseserver app1 -databasename Contoso_WSS_Content_Search_Center -sitetemplate srchcenterlite#1 -description "Contoso Search Center" -sethostheader -apidname PortalAppPool -apidtype configurableid -apidlogin contoso\portalapid -apidpwd P@ssw0rd
:: If you receive an error during build, check that you have correctly modified the server :: names, database names, domain name, account names, and passwords for your specific
:: implementation.
创建 farm-connect.cmd 脚本
服务器场中的第一台服务器配置完成之后,必须从添加到服务器场的所有其他服务器进行连接。此 farm-connect.cmd 脚本将在除服务器场中的第一台服务器之外的服务器上执行。下面一系列命令将用于生成此脚本。
通过指定 SQL Server 实例和配置数据库连接到现有服务器场,如下所示:
psconfig.exe -cmd configdb -connect -server app1 -database ContosoSearch_SharePoint_ConfigDB -user contoso\mossfarm -password P@ssw0rd
现在,必须安装服务、功能、安全资源,然后按照之前的做法启动服务。以下示例将启动所有服务、功能并启动/配置查询角色。
注意:必须首先在后续的服务器上启动搜索服务,然后再定义搜索参数。
psconfig.exe -cmd services install psconfig.exe -cmd installfeatures psconfig.exe -cmd secureresources
stsadm.exe -o osearch -action start -role query -farmcontactemail administrator@contoso.msft -farmperformancelevel maximum -farmserviceaccount "contoso\mossservice" -farmservicepassword P@ssw0rd
stsadm.exe-o osearch -action start -role query -farmcontactemail administrator@contoso.msft -farmperformancelevel maximum -farmserviceaccount "contoso\mossservice" -farmservicepassword P@ssw0rd -propagationlocation c:\indexes
重要说明: 如果在服务器场上有多台查询服务器,则必须验证索引服务器并未承载查询角色。
下列代码显示了完整的 farm-connect.cmd 脚本。
:: Farm_Connect.cmd
:: Use on all WFE (query) Servers in Farm
:: Verify query role is not turned on for Index Server
:: @Echo On (off for demo)
:: Calling bits.cmd to install binaries
@call bits.cmd
Echo Ready to connect server to farm
pause
"c:\program files\common files\microsoft shared\web server extensions\12\bin\psconfig.exe" -cmd configdb -connect -server app1 -database ContosoSearch_SharePoint_ConfigDB -user contoso\mossfarm -password P@ssw0rd
"c:\program files\common files\microsoft shared\web server extensions\12\bin\psconfig.exe" -cmd services install
"c:\program files\common files\microsoft shared\web server extensions\12\bin\psconfig.exe" -cmd installfeatures
:: Setting Security on Registry and File System
@Echo Ready to Set Security on File System and Registry
"c:\program files\common files\microsoft shared\web server extensions\12\bin\psconfig.exe" -cmd secureresources
"C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\BIN\stsadm.exe" -o osearch -action start -role query -farmcontactemail administrator@contoso.msft -farmperformancelevel maximum -farmserviceaccount "contoso\mossservice" -farmservicepassword P@ssw0rd
"C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\BIN\stsadm.exe" -o osearch -action start -role query -farmcontactemail administrator@contoso.msft -farmperformancelevel maximum -farmserviceaccount "contoso\mossservice" -farmservicepassword P@ssw0rd -propagationlocation c:\indexes
iisreset / noforce
小结
在生产环境中使用服务器场安装脚本之前,应始终在测试服务器场中测试并调试这些脚本。第一次运行脚本时很少能够正常运行。这是一个反复的过程。
对于希望用于灾难恢复的用户,脚本经过完全测试并且功能完整尤为重要。只能一个个进行测试,不要对脚本错在哪里进行任何猜测。使用这些示例会承担一定的风险,因此请始终进行测试、测试、再测试!