Onlangs kreeg ik, in het kader van één van onze projecten, de vraag om de Corporate News App for SharePoint 2013 te installeren. Deze applicatie is keurig voorzien van een eigen PowerShell installatie script, dus toevoegen aan je webapplicatie is een makkie zou je zeggen. Helemaal waar, ALS je het op die manier doet! Maar aangezien dit mijn eerste echte ervaring met de wereld van SharePoint 2013 Apps zou worden, moest het ook weer niet TE gemakkelijk gaan. Als eigenwijze IT Pro-er wil je wel altijd alles overal vanaf weten natuurlijk!
Uit de SharePoint 2013 literatuur die er de afgelopen maanden verschenen is, was ik al op de hoogte van de mogelijkheid van het hosten van Apps binnen je eigen SharePoint 2013 farm, het zogenaamde ‘SharePoint Hosted Apps’ model. Dus waarom niet de oorspronkelijke opdracht iets uitbreiden met een extra uitdaging en dus werd het: voeg de Corporate News App toe aan een interne App catalogus. In dit eerste blog wil ik mijn ervaringen en tips met het inrichten van een On Premise Apps omgeving met jullie delen.
Iets meer over Apps
Voordat we onze eigen Apps kunnen opslaan is het handig iets meer te weten over de theorie achter ‘Everything is an App’. Apps worden opgeslagen in een centrale catalogus, de App Catalog. Dit is niet een farm-brede opslaglocatie zoals je verwacht, maar iedere webapplicatie heeft een eigen catalogus in de vorm van een speciale siteverzameling. Iedere App krijgt daarbinnen een eigen App web toegekend.
De App webs zijn te benaderen via een eigen domeinnaam, het ‘App domein’. Dit is een speciaal DNS domein waarbinnen iedere App zijn eigen webadres krijgt. De Subscription Service en App Management Service zijn verantwoordelijk voor het interne beheer van alle opgeslagen Apps. Zij houden bij welke App bij welke site in gebruik is en of de juiste licenties aanwezig zijn. Dat laatste speelt een rol wanneer een externe App aangeschaft is.
De volgende figuur laat duidelijk zien dat het adres van een App uit verschillende bouwstenen bestaat en afwijkt van het domein van de webapplicatie.
Als App domeinnaam kun je gebruik maken van een sub-domein van je huidige domein, zoals in apps.teamsharepoint.nl of een eigen nieuw second-level domein, bijvoorbeeld: teamsharepoint-apps.nl. Hoe je de bijbehorende DNS records hiervoor moet configureren is uitvoerig beschreven door Mirjam van Olst in dit artikel.
Indien de web applicatie gebruik maakt van SSL moet ook het App domein voorzien worden van een SSL certificaat. Dit moet dan wel een wildcard certificaat zijn, omdat alle App webs uniek zijn. Let er in dit geval op dat een wildcard certificaat voor het domein *.teamsharepoint.nl niet geldig is voor het domein *.apps.teamsharepoint.nl. Bovendien verstrekken niet alle organisaties die publieke certificaten uitgeven een wildcard certificaat voor sub-domeinen. Controleer dit dus vooraf.
Farm configuratie
Zoals gezegd hebben we twee service applicaties nodig in onze farm om met Apps te kunnen werken. We maken deze beide met behulp van PowerShell. Voor de Subscription service applicatie is dit overigens de enige manier om deze te configureren. Ik gebruik hiervoor de volgende PowerShell opdrachten:
# Aanname: er is al een application pool voor de SharePoint Hosted Services $appPool = Get-SPServiceApplicationPool "SharePoint Hosted Services" $appName = “Subscription Service Application” $dbName = “SubscriptionService” # Maak een nieuwe Subscription Service applicatie $sa = New-SPSubscriptionSettingsServiceApplication –Name $appName –DatabaseName $dbName –ApplicationPool $appPool New-SPSubscriptionSettingsServiceApplicationProxy –ServiceApplication $sa # Start de Subscription service Get-SPServiceInstance | Where-Object { $_.typename -eq "Microsoft SharePoint Foundation Subscription Settings Service" } | Start-SPServiceInstance # Maak een nieuwe AppManagement Service applicatie $appName = “AppManagement Service Application” $dbName = “AppManagementService” $sa = New-SPAppManagementServiceApplication –Name $appName –DatabaseName $dbName –ApplicationPool $appPool New-SPAppManagementServiceApplicationProxy –ServiceApplication $sa -Name "$appName Proxy" # Start de AppManagement service Get-SPServiceInstance | Where-Object { $_.typename -eq "App Management Service" } | Start-SPServiceInstance
Het resultaat ziet er als volgt uit:
Routeren van het App domein
De enige vraag die nog openstaat is: Hoe vinden de gebruikers de weg naar de App webs als hun domein afwijkt van dat van onze web applicatie? Als we host headers gebruiken bij onze web applicaties, en dat is meestal het geval, dan kan IIS de weg naar het App domein namelijk niet vinden, ook niet via de default website. De oplossing is een extra routing web applicatie in te zetten, die luistert op poort 80 of 443, en fungeert als een ‘catch all’ adres. Deze web applicatie moet dan wel zonder host header geconfigureerd worden, maar heeft nog wel een root site collectie nodig, die overigens leeg mag zijn. De App Management service applicatie zorgt uiteindelijk voor de juiste routering.
De routing webapplicatie definiëren we als volgt, inclusief een site collectie met het leeg (Blank) site template:
# Configureer Apps webapplicatie met Blank site template. # $ap = New-SPAuthenticationProvider New-SPWebApplication -Name "Apps" -ApplicationPool "SharePoint Apps" -ApplicationPoolAccount "TEAMSP\SPAppPool01" -Port 80 -URL "http://apps.teamsharepoint-apps.nl" -AuthenticationProvider $ap -DatabaseName "TSP_Apps_Content" $template = Get-SPWebTemplate "STS#1" New-SPSite -Url "http://apps.teamsharepoint-apps.nl" -OwnerAlias "TEAMSP\SPAdmin" -Template $template
Tip
Het application pool account van de routing web applicatie heeft toegang nodig tot de content databases van de web applicaties waar zich App catalogs bevinden. Dit kan het eenvoudigst gedaan worden door voor alle web applicaties hetzelfde pool account te gebruiken.
Een App catalogus maken
Alle voorbereidingen zijn nu gedaan om een App Catalog te maken binnen onze web applicatie. Het beheer van alle farm catalogs start vanuit de Central Administration website. Kies voor Manage Catalogs in de Apps pagina en vul de gewenste informatie voor de catalogus in:
Zodra de App catalogus met succes is aangemaakt kan de link in Central Administration gebruikt worden om naar catalogus van de web applicatie te navigeren. Vanuit de catalogus kunnen nu nieuwe SharePoint Apps worden toegevoegd. Het doel was de Corporate News Apps beschikbaar te stellen, dus de laatste stap is de App te uploaden naar de App Catalog. Gebruikers kunnen vanaf hun site nu de App toevoegen.