Crear Cloud Service desde Azure PowerShell


En esta entrega demostraré como crear un Cloud Service desde la consola de PowerShell para Microsoft Azure (anteriormente Windows Azure) y poder desplegar un sitio web creado en Node.js.

Prerequisitos

  • Node.js
  • NPM
  • Windows Azure PowerShell
  • Preferible: Windows Server 2012 R2 Datacenter.

Creación del proyecto Azure

Para quitarnos algunas restricciones que tienen las políticas de seguridad de Windows Server y todo funcione

PS C:\> npm config set strict-ssl false

Verificar que se está en la ruta “C:\” y crear un directorio llamado “node” (mkdir node), navegar al directorio creado que es donde se almacenarán los proyectos de Node.js y escribir

PS C:\node> New-AzureServiceProject expressapp

PS C:\Node\expressapp>Add-AzureNodeWebRole

PS C:\Node\expressapp>Set-AzureServiceProjectRole WebRole1 node 0.10.21

Lo que está haciendo es crear un servicio de azure llamado “expressapp” en este agregar un rol de ejecución de Node.js y finalmente ponerle el nombre del rol junto con la versión de Node.js

Express.js & Node.js

Instalar Express-Generator para crear una plantilla básica de manera global

PS C:\node\expressapp> npm install express-generator -g

Navegar al directorio del rol creado anteriormente y crear el proyecto

PS C:\node\expressapp\WebRole1> express

Instalar las dependencias necesarias

PS C:\node\expressapp\WebRole1> npm install

Para no depender de npm para la ejecución del recién creado proyecto se hace un pequeño hack copiando el archivo de ejecución y haciéndole unas modificaciones, lo primero

PS C:\node\expressapp\WebRole1> copy bin/www server.js

En algún editor de texto modificar el archivo “server.js” modificando la siguiente línea

var app =require('../app');

Para que quede

var app =require('./app');

Comprobamos que haya quedado bien la aplicación ejecuntando el emulador de Azure de la siguiente manera

PS C:\node\expressapp\WebRole1>Start-AzureEmulator-launch

Modificando la vista

Si todo ha salido bien como se esperaba modificar el index de la aplicación que está en el directorio “views/index.jade”, abrir este archivo en un editor de texto de nuestra preferencia

extends layout

block content

h1= title

p Welcome to #{title} in Microsoft Azure

Si no se ha cerrado el emulador de Azure solo basta con refrescar la página para ver los cambios.

Publicación

Lo primero que hay que hacer es obtener los permisos de publicación, si se está en Windows Server 2012 R2 se debe acceder al “Server Manager” donde se encontrará “Local Server”, aquí ubicar “IE Enhanced Security Improvement Program” y ponerlo en “Off”; lo que esto hace es que podamos ingresar a cualquier página web o descargar archivos sin restricciones a grandes rasgos.

Ahora si en PowerShell escribir para que se nos abra una ventana en el navegador en el que se podrá seleccionar la suscripción que deseemos para publicar.

PS C:\node\expressapp\WebRole1> Get-AzurePublishSettingsFile

Guardar este archivo que se descarga en la ruta que se desee y que sea segura.

PS C:\node\expressapp\WebRole1> Import-AzurePublishSettingsFile <ruta del archivo que descargo>

Preferible, en este paso eliminar el archivo.

Para ver el nombre de la suscripción  debemos escribir el siguiente código

PS C:\node\expressapp\WebRole1> Get-AzureSubscription

Seleccionar la suscripción con el siguiente código y escribirlo a continuación

PS C:\node\expressapp\WebRole1> Select-AzureSubscription

Por último publicarlo con las configuraciones que se desee, para este caso quedaría así

PS C:\node\expressapp\WebRole1> Publish-AzureServiceProject-ServiceName myexpressapp -Location"East US"-Launch

Cuando se haya terminado el proceso se puede verificar en los mensajes que puso el comando en la consola.

Ahora para finalizar abrir la suscripción de Microsoft Azure donde se publicó y corroborar.

Habilitar el acceso remoto

Para habilitar el acceso remoto escribir el siguiente código en el mismo directorio del proyecto

PS C:\node\expressapp\WebRole1> Enable-AzureServiceProjectRemoteDesktop

Y actualizar el servicio pero este por lo general dura un poco más de tiempo

PS C:\node\expressapp\WebRole1> Publish-AzureServiceProject

En una próxima entrega explicaré como automatizar el proceso y explicaré con imágenes.