SharePoint 2013 App 开发 (2) - 建立开发环境
这篇文章属于SharePoint 2013 App开发系列文章,到这篇文章为止,此系列的文章包括:
- SharePoint 2013 App开发 (1) - 什么是SharePoint App?
- SharePoint 2013 App开发 (2) - 建立开发环境 (本文)
在开发SharePoint App之前,开发人员需要有一个SharePoint开发环境。无论是开发何种类型的应用程序,开发人员都需要在开发机器上准备相应的开发环境。比如,如果是开发ASP.NET Web应用,那么在开发机器上除了Visual Studio之外,很可能还需要有IIS(或IIS Express)和SQL Server数据库服务器。同样,对于SharePoint工程师来说,也需要在开发机器上准备一个能够用来开发SharePoint应用程序的环境,只不过准备SharePoint开发环境通常要比准备一个ASP.NET开发环境复杂多了(虽然SharePoint在很大程度上是基于ASP.NET技术)。
如果你曾经准备过SharePoint 2007/2010开发环境,那么就应该知道,SharePoint 2007/2010不支持远程开发。换言之,SharePoint 2007/2010不能让程序员在没有安装SharePoint Server的本地开发机器上,打开Visual Studio创建SharePoint Solution,然后部署到远程安装了SharePoint Server的服务器上,运行并调试。SharePoint 2007/2010要求在工程师的本地开发环境中,必须安装有SharePoint系统本身,Visual Studio也只能将开发的Solution直接部署到本地的SharePoint系统中进行调试。这使得SharePoint 2007/2010的开发人员,只能选择要么使用Windows Server作为自己开发机器上的操作系统,要么使用某种虚拟机技术(Hyper-V、VMware)来构建开发环境。
SharePoint 2010在当年发布时,在开发支持方面的重大改进之一,就是支持被安装到Vista/Windows 7客户端操作系统上。这样,开发人员的开发机器如果使用的是Windows 7操作系统,那么可以直接安装SharePoint 2010(需要修改安装配置文件),而不再需要将操作系统换成Windows Server或是使用虚拟机。
SharePoint 2013在建立开发环境方面,又有了一些显著的变化。如果开发人员是要开发SharePoint 2013 Solution,那么仍然需要在开发机器上有本地的SharePoint 2013环境,而且SharePoint 2013也不再支持被安装到Windows 7或Windows 8客户端操作系统上。但是本系列文章介绍的不是SharePoint 2013 Solution开发,而是SharePoint 2013 App开发,所以情况又有所不同。简单来说,如果开发人员要开发SharePoint 2013 App,那么有两个选择来建立开发环境:
- 使用Office 365提供的“云环境”
- 在本地建立一个SharePoint 2013环境
使用Office 365建立开发环境
如果你不想花费大量的时间和精力(或是你没有相应的硬件资源),在本地建立一个完整的SharePoint 2013环境,那么你可以使用Office 365所提供的一个远程开发环境。这个Office 365开发环境是免费的,能够让你在本地开发机器上的Visual Studio 2012中开发SharePoint 2013 App,然后将App发布到云端的Office 365 Developer Site上。
首先,点击这里,完成Office 365 Developer Preview的注册过程。(在撰写此文时,Office 365 Developer Preview还不支持中国区域的注册,所以你可能需要用一个美国的地址完成注册。)
在注册过程中,你会输入你想要的域名(一个以OnMicrosoft.com结尾的域名,比如kaneboy.OnMicrosoft.com),以及一个以你选择的域名为后缀的ID(比如kaneboy@kaneboy.OnMicrosoft.com)。以后你会需要使用这个用户ID,登录Office 365 Preview。
完成注册过程后,你就能打开一个Office 365 Preview管理中心的界面。如果你是刚注册完Office 365 Developer Preview并第一次进入这个界面,那么在页面上显示的“当前运行状况”可能会显示还在初始化各个不同的服务,你只需要稍候等待各个服务初始化完成即可。
点击页面右上方的“管理员”,然后在菜单中选择“SharePoint”。
在打开的SharePoint admin center界面上,会显示出所有的SharePoint网站。其中有一个URL为“http://你的ID.sharepoint.com”的网站,这个网站就是Office 365 Preview所提供的SharePoint 2013 Developer Site。打开它。
现在,你就拥有了一个由Office 365所提供的,位于云端的,SharePoint 2013 Developer Site。你可以使用这个Developer Site来完成SharePoint 2013 App的发布和调试。
提示:到底什么是Developer Site?
在开发SharePoint 2013 App时,Visual Studio 2012在调试App的过程中,必须将App发布到一个特殊类型的SharePoint 2013网站上,这种网站就是Developer Site。在SharePoint 2013中,有一个内置的网站模板:“开发人员网站”,使用这个模板所创建的SharePoint网站,就是Developer Site,就可以用来发布和调试SharePoint 2013 App。系统管理员可以按照需要,建立任意多个Developer Site。除了Developer Site之外,Visual Studio不能将App直接发布到其他任何类型的SharePoint网站。
当我们在Visual Studio中新建一个SharePoint 2013 App项目时,项目向导会提示要求我们提供一个Developer Site。Developer Site对于App开发是必需的。
正是因为Office 365为我们提供了一个云端的Developer Site,所以开发人员就不需要在本地建立一个完整的SharePoint 2013环境了,而是使用这个Office 365 Developer Site,来进行App开发。
在本地创建SharePoint 2013开发环境
除了使用Office 365 Developer Site之外,开发人员还可以选择在本地开发机器上,建立一个完整的SharePoint 2013开发环境。建立一个本地开发环境,相比直接使用Office 365要麻烦很多,而且需要更多的硬件资源。但这种选择也有一些好处:
- 你不需要依赖连接到Office 365的Internet网络连接
- 如果除了SharePoint 2013 App之外,你还要开发SharePoint 2013 Solution,那么你就仍然需要一个本地开发环境
创建SharePoint 2013本地开发环境,根本上就是在本地计算机上安装一个SharePoint 2013环境。如果你的工作环境使用的是Windows Server 2008 R2 SP1或Windows Server 2012,那么你可以直接在你的工作环境中安装SharePoint 2013(Windows Server 2008 R2 SP1和Windows Server 2012是唯一支持安装SharePoint 2013的两个操作系统)。但是如果你的工作环境使用的是客户端操作系统,比如Windows 7或Windows 8,那么更合适的做法就是使用虚拟机技术,在虚拟机里面创建SharePoint 2013开发环境。笔者的笔记本安装的是Windows 8,而Windows 8的好处之一,就是它内置了Hyper-V组件,所以笔者不需要再安装其它第三方的虚拟机软件(比如VMware)。
当然使用虚拟机技术,对你的开发机器的性能有一定的要求。开发机器最好有16GB内存,这样可以将其中的至少10GB分配给虚拟机使用。虽然你可以在更少内存的机器上运行SharePoint 2013虚拟机,但它的运行速度很可能会让你抓狂。另外,由于运行虚拟机对磁盘I/O性能也有一定的要求,所以建议将虚拟机的磁盘镜像文件放置到机器的非系统硬盘上。比如,你可以在第一块硬盘上安装操作系统和其它软件,然后在第二块硬盘上放置虚拟机磁盘镜像文件。使用专门的SSD硬盘来放置虚拟机磁盘镜像文件,是最佳的选择(但是也意味着最高的成本)。
由于使用虚拟机技术来创建SharePoint 2013开发环境是更常见的做法,所以在下文中,将讲述如何从操作系统开始,创建出完整的开发环境。不过在开始之前,我们需要确定整个SharePoint 2013开发环境一共包含几个虚拟机。基本上,你其实可以将所需要的一切都安装到一台单独的虚拟机上,它将包括:
- Windows Server 2008 R2 SP1(或Windows Server 2012)操作系统
- Active Directory域控器组件
- SQL Server 2012数据库服务器
- SharePoint Server 2013
- Office 2013
- SharePoint Designer 2013
- Visio 2013
- Visual Studio 2012
- Workflow Manager
- Office Developer Tools for Visual Studio 2012
除了上面的软件之外,如果你的开发环境一定需要Office Web Apps Server 2013,那么你就需要第二个虚拟机,因为Office Web Apps Server 2013不能和SharePoint Server 2013安装到同一台服务器上。
(1) 安装Windows Server 2008 R2 SP1操作系统
基本的步骤如下:
- 安装Windows Server 2008 R2。
- 安装Service Pack 1补丁包。
- 将虚拟机的Windows机器名修改为合适的名称,比如“SP2013”。
- 在Windows Server的服务器管理器中,安装功能“桌面体验”和“Windows PowerShell集成脚本环境(ISE)”。
- 为虚拟机的网卡指定一个固定的IP地址(比如192.168.100.1),并且将DNS服务器指定为自己的IP。
- 为了让稍后安装后续软件时更顺利,为虚拟机添加第二块网卡,让第二块网卡可以连接到Internet。
- 在Windows Server中禁用Loopback检查。方式是下载这个禁用Loopback检查修复包然后运行它,或者浏览此页面,然后根据“方法 1:禁用环回检查”中的方法手工修改注册表。
(2) 安装Active Directory域控器
基本步骤如下:
- 在Windows Server的服务器管理器中,添加角色“Active Directory域服务”。
- 运行Active Directory域服务安装向导,在向导中,会提示输入一个域名称,只需要输入一个想要的名称即可,比如“contoso.com”。
(3) 安装SQL Server 2012
按照标准步骤,完成SQL Server 2012即可。在选择要安装的SQL Server功能时,至少需要确认数据库引擎服务以及它的全文检索服务被选中了。
(4) 安装SharePoint Server 2013
启动SharePoint Server 2013的安装程序(双击安装文件根目录的default.hta),然后点击“安装必备软件”。
通过SharePoint 2013产品准备工具,让它自动的下载所有必需的组件,并且在Windows Server上安装必需的角色和功能(中间可能会提示需要重启)。在产品准备工具运行完成之后,在提示界面确认所有必需的组件都已经被成功安装和配置。
重新启动Windows Server。手工下载并安装下面3个补丁包:
- KB2554876:打开此页面后,将下载链接发送到你的信箱。
- KB2708075:打开此页面后直接下载。
- KB2759112:点击这里直接下载。(如果是Windows Server 2012,则换为下载KB2765317,点击这里直接下载。)
再次重启Windows Server,然后再次运行SharePoint Server 2013安装程序,点击“安装SharePoint Server 2013”。根据向导提示,安装完所有文件,然后运行SharePoint 2013产品配置向导。
在产品配置向导中,选择建立新服务器场,然后指定数据库服务器的名称(即本机)和连接到数据库服务器所使用的AD域账号。如果需要,可以为管理中心站点手工指定一个特定的端口。完成产品配置向导的运行。完成之后,会自动打开浏览器,并打开管理中心站点。
第一次打开管理中心站点,会提示运行服务器场配置向导。
启动向导后,在第一个向导界面输入一个服务账号或使用现有的管理账号。在界面的下方,会显示很多的服务,取消选中“应用程序管理服务”,然后点击下一步,让服务器场向导安装其它选中的服务。
在向导安装服务时,页面会提示稍微等待一会儿,但你可能会在这里等待很长时间之后,发现页面仍然显示同样的等待信息。如果出现了这样的情况,在确认已经等待了至少半小时之后,你可以关闭浏览器,然后再重新通过开始菜单打开SharePoint 2013管理中心。所有的服务应该都已经被安装好了。
打开Windows Server管理中心中的DNS管理器,在正向查找区域下,展开域名主节点,然后添加一个泛域名解析,指向本地IP地址。添加的方法是在主机文本框中直接输入星号(*)。添加了*.contoso.com这个泛域名解析之后,所以以contoso.com结尾的域名(比如intranet.contoso.com、apps.contoso.com、app-1.apps.contoso.com),都会被解析到本地IP地址上。
添加*.contoso.com这个泛域名解析的目的,是因为我们想用“apps.contoso.com”这个域名作为App托管的应用程序域。下一步就是配置App托管。
点击开始菜单 –> 所有程序 –> Microsoft SharePoint 2013 Products,然后用管理员权限打开“SharePoint 2013命令行管理程序”。执行下面这些PowerShell cmdlets:
// 设置应用程序域为“apps.contoso.com”
$appHostDomain = "apps.contoso.com"
Set-SPAppDomain $appHostDomain
// 启动“应用程序管理服务”和“Microsoft SharePoint Foudation Subscription Settings Service”服务
$appMgmtSvcInstance = Get-SPServiceInstance | Where-Object { $_.GetType().Name -eq "AppManagementServiceInstance" }
if ($appMgmtSvcInstance.Status -ne "Online") { Start-SPServiceInstance -Identity $appMgmtSvcInstance }
$appSubSettingSvcInstance = Get-SPServiceInstance | Where-Object { $_.GetType().Name -eq "SPSubscriptionSettingsServiceInstance"}
if ($appSubSettingSvcInstance.Status -ne "Online") { Start-SPServiceInstance -Identity $appSubSettingSvcInstance }
// 创建“Settings Service Application”和“应用程序管理服务”服务应用程序
$appPoolServiceApps = Get-SPServiceApplicationPool -Identity "SharePoint Web Services Default"
$appSubSvc = New-SPSubscriptionSettingsServiceApplication -ApplicationPool $appPoolServiceApps -Name "Settings Service Application" -DatabaseName SettingsServiceDB
$proxySubSvc = New-SPSubscriptionSettingsServiceApplicationProxy -ServiceApplication $appSubSvc
$appAppSvc = New-SPAppManagementServiceApplication -ApplicationPool $appPoolServiceApps -Name "应用程序管理服务" -DatabaseName AppServiceDB
$proxyAppSvc = New-SPAppManagementServiceApplicationProxy -ServiceApplication $appAppSvc
// 设置应用程序前缀
Set-SPAppSiteSubscriptionName -Name "app" -Confirm:$false
运行完成之后,在SharePoint 2013管理中心网站打开“系统设置 - 管理服务器上的服务”页面,应该能够看到下面这两个服务已经处于启动状态。
然后打开“应用程序管理 - 管理服务应用程序”页面,在页面上应该能够看到下面这两个服务应用程序。
最后打开“应用程序 - 配置应用程序URL”页面,页面上的“应用程序域”和“应用程序前缀”应该如下图所示。
最后,在新安装的SharePoint 2013系统中,创建一个新的Developer Site(你还记得Developer Site的作用,对吧?)。在管理中心新建网站集,然后选择“开发人员网站”模板即可。
(5) 安装Office客户端程序
在虚拟机中安装Office 2013、SharePoint Designer 2013和Visio 2013。其中SharePoint Designer 2013可以免费下载。
(6) 安装Visual Studio 2012
在虚拟机中安装Visual Studio 2012。在笔者撰写此文时,Visual Studio 2012 Update1已经发布了。
(7) 安装Workflow Manager
从这个页面下载Workflow Manager 1.0,然后双击下载的WorkflowManager.exe。实际上,这是一个Web平台安装程序(Web Platform Installer,简称WebPI)安装包,它会启动机器上的Web平台安装程序4.0(如果机器上没有安装WebPI 4.0,它会自动下载并安装),来下载安装所有必需的组件。
安装Workflow Manager 1.0时,WebPI会自动安装下面这些依赖的组件:
- Workflow Client 1.0
- Service Bus 1.0
- Microsoft Windows Fabric
在WebPI 4.0完成安装后,会启动Workflow Manager配置。在配置向导中,选择按照默认设置配置Workflow Manager,配置向导会接着创建一个Workflow Farm。
在新建Workflow Farm的界面,输入SQL Server服务器的名称,然后输入一个服务账户。服务账号的格式必需是“账号@完整域名”,比如“administrator@contoso.com”。服务账号的文本框中,在@符号后面默认不会显示完整域名(比如它只会显示“@contoso”),你必需将它补全为完整域名。选中下方的允许通过HTTP进行连接的复选框。输入任意一个key来生成证书。
继续其它步骤,完成Workflow Manager的配置向导。
接下来还需要将SharePoint系统连接到Workflow Farm。打开Windows开始菜单,在Workflow Manager 1.0文件夹下面有一个Workflow Manager PowerShell,运行它,然后执行“Get-WFFarm”指令。指令运行后,会列出Workflow Farm的信息,其中我们要使用的是HttpPort这个信息,它的默认值应该都是12291。
然后打开SharePoint 2013命令行管理程序,执行“Register-SPWorkflowService -SPSite "http://sp2013" -WorkflowHostUri "http://sp2013:12291" -AllowOAuthHttp”指令。指令的SPSite参数要指定为一个存在的SharePoint 2013网站集的路径,WorkflowHostUri参数要指定为你的环境中的Workflow Farm的端点路径,其中的12291端口来自于上一条“Get-WFFarm”指令所获取的端口信息。
现在,Workflow Manager就安装并配置完成了。
(8) 安装Office Developer Tools for Visual Studio 2012
Office Developer Tools for Visual Studio 2012包含了对SharePoint 2013 App开发的支持,没有这个插件的话,在Visual Studio 2012中是不会有SharePoint App项目模板的。在笔者撰写此文时,实际上Office Developer Tools for Visual Studio 2012还没有发布正式版,最新的版本是Preview 2。但是Preview 2版本的Developer Tools针对的就是Visual Studio 2012正式版和SharePoint 2013正式版,只是Developer Tools工具本身还没有RTM而已。你可以点击这里下载Developer Tools Preview 2。注意,Developer Tools的安装也是通过WebPI 4.0来完成。Web PI同时会安装下面这些Office Developer Tools所依赖的组件:
- Windows Identity Foundation SDK
- SharePoint Client Component
- Workflow Manager Tools for VS2012
- Microsoft Exchange Web Services
- Microsoft LightSwitch HTML Client for VS2012
- VSTO Runtime
- VSTO Runtime语言包
终于,完成了这一步之后,我们就完成了SharePoint 2013本地开发环境的建立。以后我们就可以用这个虚拟机,来进行SharePoint 2013 App的开发。
如果你需要Office Web Apps的功能,那么还需要创建第二个虚拟机,让其中的Windows Server加入到第一个虚拟机所创建的Active Directory域,然后安装并配置Office Web Apps Server 2013。安装Office Web Apps Server 2013并且将其连接到SharePoint服务器场的方法,可以参考杜伟写的这篇博客。虽然这篇博客针对的是Office Web Apps 2013 Preview版本,但基本的操作步骤和正式版是相同的。
最后要提醒的是,这篇文章面对的是SharePoint 2013 App开发人员,而不是SharePoint 2013系统管理员。也就是说,上面对于安装SharePoint 2013的步骤的描写,仅是用来建立开发环境,这并不意味着这些步骤在生产环境中也是正确的。