Cómo montar un blog basado en Ghost en Windows Azure Web Sites

Windows Azure Web Sites, en adelante WAWS, permite a los usuarios de Windows Azure alojar sitios web en segundos. Con una subscripción de Azure puedes tener hasta 10 sitios web gratuitos, con cuotas diarias de CPU, ancho de banda y espacio. Es un servicio estupendo si quieres montar un blog personal muy sencillo.

En ese sentido Ghost es una plataforma de blogging basada en Node.js que utiliza Markdown para el contenido de los post. WAWS permite ejecutar aplicaciones web basadas en ASP.NET, Node.js, Python y PHP, así que es la mejor opción para poder alojar nuestro blog.

Para hacer más interesante el proceso se va utiliza la universal CLI de Azure que está basado en Node.js también.

Los requisitos para poder empezar a crear el sitio web y poder bajarte las dependencias son:

· Node.js para el CLI y NPM (Node Package Manager): https://nodejs.org/

· Windows Azure Universal CLI: npm install azure-cli –g

· Git para subir nuestro Código al sitio web: https://git-scm.com/downloads

Una vez que se tienen los requisitos instalados, se puede empezar a trabajar.

Windows Azure Universal CLI

El primer paso es registrar nuestra subscripción de Windows Azure con la CLI, para hacer eso, se abre una ventana de comandos de Windows y se escribe el siguiente comando:

azure account download

Lo que fuerza a bajarse del portal el fichero .publishsetting que contiene todos los datos necesarios para poder conectarse al portal de Windows Azure y poder realizar operaciones. Una vez descargado el fichero se tiene que importar para poder tenerlo como activo en la plataforma. Este proceso se realiza ejecutando el siguiente comando:

azure account import {path to .publishsettings file}

A partir de este momento se puede ejecutar este comando para listar las subscripciones activas:

azure account list

Creando el sitio web desde la línea de comando

Una vez que se tiene activa la línea de comando, se puede realizar opciones sobre la cuenta. Ahora es el momento de crear el sitio web. En este caso, además, se quiere que la web se comporte como un repositorio remoto para poder hace push desde git.

Una cosa a tener en cuenta con este proceso, es que, cuando se ejecuta el comando, el propio proceso de generar el sitio web en Windows Azure, crea en local un repositorio git y además agrega la url remota del repositorio como un origen remoto, así que antes de poder ejecutar este comando, sería ideal bajarse el código de Ghost en una carpeta donde ya este el código fuente.

Descargando Ghost

Para descargar Ghost, se puede hacer de dos maneras, bajarte el código fuente sin los módulos de los que depende, o generar el código. En este caso vamos a ir por la opción más sencilla que simplemente es bajarse el código y resolver las dependencias. Para ello, hay que ir a https://ghost.org/download/ y pulsar el botón de descarga.

clip_image002[4]

El fichero zip se puede descomprimir en c:\ghost y ahí mismo inicializar el repositorio git.

clip_image004[4]

Creando el sitio web

Ahora que ya se dispone del código fuente de Ghost, es el momento de crear el sitio web, desde la línea de comando.

clip_image006[4]

Como se puede apreciar en la captura de pantalla, además de crear el sitio web, el comando ha ejecutado localmente git init y git remote add.

Configurando Ghost para Windows Azure Web Sites

Ahora se va a proceder a configurar Ghost de manera correcta, resolver las dependencias, añadir todos los ficheros al repositorio y establecer la configuración correcta.

WAWS requiere que el fichero .js inicial para ejecutarse se llame server.js así que hay que hacer una copia del fichero index.js.

Para terminar de configurar Ghost hay que abrir un fichero llamado config.example.js donde existe un objeto de JavaScript que contiene la configuración del sitio web para los diferentes modos. En este ejemplo se tiene que configurar production, porque después en la configuración del sitio web se agregará esa variable de entorno.

Hay que cambiar la url del sitio web por la nuestra (myghostblog01.azurewebsites.net) además de cambiar el puerto por el cual se escucharán las peticiones web. De manera predeterminada es el puerto 80, pero hay un mecanismo por el cual se puede preguntar al runtime cuál es el puerto (process.env.PORT).

Hay que tener en cuenta que cuando se haga el push en el servidor y se despliegue la app el fichero config.example.js pasará a ser config.js y si se desean hacer más modificaciones se tendrán que hacer en el fichero config.js.

Establecer el entorno de Node.js a producción

Para cambiar el entorno se tiene que crear una variable de configuración del sitio web. Como siempre se puede hacer a través del portal o escribiendo el siguiente comando:

azure site config add NODE_ENV=production

clip_image008

Subir el blog a través de GIT

El último paso para publicar el blog, es añadir los ficheros locales al repositorio de Git, hacer commit local y luego hacer push al servidor remoto, en el cual se ejecutará el proceso de publicación de Ghost.

En el portal de Windows Azure para el sitio web, existe una pestaña llamad deployments, que contiene información sobre los despliegues que se han realizado en la web. Como todavía no se han realizado ninguno, aparece información de cómo hacer un commit al servidor.

clip_image010

Para hacer el commit local hay que ejecutar estos comandos de Git:

git add .

git commit –m “Initial Checkin”

git push azure master

Cuando se ejecute este último commando, la consola de git solicitará al usuario las credenciales de deployment para el repositorio. Si no se ha creado una contraseña se puede crear desde el panel de administración del sitio web.

clip_image011

Una vez que se ha ejecutado el comando de push en el servidor la consola aparece el resultado indicándonos que ha sido correcto.

clip_image013

El portal de Windows Azure ahora ha cambiado y se puede ver cuál es el deployment activo.

clip_image015

El último paso de todo el proceso sería navegar hasta la el blog de Ghost y comprobar que funciona correctamente.

clip_image017

Conclusiones

Windows Azure Web Sites es la plataforma para publicar sitios webs más flexible que existe ahora mismo en el mercado. Permite utiliza tanto Git, como TFS para conectar un repositorio de código y poder cerrar el ciclo de integración continua y entrega continuada que existe en los equipos para entregar funcionalidad.

Este artículo simplemente se ha centrado en una plataforma de bloggin como es Ghost, pero si el usuario quisiera desarrollar algún módulo para Ghost, tendría en WAWS la plataforma perfecta para testear, desplegar y desarrollar online con Visual Studio Online “Monaco”.

Luis Guerrero.

Technical Evangelist Windows Azure

@guerrerotook