Alojar Umbraco CMS en Windows Azure

Como prometimos al comienzo de este blog, esperamos poder contar con posts invitados de MVPs, otros compañeros de MS, miembros de la comunidad… En este caso tenemos que agradecer su colaboración a Gisela Torres / Consultora en Aventia Renacimiento y MVP en Windows Azure

 

clip_image001

 

Por si alguien aún no lo conoce, Umbraco es un gestor de contenidos gratuito y Open Source implementado en ASP.NET. Se trata de un CMS ampliamente utilizado en diversos sectores del mercado y empresas de renombre como Peugeot.com, Wired.co.uk, Sandisk.com e incluso el propio sitio de ASP.NET.

Para poder utilizar este producto nos surge la necesidad de un sitio donde alojarlo con el fin de servir el mismo a través de Internet. La plataforma Windows Azure dispone de todos los recursos necesarios para cubrir el servicio que necesitamos: Alojamiento para el sitio web, bases de datos relacionales, etcétera.

En el roadmap de futuro de producto se asegura que la próxima versión de Umbraco estará optimizada para su despliegue en Windows Azure. Sin embargo a día de hoy es posible contar con Umbraco en un entorno cloud utilizando las versiones 4.5.2 y 4.0.4.2 gracias a The Azure Accelerators Project disponible en Codeplex.

Objetivo

Lo que vamos a tratar en este artículo es cómo adaptar una solución cloud en Visual Studio 2010 para poder subir Umbraco CMS a la plataforma Windows Azure. Para ello, crearemos un entorno del CMS en local con el objetivo de tener todos los archivos y la configuración a punto para replicarlo en la nube. Antes de subirlo, enlazaremos nuestro sitio con SQL Azure, la base de datos relacional disponible en la nube de Microsoft, para tener los datos en la misma localización que Umbraco CMS. Para lograrlo, deberemos migrar la base de datos creada por Umbraco con la ayuda de SQL Azure Migration Wizard.

Una vez subida la base de datos , crearemos un disco duro virtual que almacenará nuestro sitio local con el fin de guardarlo en el servicio de almacenamiento Windows Azure Storage. Acto seguido, el acelerador quedará configurado con las credenciales oportunas para poder acceder a nuestra cuenta de almacenamiento y a través de una máquina de tipo worker role se proporcionará un entorno de ejecución para nuestro vhd. ¡No os preocupéis! Paso a paso J

¿Qué necesitamos?

- SQL Server 2008 R2 Express y Management Tools para la creación y la modificación de la base de datos de Umbraco.

- SQL Azure Migration Wizard que nos ayudará con la migración a SQL Azure.

- Visual Studio 2010.

- Windows Azure SDK 1.2 (A día de hoy el acelerador no soporta la última versión del SDK)

- Windows Azure AppFabric SDK 1.0. En este artículo solamente lo instalaremos para tener las referencias suficientes para la compilación del acelerador.

- Umbraco 4.2.5 (.NET Framework 3.5) para la creación del CMS.

- The Azure Accelerators Project, el cual nos ayudará a desplegar nuestro sitio en la nube.

- Cuenta para la plataforma Windows Azure.

- Dentro de nuestra subscripción para la plataforma Windows Azure, necesitaremos generar una cuenta Windows Azure Storage, donde subiremos el sitio web y un Hosted Service que utilizaremos para crear la máquina que contendrá el worker role.

Creación de la base de datos para Umbraco

Cuando creamos un sitio con Umbraco, una de las necesidades de la instalación es disponer de una base de datos en blanco. Por ello, accedemos a nuestra instancia local de SQL Server a través de Inicio => Todos los programas => Microsoft SQL Server 2008 R2 => SQL Server Management Studio y creamos una base de datos con el nombre umbraco_local, haciendo clic con el botón derecho sobre la carpeta Databases y pulsando sobre la opción New Database….

clip_image002

clip_image004

Instalación de Umbraco en local

