SharePoint Server 2013開發之旅(三):為SharePoint Server配置App開發、部署、管理環境


上一篇我講解了如何利用微軟提供的Office 365開發人員網站,進行在線的SharePoint App開發,這當然是不錯的一個選擇,因為你可以快速地進行開發和調試。(僅僅針對App開發而言)。但是,你可能會想到一個問題,假設我們在企業中已經有了一組SharePoint Server服務器,那么如何讓他們也能用來進行App開發、部署並且最終用來統一管理所有的App呢?這一篇文章我們將揭開這個面紗。

關於這個配置過程,微軟官方也有一個文檔(http://msdn.microsoft.com/en-us/library/fp179923(office.15).aspx),我下面總結的方法可能與官方的文檔有些不一樣。但這是我驗證下來有效的方法。但我建議你也將官方的文檔看一遍。

 

第一步:配置泛域名解析,並且禁用回環檢查

為什么要配置這個域名解析呢?上一篇我已經提到了App最終使用的時候,有一個很特殊的地址,例如

https://xizhangdev-ece5e3f97ecd25.sharepoint.com/SharePointAppSample/Pages/Default.aspx?SPHostUrl=https%3A%2F%2Fxizhangdev%2Esharepoint%2Ecom&SPLanguage=zh%2DCN&SPClientTag=0&SPProductNumber=16%2E0%2E2120%2E1226&SPAppWebUrl=https%3A%2F%2Fxizhangdev%2Dece5e3f97ecd25%2Esharepoint%2Ecom%2FSharePointAppSample

也就是說,所有的App,其實都是共用了一個域名 sharepoint.com。但有一個特殊的前綴(你的站點標識,一個App序列號),並且有一個特殊的后綴(App的名稱)。

如果我們希望配置自己的服務器也能實現這樣的功能,就需要用到一個泛域名解析的功能。也就是說,不管App具體的序列號是多少,我們都解析到同一個地址。

要實現這樣的功能,請登錄到你配置的DNS服務器,在正向查找區域中添加一個主機名

image

用*(星號)作為主機名,IP地址寫127.0.0.1,就是讓它指向本地服務器。

image

如何驗證這個功能是否生效呢?很簡單,我們開一個命令行提示符。隨便ping兩個域名,分別用apps和my作為前綴,我們看到都能ping通,而且他們返回的地址都是127.0.0.1

image

 

修改兩個注冊表選項,來禁止環回檢查

1. 啟動注冊表編輯器 (Regedt32.exe)。

2. 在注冊表中找到並單擊以下項:HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanmanServer\Parameters

3. 在編輯菜單上,單擊添加數值,然后添加以下注冊表值:
數值名稱:DisableStrictNameChecking
數據類型:REG_DWORD
基數:十進制
數值: 1

 

2. 在注冊表編輯器中,找到並單擊下面的注冊表項:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa

3. 右鍵單擊“Lsa”,指向“新建”,然后單擊“DWORD 值”。

4. 鍵入 DisableLoopbackCheck,然后按 Enter。

5. 右鍵單擊 DisableLoopbackCheck,然后單擊“修改”

6. 在“數值數據”框中,鍵入 1,然后單擊“確定”。

7. 退出注冊表編輯器,然后重新啟動您的計算機

 

第二步:配置SharePoint服務和服務應用程序

請將如下的代碼保存為一個ps1文件,例如命令為enableappscript.ps1,放在c:\scripts目錄中,紅色字體部分可能需要修改為你的域名

$appManagementService = Get-SPServiceInstance | where {$_.TypeName -like 'App Management Service'}
if($appManagementService.Status -ne 'Online') {
Write-Host 'Starting App Management Service'
Start-SPServiceInstance $appManagementService | Out-Null
}
else{
Write-Host 'App Management Service was already started'
}
# wait for App Management Service to start”
while ($service.Status -ne 'Online') {
# delay 5 seconds then check to see if service has started sleep 5
$service = Get-SPServiceInstance | where {$_.TypeName -like 'App Management Service'}
}

$subscriptionSettingsService = Get-SPServiceInstance | where {$_.TypeName -like 'Microsoft SharePoint Foundation Subscription Settings Service'}
if($subscriptionSettingsService.Status -ne 'Online') {
Write-Host 'Starting Subscription Settings Service'
Start-SPServiceInstance $subscriptionSettingsService | Out-Null
}
else{
Write-Host 'Subscription Settings Service was already started'
}
while ($service.Status -ne 'Online') {
# delay 5 seconds then check to see if service has started sleep 5
$service = Get-SPServiceInstance | where {$_.TypeName -like 'Microsoft SharePoint Foundation Subscription Settings Service'}
}

$appManagemetnServiceApplicationName = 'App Management Service'
$appManagementServiceApplication = Get-SPServiceApplication | where {$_.Name -eq $appManagemetnServiceApplicationName}
# create an instance App Management Service Application and proxy if they do not exist
if($appManagementServiceApplication -eq $null) {
Write-Host 'Creating App Management Service Application'
$pool = Get-SPServiceApplicationPool 'SharePoint Web Services Default'
$appManagementServiceDB= 'Sharepoint_AppManagementServiceDB'
$appManagementServiceApplication = New-SPAppManagementServiceApplication `
-ApplicationPool $pool `
-Name $appManagemetnServiceApplicationName `
-DatabaseName $appManagementServiceDB
Write-Host 'Creating App Management Service Application Proxy'
$appManagementServicApplicationProxy = New-SPAppManagementServiceApplicationProxy `
-ServiceApplication $appManagementServiceApplication
}
else{
Write-Host 'App Management Service Application already exist'
}

$subscriptionSettingsServiceApplicationName = 'Subscription Settings Service Application'
$subscriptionSettingsServiceApplication = Get-SPServiceApplication | where {$_.Name -eq $subscriptionSettingsServiceApplicationName}
# create an instance Subscription Service Application and proxy if they do not exist
if($subscriptionSettingsServiceApplication -eq $null) {
Write-Host 'Creating Subscription Settings Service Application'
$pool = Get-SPServiceApplicationPool 'SharePoint Web Services Default'
$subscriptionSettingsServiceDB= 'Sharepoint_SiteSubscriptionSettingsServiceDB'
$subscriptionSettingsServiceApplication = New-SPSubscriptionSettingsServiceApplication `
-ApplicationPool $pool `
-Name $subscriptionSettingsServiceApplicationName `
-DatabaseName $subscriptionSettingsServiceDB
Write-Host 'Creating Subscription Settings Service Application Proxy'
$subscriptionSettingsServicApplicationProxy = New-SPSubscriptionSettingsServiceApplicationProxy `
-ServiceApplication $subscriptionSettingsServiceApplication
}
else{
Write-Host 'Subscription Settings Service Application already exist'
}
Set-SPAppDomain 'apps.corp.contoso.com' -Confirm:$false

Set-SPAppSiteSubscriptionName -Name 'app' -Confirm:$false

image

image

上面的代碼其實說復雜也不復雜,它會檢查兩個服務的狀態,如果沒有啟動,則會啟動他們

  1. App Management Service
  2. Microsoft SharePoint Foundation Subscription Settings Service

image

然后,它會檢查是否存在下面兩個服務應用程序,如果不存在,則會創建並且啟動他們

  1. App Management Service Application
  2. Subscription Settings Service Application

image

然后,它會注冊一個域名(apps.corp.contoso.com)和地址前綴(app)。

image

第三步:創建App Catalog

接下來我們要做的是創建一個所謂的App Catalog,這個相當於是一個存儲App的具體位置。

image

image

image

image

 

經過上面三個步驟,我們就能通過Visual Studio來測試開發一個簡單的App,並且看看部署起來的效果了

image

image

默認生成的項目結構中有一些腳本文件,CSS文件,並且還有一個aspx頁面。【備注:具體App的開發細節以后會有文章介紹,這里不做展開】

image

我這里不准備對其做任何修改,直接選擇解決方案,然后選擇“部署解決方案”即可,如果不出意外的話,你應該能部署成功。

image

【備注】如果你直接使用安裝SharePoint Farm的賬號打開Visual Studio ,創建App項目並且部署,你會發現其實是部署不了的,錯誤消息如下。

image

解決方法就是再創建一個賬號,用這個賬號登陸來做開發,並且將這個賬號添加為Farm Administrator,默認網站集的Site collection administrator,並且在數據庫服務器中,將其添加為sysadmin這個角色。

 

如果完成了部署,你可以打開默認的站點,在左側導航區域會出現剛剛你建立和部署的App的鏈接。點擊這個鏈接,可以運行這個App(其實是打開了其中的Default.aspx頁面)

image

【備注】實際上,你如果第一次打開的話,可能會要求你輸入用戶名和密碼。我是通過設置了IE選項,而避免了每次輸入用戶名和密碼的。

首先,我將*.apps.corp.contoso.com添加到了信任站點

image

然后,我設置了信任站點的安全選項,讓它自動地以當前用戶的身份登陸。

image


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM