Installation und Deployment von EPiServer CMS auf Azure Websites

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/

EPiServer_Azure_01

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:

EPiServer_Azure_02

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‘:

EPiServer_Azure_03

Nachdem das neue Projekt fertiggestellt wurde, installieren wir zunächst noch die aktuellen Updates für EPiServer CMS über den NuGet-Paketmanager:

EPiServer_Azure_04

EPiServer_Azure_05

EPiServer_Azure_06

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‘:

EPiServer_Azure_07

 

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‘:

EPiServer_Azure_08

Als zunächst letzten Schritt in Visual Studio müssen wir noch den Ordner ‚modulesbin‘ zu unserem Projekt hinzufügen:

EPiServer_Azure_09

 

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:

EPiServer_Azure_10

EPiServer_Azure_11

EPiServer_Azure_12

 

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:

EPiServer_Azure_13

 

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:

EPiServer_Azure_14

 

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:

EPiServer_Azure_15

EPiServer_Azure_16

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:

EPiServer_Azure_17

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:

EPiServer_Azure_18

EPiServer_Azure_19

Im nächsten Fenster des Assistenten können wir die Verbindung zu unserer Azure Website überprüfen:

EPiServer_Azure_20

 

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:

EPiServer_Azure_21

EPiServer_Azure_22

Im letzten Fenster starten wir das Deployment dann durch einen Klick auf den Button ‚Veröffentlichen‘:

EPiServer_Azure_23

Nach der Fertigstellung des Veröffentlichungsprozesses öffnet sich unsere neu erstellte EPiServer Website, die jetzt auf Windows Azure läuft:

EPiServer_Azure_24

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:

EPiServer_Azure_25

Im Bereich ‚Admin‘ -> ‚Administer Groups‘  bzw. ‚Create User‘ erstellen wir die 2 oben genannten Gruppen und einen neuen Benutzer als Mitglied dieser beiden Gruppen:

EPiServer_Azure_26

EPiServer_Azure_27

EPiServer_Azure_28

Mit diesem neu angelegten Benutzer sind wir nun in der Lage, uns im Backend unserer EPiServer Azure Website anmelden:

EPiServer_Azure_29

EPiServer_Azure_30

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:

EPiServer_Azure_31

 

http://episerver-de.azurewebsites.net

 

 

 

 

 

Ein Gedanke zu “Installation und Deployment von EPiServer CMS auf Azure Websites

Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s