Si bien tenemos la posibilidad de instalar Umbraco CMS a través de Web Platform Installer, la versión actual (4.6.1) no está soportada. ¿Cuál es el motivo?Actualmente la versión 4.6.1 solamente está disponible para el framework 4.0 de.NET. A día de hoy, la solución que tenemos para ejecutar este CMS en la nube se trata en realidad de utilizar Hostable Web Core, una nueva funcionalidad en IIS 7 que nos permite alojar un sitio web/web service dentro de un proceso. El único inconveniente es que HWC no soporta el framework 4.0, funcionalidad asegurada para la siguiente versión de Windows.

Descomprimimos la versión de Umbraco 4.5.2 y copiamos el contenido en c:\inetpub\wwwroot. Por otro lado, creamos un nuevo sitio en el IIS con la ruta de acceso física apuntando a dicha carpeta.

clip_image005

Nota : El sitio web podemos almacenarlo en cualquier ubicación. Se eligió c:\inetpub\wwwroot por ser el sitio predeterminado y para que las próximas configuraciones no fueran más complejas.

Si los pasos anteriores se realizaron correctamente, accedemos a través del navegador a https://localhost donde veremos el asistente de instalación de Umbraco:

clip_image007

Pulsamos en Next para iniciar la instalación y aceptamos la licencia del producto.

clip_image009

El segundo paso se trata de la configuración de la base de datos que utilizaremos para el sitio web.

clip_image011

Para completar la información, necesitamos una base de datos en blanco (creada en el paso anterior) y las credenciales para la generación de tablas. Para este ejemplo utilizaremos la cuenta de administrador sa.

clip_image013

Pulsamos en Install para que el asistente comience con la generación de las tablas de Umbraco CMS y pulsamos en siguiente una vez finalizada la operación.

clip_image015

En el tercer paso se comprobará si la aplicación dispone de todos los permisos necesarios para añadir, modificar y eliminar archivos que se encuentren dentro de aquellos directorios destinados al almacenamiento del contenido multimedia.

clip_image017

En el penúltimo paso, se nos pide la modificación de la contraseña del usuario de administración para poder acceder al apartado de mantenimiento de Umbraco CMS.

clip_image019

Para finalizar el asistente, se nos recomienda la instalación de Runway, un paquete que nos facilitará la creación de sitios web así como un repositorio donde poder instalar nuevas funcionalidades. Para este artículo deshabilitaremos esta instalación.

clip_image021

 

Nota: Para generar algo de contenido de forma automática, se ha instalado un starter kit llamado Creative Web Site starter (disponible en el repositorio de Umbraco) pero no es obligatorio.

 

clip_image023

 

Migración de la base de datos a SQL Azure

Respecto a la base de datos creada por Umbraco, es necesaria una única modificación para adecuarse a SQL Azure:

A través de SQL Server 2008 R2 Management Studio abrimos en modo diseño la tabla umbracoUserLogins donde añadiremos como clave primaria los campos contextID y userID.

clip_image024

¡Ya estamos listos para comenzar con la migración! Descargamos y descomprimimos SQL Azure Migration Wizard y ejecutamos SQLAzureMW.exe.La acción que debemos seleccionar será Analyze and Migrate SQL Database como se muestra en la imagen:

clip_image026

La configuración es bastante sencilla. En primer lugar nos pedirá las credenciales para la conexión de la base de datos local.

clip_image027

Si dejamos seleccionado Master DB podremos elegir a través de una lista la base de datos que queremos migrar.

clip_image029

Seleccionamos umbraco_local y presionamos en Next.

En la siguiente ventana, dejamos el valor por defecto, Script all database objects, para que pueda generar un script con todo el contenido de la base de datos. Continuamos con la instalación hasta que proceda a la generación del mismo.

clip_image031

Cuando finalice, el siguiente paso será facilitar las credenciales del servidor de SQL Azure.

clip_image032

Dejamos seleccionado de nuevo Master DB pero esta vez con el objetivo de crear una nueva base de datos llamada umbraco_sqlazure.

clip_image033

Continuamos con la migración y a partir de este momento ejecutará el script creado anteriormente en la nueva base de datos. Esta operación puede tardar algunos minutos.

clip_image035

Una vez finalizada creamos un nuevo login y un usuario para poder acceder a SQL Azure desde Umbraco.

