Seit Version 7.5 ist es möglich, EPiServer CMS auf Azure Websites zu betreiben.
In diesem Artikel möchte ich die Installation mit Visual Studio Express sowie das anschließende Deployment der Alloy Demo-Seite auf einer Azure Website demonstrieren.
Voraussetzungen
Zur Installation und Deployment des EPiServer CMS verwende ich in diesem Artikel das kostenlose Microsoft Visual Studio Express 2013 for Web, welches Sie hier herunterladen können:
http://www.visualstudio.com/de-de/products/visual-studio-express-vs.aspx
Nach der Installation der Entwicklungsumgebung müssen wir noch die Visual Studio Express Extension für EPiServer von folgender Website herunterladen und installieren:
http://world.episerver.com/Download/Items/Download-EPiServer-75/
Installation des CMS
Nachdem die Extension inklusive der Alloy-Demoseite installiert und Visual Studio im Administratormodus gestartet wurde, legen wir ein neues Projekt vom Typ ‚EPiServer Web Site‘ an:
Im nächsten Schritt können wir die Alloy-Demoseite als MVC oder WebForms Variante auswählen und deaktivieren aus derzeit noch vorhandenen Kompatiblitätsproblemen mit Azure die Option ‚Add EPiServer Search‘:
Nachdem das neue Projekt fertiggestellt wurde, installieren wir zunächst noch die aktuellen Updates für EPiServer CMS über den NuGet-Paketmanager:
Bedingt durch die Installation dieser Updates müssen wir gleichzeitig auch unsere Datenbank aktualisieren.
Wir wechseln dazu in die NuGet Paketmanager-Konsole und starten dort das cmdlet ‚update-epidatabase‘:
Da unsere EPiServer-Installation jetzt auf dem aktuellen Versionsstand ist, können wir nun die für den späteren Betrieb notwendige NuGet-Erweitung ‚EPiServer.Azure‘ installieren.
Wir starten dazu aus der Paketmanager-Konsole den Befehl ‚install-package episerver.azure‘:
Als zunächst letzten Schritt in Visual Studio müssen wir noch den Ordner ‚modulesbin‘ zu unserem Projekt hinzufügen:
Erstellung der Azure Ressourcen
Für die weiteren Schritte loggen wir uns in das Microsoft Azure Management Portal ein.
Als erstes legen wir eine neue Website vom Typ ‚Benutzerdefiniert‘ inklusive einer neuen SQL-Datenbank an und legen den Serveranmeldenamen mit dazugehörigem Kennwort fest:
Desweiteren benötigen wir einen BLOB-Storage-Account für die Ablage von Mediendateien wie z.B. Bildern, um eine spätere Skalierung der Azure Website zu ermöglichen.
Zu diesem Zweck legen wir ein neues Speicherkonto über ‚Neu‘ -> ‚Datendienste‘ -> ‚Speicher‘ -> ‚Schnellerfassung‘ an:
Für das Management der Skalierungsfunktion benötigen wir außerdem einen ‚Servicebus‘, um den Nachrichtenaustausch unter den verschiedenen Instanzen zu ermöglichen.
Wir legen dazu einen neuen Namespace unter dem Menüpunkt ‚Service Bus‘ an:
Konfiguration des CMS
Für das Deployment des CMS auf unserer neu angelegten Azure Website sind noch einige Konfigurationsanpassungen und -Erweiterungen in der ‚web.config‘ notwendig:
Vor dem Eintrag für den ‚DefaultProfileProvider‘ ist ein zusätzliches ‚<clear/>‘ notwendig:
<providers> <clear/> <add name="DefaultProfileProvider" type="System.Web.Providers.DefaultProfileProvider, System.Web.Providers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="EPiServerDB" applicationName="/" /> </providers>
Innerhalb der Sektion ‚episerver.framework‘ muss eine zusätzliche Konfiguration für das Mapping des Speicherkontos und des Servicebus hinzugefügt werden:
<blob defaultProvider="azureblobs"> <providers> <add name="azureblobs" type="EPiServer.Azure.Blobs.AzureBlobProvider,EPiServer.Azure" connectionStringName="EPiServerAzureBlobs" container="mysitemedia"/> </providers> </blob> <event defaultProvider="azureevents"> <providers> <add name="azureevents" type="EPiServer.Azure.Events.AzureEventProvider,EPiServer.Azure" connectionStringName="EPiServerAzureEvents" topic="MySiteEvents"/> </providers> </event>
Für ‚container‘ und ‚topic‘ sind die bei der Erstellung von Speicherkonto und ServiceBus selbst festgelegten Bezeichnungen zu verwenden.
Die Sektion ‚connectionStrings‘ muss ebenfalls mit den Informationen zu Datenbank, Speicherkonto und ServiceBus angepasst werden:
<connectionStrings> <clear /> <add name="EPiServerDB" connectionString="Server=tcp:abcdefgh.database.windows.net,1433;Database=mySiteDB;User ID=dbadmin@abcdefgh;Password={password};Trusted_Connection=False;Encrypt=True;Connection Timeout=30;MultipleActiveResultSets=True" providerName="System.Data.SqlClient" /> <add name="EPiServerAzureBlobs" connectionString="DefaultEndpointsProtocol=https;AccountName=mystorageccount;AccountKey=abcdefghijklmnoabcdefghijklmnoabcdefghijklmno" /> <add name="EPiServerAzureEvents" connectionString="Endpoint=sb://myservicebus.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=abcdefghijklmnoabcdefghijklmnoabcdefghijklmno=" /> </connectionStrings>
Die anzupassenden Verbindungszeichenfolgen können aus dem Azure Management Portal kopiert werden:
Da es beim Deployment zu Problemen mit den ConnectionStrings für die Einträge ‚EPiServerAzureBlobs‘ und ‚EPiServerAzureEvents‘ kommen kann, sollten diese zusätzlich in den Einstellungen der Azure Website unter ‚Konfigurieren‘ -> ‚Verbindungszeichenfolgen‘ eingetragen werden:
Als letzter Konfigurationsschritt ist der Eintrag für die Workflow-Persistance in der Sektion <workflowRunTime> zu entfernen, da dieses Feature aktuell noch nicht in der Azure SQL Datenbank unterstützt wird:
<workflowRuntime EnablePerformanceCounters="false"> <Services> <add type="System.Workflow.Runtime.Hosting.DefaultWorkflowSchedulerService, System.Workflow.Runtime, Version=3.0.00000.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" maxSimultaneousWorkflows="5" /> <add type="System.Workflow.Runtime.Hosting.SharedConnectionWorkflowCommitWorkBatchService, System.Workflow.Runtime, Version=3.0.00000.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> ENTFERNEN: <add type="System.Workflow.Runtime.Hosting.SqlWorkflowPersistenceService, System.Workflow.Runtime, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" UnloadOnIdle="true" /> </Services> </workflowRuntime>
Deployment
Die Website ist jetzt fertig konfiguriert für das Deployment auf unserer Azure Website.
Wir klicken dazu im Kontextmenü unseres Projekt auf ‚Veröffentlichen‘ und Importieren die Veröffentlichungseinstellungen von Windows Azure:
Im nächsten Fenster des Assistenten können wir die Verbindung zu unserer Azure Website überprüfen:
Anschließend legen wir die Einstellungen für das Deployment der SQL-Datenbank fest.
Neben der Definition des ConnectionString für die EpiServerDB aktivieren wir ‚Datenbank aktualisieren‘, klicken auf ‚Datenbankupdates konfigurieren‘, deaktivieren dort die Option ‚Automatische Schemaaktualisierung‘ und fügen ein zusätzliches SQL-Skript ein, welches unter ‚[Projektordner]\packages\EPServer.CMS.Core.7.13.3\tools\EPiServer.Cms.Core.sql‘ zu finden ist:
Im letzten Fenster starten wir das Deployment dann durch einen Klick auf den Button ‚Veröffentlichen‘:
Nach der Fertigstellung des Veröffentlichungsprozesses öffnet sich unsere neu erstellte EPiServer Website, die jetzt auf Windows Azure läuft:
Bevor wir uns jedoch ins Backend auf der Azure-Website einloggen können, müssen wir in unserer lokalen Installation noch die zwei in der ‚web.config‘ bereits vordefininierten Gruppen ‚WebAdmins‘ und ‚WebEditors‘ sowie einen neuen Benutzer anlegen.
Wir starten die lokale Website in Visual Studio mit [F5] und loggen uns mit unserem lokalen Windows-Account in das Backend ein:
Im Bereich ‚Admin‘ -> ‚Administer Groups‘ bzw. ‚Create User‘ erstellen wir die 2 oben genannten Gruppen und einen neuen Benutzer als Mitglied dieser beiden Gruppen:
Mit diesem neu angelegten Benutzer sind wir nun in der Lage, uns im Backend unserer EPiServer Azure Website anmelden:
Sollten Sie selbst EPiServer Partner sein oder einem Partnerunternehmen angehören, kann der Hinweis zur fehlenden Lizenz durch die Installation und Aktivierung einer im EPiServer License Center erhältlichen Cloud-Lizenz beseitigt werden.
Eine lauffähige Demowebsite zu diesem Tutorial finden Sie hier:
http://episerver-de.azurewebsites.net
Ein Gedanke zu “Installation und Deployment von EPiServer CMS auf Azure Websites”