Uno de los CMS con el que he estado trabajando estos días es EPiServer CMS, desarrollado tanto en ASP.NET MVC como en Web Forms y que nos ofrece muchas facilidades para su desarrollo como implementación, entre ellas dar soporte a Microsoft Azure.
En este post voy a mostrar los pasos necesarios para desplegarlo en Azure Web sites.
Instalar EPiServer CMS Visual Studio Extension
El primer paso es instalar la extensión EPiServer CMS Visual Studio desde TOOLS > Extensions and updates…
buscando la extensión de EPiServer:
Creación del proyecto EPiServer Web site
La acción anterior requerirá que reiniciemos Visual Studio para poder hacer uso de las nuevas plantillas de EPiServer. Para crear un nuevo proyecto llevaremos a cabo las acciones habituaciones: New Project > y elegimos EPiServer del listado de plantillas disponibles:
En el siguiente cuadro de diálogo debemos elegir la plantilla que queremos utilizar. En este post se usará Alloy (MVC) la cual contiene un sitio de ejemplo que nos ayudará a verificar el funcionamiento de la aplicación en Azure Web Sites.
Configurar nueva fuente Install-Package EPiServer.Azure
Para que la solución funcione correctamente en Azure Web Sites es necesario instalar el paquete EPiServer.Azure desde Nuget. Antes de llevar a cabo esta operación es necesario añadir una nueva fuente de paquetes (http://nuget.episerver.com/feed/packages.svc) específica de EPiServer:
PM> Install-Package EPiServer.Azure
Servicios necesarios de Microsoft Azure
Para trabajar con EPiServer CMS necesitamos un sitio en Azure Web sites, una base de datos en SQL Database, una cuenta de almacenamiento en Azure Storage y un sistema de mensajería en Service Bus. Todos ellos pueden ser dados de alta desde https://manage.windowsazure.com/ utilizando el botón NEW del menú inferior.
Dentro del archivo web.config debemos añadir el siguiente código en el apartado episerver.framework, que harán referencia a nuestras cuentas de Storage y Service Bus:
<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>
Cadenas de conexión en la sección CONFIGURE de Azure Web sites
Una vez que tenemos creados los servicios dentro de la plataforma, debemos añadir las cadenas de conexión de cada uno de ellos dentro de la configuración del sitio web. Tenemos dos opciones: modificar el archivo web.config o bien utilizar la sección CONFIGURE de Azure Web sites del portal:
Las cadenas de conexión que debemos utilizar deben tener como clave EPiServerDB (Azure SQL Database), EPiServerAzureBlobs (Azure Storage), EPiServerAzureEvents (Azure Service Bus). También es posible añadir las cadenas de conexión directamente en el apartado connectionStrings del archivo web.config, pero sería necesario jugar con las transformaciones del archivo para obtener las conexiones correctas dependiendo del entorno:
<connectionStrings> <add name="EPiServerDB" connectionString="Data Source=tcp:YOUR_SERVER.database.windows.net,1433;Initial Catalog=episerverdatabase;User Id=YOUR_USER@YOUR_SERVER;Password=YOUR_PASSWORD;Connection Timeout=60;Integrated Security=True;MultipleActiveResultSets=True;" providerName="System.Data.SqlClient" /> <add name="EPiServerAzureBlobs" connectionString="DefaultEndpointsProtocol=https;AccountName=YOUR_ACCOUNT_NAME;AccountKey=YOUR_ACCOUNT_KEY"/> <add name="EPiServerAzureEvents" connectionString="Endpoint=sb://YOUR_ACCOUNT_NAME.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=YOUR_ACCOUNT_KEY"/> </connectionStrings>
Desplegar la solución en Microsoft Azure Web sites
El último paso que debemos realizar es el despliegue de la solución en Azure Web sites. Para ello hacemos clic con el botón derecho sobre el proyecto y seleccionamos la opción Publish…:
Seleccionamos el Web site que hemos creado en durante el proceso y, el único valor que debemos modificar es seleccionar la opción Update database y seleccionar la cadena de conexión que apunta a Azure SQL Database:
Hacemos clic sobre la opción Configure database updates, eliminamos el check de [Auto schema update] y añadimos el script ubicado en la carpeta packages > EPiServer.CMS.Core.7.15.0 folder > tools llamado EPiServer.CMS.Core.sql (este script sólo debe ser lanzado en el primer despliegue).
Publicamos la solución y confirmamos el sitio web funciona correctamente.
Si es necesario hacer nuevos deployments sobre el mismo web sites, debes seleccionar la opción Remove additional files at destination y deseleccionar Update database:
Espero que sea de utilidad.
¡Saludos!