Instalar Ghost en ambiente de desarrollo y Windows Azure - parte 2

Avanzado

Continuamos con este maravilloso artículo que estoy seguro que les va a encantar. En la parte anterior nos enfocamos en el alistamiento del entorno, esta vez lo haremos en el despliegue para montar Ghost en Windows Azure Websites.

Esta es la segunda parte del artículo, encuentra acá la primera parte:

Instalar Ghost en ambiente de desarrollo y Windows Azure - parte 1

Como se que a muchos de ustedes les encanta hacer cosas por línea de comandos he decidido que TODO lo que hagamos en Windows Azure lo haremos por línea de comandos, si bien es perfectamente factible hacerlo desde la interfaz Web.

Apuesto a que no sabian que podían hacer TODO en Windows Azure por línea de comandos...

Utilizar tu cuenta de Windows Azure desde la consola de comandos

Si ya habías cargado previamente tus cuentas en la consola de comandos este paso no es necesario.

Lo primero es que debes obtener tus credenciales de Azure en un archivo de publishing settings, sino las tienes has esto:

 azure account download  

Si por alguna extraña razón no leiste la salida del comando, lo que sucederá es que te ha redirigido al browser donde se descargará el archivo publishing settings. Sino habías iniciado sesión en la web de azure antes entonces te pedirá iniciarla.

Una vez descargado impórtalo de la siguiente manera (desde luego debes cambiar el path según tu caso)

 azure account import "K:\Downloads\Windows Azure MSDN.publishsettings"  

Crear un sitio web en Azure

Debemos crear un sitio que cumpla con las siguientes condiciones:

  • Website en tu cuenta de Azure.
  • Ubicado en la zona más cercana a tu casa (en mi caso "East US")
  • Con soporte habilitado para Git

Para ello ingresa lo siguiente

 azure site create myghostsitename --location "East US" --git  

Si deseas verificar que funcionó a aparte de la info de la consola de comandos puedes visitar la URL de tu nuevo website, o verificar en el portal.

Para que Ghost funcione adecuadamente, debe enterarse si esta en ambiente de desarrollo o de producción, hay varias formas de hacer esto pero mi forma preferida es crear una variable de entorno en el website, así:

 #establecer el sitio actual
azure site set myghostsitename  
#adicionar parámetro
azure site appsetting add NODE_ENV=production  

Porqué hemos creado un repositorio de Git en el website?

A parte de las ventajas evidentes como el hecho de poder mantener diferentes versiones de tu sitio en la nube, lo cierto es que hay algunas tareas de despliegue que se deben realizar para montar un website nodejs.

Estas tareas puedes hacerla manualmente, básicamente son:

  1. crear algunos archivos de configuración
  2. instalar/activar la versión necesaria de nodejs en el web server
  3. descargar los paquetes necesarios para que Ghost funcione
  4. ejecutar la inicialización del

Asociar tu sitio de Azure con tu repositorio local

Localmente ya tienes un repositorio, recuerda la primera parte de este artículo, y en Azure acabas de crear un website con un repositorio git.

Lo que haremos será asociar el repositorio local con el repositorio remoto de Azure.

Para ello en la consola nos dirigimos a la carpeta dónde tenemos nuestro repositorio local, o sea donde tenemos los archivos de Ghost, allí utilizamos el comando git remote y le indicamos como llamaremos al repositorio remoto, en este caso azure.

 git remote add azure https://GotoAzure@juankruizghost.scm.azurewebsites.net:443/juankruizghost.git  

La url del repositorio git del website debes obtenerla desde el portal, sorry esta partecita aún no se puede hacer por línea de comando.

Configuración de archivos de Ghost

Editamos el archivo config.js y nos aseguramos de establecer en la url de nuestro nuevo sitio, esto hay que hacerlo en la sección development pero tambien en la sección production, adicionalmente en la sección production debemos cambiar el número de puerto para que sea dinámico dejándolo como se ve a continuación.

 production: {  
    url: 'https://juankruizghost.azurewebsites.net',
    mail: {},
    database: {
        client: 'sqlite3',
        connection: {
            filename: path.join(__dirname, '/content/data/ghost.db')
        },
        debug: false
    },
    server: {
        // Host to be passed to node's `net.Server#listen()`
        host: '127.0.0.1',
        // Port to be passed to node's `net.Server#listen()`, for iisnode set this to `process.env.PORT`
        port: process.env.PORT
    }
},

ATENTOS

  • El valor process.env.PORT no va en comillas
  • La url debe estar completa no puedes omitir el "https://"

Cuando Windows Azure carga un sitio node.js hace uso del archivo server.js que no viene con ghost pero para no complicarnos creémoslo desde la línea de comandos y adicionemos la línea que aparece a continuación así

 copy con server.js  
var GhostServer = require('./index');  
^Z
        1 file(s) copied.

Hacer commit de los cambios y subirlos Windows Azure

Editemos el archivo .gitignore, allí aseguremonos de poner estas líneas en comentario, es decir adicionemos "#" al inicio de cada una de ellas. En el archivo no aparecen consecutivas debes buscarlas.

 # /core/client/assets/css
# /core/built
# config.js

Esto garantiza que esos archivos hagan parte de la versión en el servidor, ya que allí no estan y los necesitamos para que Ghost arranque.

Hemos hecho un par de cambios localmente, adicionemoslos en nuestro control de versiones

 #adicionar a la version los archivos adicionados/modificados
git add .  
#confirmar los cambios 
git commit -m "configuración de ghost"  

Verifiquemos que localmente todo este funcionando

 npm start  

Al navegar al sitio este debe iniciar sin problemas.

Es tiempo de enviar los cambios a Windows Azure, al insertar el comando git push te pedirá contraseña, sino la sabes puedes resetearla desde el Dashboard del website.
azure credenciales deployment

 #preparar los js, css, sass 
grunt prod  
#enviar los cambios al repositorio de azure
git push azure master  

Si estuviste atentos a la salida del comando en consola te habrás dado cuenta de todas las tareas que se ejcutan al momento de hacer el despliegue, como viste no es solo asunto de copiar archivos.

Ahora naveguemos a la URL del web site y...
Ghost running on azure

Terminamos!

Personalizar el blog

Es hora de seguir por tu cuenta, ya hemos montado el blog en Windows Azure y localmente, de ahora en más es cuestión de personalizarlo pero para ello no me necesitas :).

Visita la documentación de Ghost para realizar esta tarea, para que no te enrredes o pierdas tiempo revisando algunas cosas que ya te enseñe mira las páginas en este orden:

  1. Uso
  2. Administración
  3. Escribir post

COMPARTAN SU NUEVO BLOG!

Esta es la segunda parte del artículo, encuentra acá la primera parte:

Instalar Ghost en ambiente de desarrollo y Windows Azure - parte 1