-- ===============================================

-- Create SQL Login template for SQL Azure Database

-- ===============================================

CREATE LOGIN umbraco_user

WITH PASSWORD = 'password'

GO

 

Nota: Es necesario estar ubicado en la master para poder crear un login.

 

-- =================================================

-- Create User as DBO template for SQL Azure Database

-- =================================================

-- For login <login_name, sysname, login_name>, create a user in the database

CREATE USER umbraco_user

FOR LOGIN umbraco_user

WITH DEFAULT_SCHEMA = [dbo]

GO

-- Add user to the database owner role

EXEC sp_addrolemember N'db_owner', N'umbraco_user'

GO

Para finalizar con la configuración de Umbraco, cambiaremos la cadena de conexión del sitio web para que apunte a la nueva base de datos de SQL Azure y accedemos de nuevo a https://localhost a través del navegador.

<add key="umbracoDbDSN" value="server=tcp:SERVER.database.windows.net;database=umbraco_sqlazure;user id=umbraco_user;password=password" />

Configuración y ejecución del acelerador

Con la configuración del sitio apuntando a SQL Azure, ya podemos crear el disco duro virtual y subirlo a Windows Azure Storage. The Azure Accelerator Project será el encargado de realizar estas operaciones por nosotros para facilitarnos el trabajo J

Descargamos y descomprimimos la solución. Abrimos el archivo Accelerators.2010.sln con Visual Studio 2010 y nos aseguramos de que todas las referencias, especialmente las relacionadas con el SDK de Windows Azure y de AppFabric, estén cargadas correctamente. Asimismo, compilamos la solución y comprobamos que no se produce ningún error.

clip_image037

Para configurar el proyecto cloud hacemos doble clic sobre AcceleratorWorkerRole dentro de la carpeta Roles.

clip_image038

Nos ubicamos en Settings y modificamos los siguientes valores:

AcceleratorApplication: Cambiamos Umbraco,3.x por Umbraco,4.0

AcceleratorConnectionString: Reemplazamos UseDevelopmentStorage=true por la cadena de conexión de nuestra cuenta de Windows Azure Storage

clip_image040

Nota: Si nos posicionamos sobre el campo Value podemos modificar la cadena de conexión a través de un cuadro de diálogo.

 

clip_image042

Estos valores podemos encontrarlos en el apartado Hosted Services, Storage Account & CDN.

clip_image044

DiagnosticsConnectionString: Para este ejemplo utilizaremos la misma cuenta de Storage, pero se puede asignar una distinta (recomendado).

El resto de las opciones permanecerán con los valores por defecto.

Compilamos la solución en Release y ejecutamos una consola de comandos a través de Inicio => Todos los programas => Windows Azure SDK 1.2 => Windows Azure SDK Command Prompt como administrador.

Accedemos al directorio Publish alojado dentro de la carpeta de la solución y ejecutamos el siguiente comando:

AccelCon.exe /u /q /w

Esta operación puede tardar unos minutos. Una vez finalizada, tendremos creado el vhd y subido al Storage indicado en la configuración.

Despliegue de los paquetes a Windows Azure

Los últimos pasos sobre cómo desplegar Umbraco en la plataforma Windows Azure tratan de la publicación del proyecto AcceleratorService de la solución de The Azure Accelerator Project. Hacemos clic sobre él y seleccionamos la opción Publish…

clip_image045

Tenemos dos alternativas: Obtener los paquetes para desplegarlos a través del portal o bien realizar el despliegue de forma automática a través del Visual Studio, para cual sería necesario el uso de certificaciones. En este artículo obtendremos los paquetes.

clip_image046

Por último, accedemos al portal de Windows Azure y desplegamos los paquetes en un Hosted Service. Esta operación tardará unos minutos.

Cuando el servicio pase a modo Ready ¡Ya podremos disfrutar de Umbraco en la nube!

 

clip_image048

 

Gisela Torres Buitrago - https://www.returngis.net
Consultora en Aventia-Renacimiento

Enlaces de referencia

https://umbraco.org/
https://azureaccelerators.codeplex.com/