Creación e implementación de una aplicación Node.js en una instancia de Azure Cloud Services (clásico)

Importante

Cloud Services (clásico) ahora está en desuso para los nuevos clientes y se retirará el 31 de agosto de 2024 para todos los clientes. Las nuevas implementaciones deben utilizar el nuevo modelo de implementación basado en Azure Resource Manager Azure Cloud Services (soporte extendido) .

En este tutorial se muestra cómo crear una aplicación de Node.js simple con Servicio en la nube de Azure. Cloud Services son los bloques de compilación de aplicaciones en la nube escalables en Azure. Permiten la separación y la administración independiente de los componentes front-end y back-end de su aplicación, así como su escalación horizontal. Cloud Services proporciona una máquina virtual dedicada y robusta para hospedar cada rol de forma fiable.

Para obtener más información sobre Cloud Services y sobre su comparación con Azure Websites y Azure Virtual Machines, consulte Comparación entre Azure Websites, Cloud Services y Virtual Machines.

Sugerencia

¿Desea compilar un sitio web sencillo? Si el escenario solo requiere un sencillo front-end para sitios web, considere la posibilidad de utilizar una aplicación web ligera. Puede actualizar a un Servicio en la nube más adelante, cuando su aplicación web sea más grande y sus requisitos cambien.

Siguiendo este tutorial, podrá compilar una aplicación web sencilla hospedada en un rol web. Utilizará el emulador de proceso para probar su aplicación localmente y, a continuación, la implementará con las herramientas de línea de comandos de PowerShell.

La aplicación es una aplicación sencilla de "Hola a todos":

Un explorador web muestra la página web Hello World

Requisitos previos

Nota:

Este tutorial usa PowerShell de Azure, que requiere Windows.

  • Instale y configure Azure PowerShell.
  • Descargue e instale el [SDK de Azure para .NET 2.7]. En la configuración de la instalación, seleccione:
    • MicrosoftAzureAuthoringTools
    • MicrosoftAzureComputeEmulator

Cree un proyecto del servicio de nube de Azure

Realice las siguientes tareas para crear un nuevo proyecto de Servicio en la nube de Azure, junto con scaffolding básico de Node.js:

  1. Ejecute Windows PowerShell como administrador y, en el menú Inicio o en la pantalla Inicio, busque Windows PowerShell.

  2. Conecte PowerShell a su suscripción.

  3. Escriba el siguiente cmdlet de PowerShell para crear el proyecto:

    New-AzureServiceProject helloworld
    

    Resultado del comando New-AzureService helloworld

    El cmdlet New-AzureServiceProject genera una estructura básica para publicar una aplicación de Node.js en un servicio en la nube. Contiene archivos de configuración necesarios para la publicación en Azure. El cmdlet también cambia su directorio de trabajo al directorio del servicio.

    El cmdlet crea los siguientes archivos:

    • ServiceConfiguration.Cloud.cscfg, ServiceConfiguration.Local.cscfg y ServiceDefinition.csdef: estos archivos específicos de Azure son necesarios para publicar la aplicación. Para obtener más información, consulte Información general de la creación de un servicio hospedado para Azure.
    • deploymentSettings.json: almacena la configuración local que utilizan los cmdlet de implementación de Azure PowerShell.
  4. Escriba el siguiente comando para agregar un rol web nuevo:

    Add-AzureNodeWebRole
    

    Salida del comando Add-AzureNodeWebRole

    El cmdlet Add-AzureNodeWebRole crea una aplicación de Node.js básica. También modifica los archivos .csfg y .csdef para agregar entradas de configuración al nuevo rol.

    Nota:

    Si no especifica un nombre de rol, se usa el nombre predeterminado. Puede proporcionar un nombre como primer parámetro de cmdlet: Add-AzureNodeWebRole MyRole

La aplicación Node.js se define en el archivo server.js, que se encuentra en el directorio del rol web (WebRole1 de forma predeterminada). Este es el código:

var http = require('http');
var port = process.env.port || 1337;
http.createServer(function (req, res) {
    res.writeHead(200, { 'Content-Type': 'text/plain' });
    res.end('Hello World\n');
}).listen(port);

Este código es básicamente el mismo que el ejemplo "Hola a todos" del sitio web de nodejs.org , excepto en que utiliza el número de puerto asignado por el entorno de la nube.

Implementación de la aplicación en Azure

Nota

Para completar este tutorial, deberá tener una cuenta de Azure. Puede activar sus beneficios de suscriptor a MSDN o registrarse para obtener una evaluación gratuita.

Descarga de la configuración de publicación de Azure

Para implementar una aplicación en Azure, en primer lugar es preciso descargar la configuración de publicación de la suscripción de Azure.

  1. Ejecute el siguiente cmdlet de PowerShell de Azure:

    Get-AzurePublishSettingsFile
    

    Este cmdlet utilizará su explorador para navegar hasta la página de descarga de la configuración de publicación. Es posible que se le solicite iniciar sesión con una cuenta de Microsoft. En ese caso, utilice una cuenta asociada a su suscripción de Azure.

    Guarde el perfil descargado en un ubicación de archivo a la que pueda tener acceso fácilmente.

  2. Ejecute el siguiente cmdlet para importar el perfil de publicación que descargó:

    Import-AzurePublishSettingsFile [path to file]
    

    Nota:

    Después de importar la configuración de publicación, considere la posibilidad de eliminar el archivo .publishSettings descargado, ya que contiene información que podría permitir que alguien obtuviera acceso a su cuenta.

Publicación de la aplicación

Para publicar, ejecute los siguientes comandos:

$ServiceName = "NodeHelloWorld" + $(Get-Date -Format ('ddhhmm'))
Publish-AzureServiceProject -ServiceName $ServiceName  -Location "East US" -Launch
  • -ServiceName especifica el nombre de la implementación. Debe ser un nombre exclusivo. De lo contrario, se producirá un error en el proceso de publicación. El comando Get-Date agrega una cadena de fecha y hora que debería hacer que el nombre sea único.
  • -Location especifica el centro de datos en que se hospedará la aplicación. Para ver una lista de los centros de datos disponibles, utilice el cmdlet Get-AzureLocation .
  • -Launch abre una ventana del explorador y navega hasta el servicio hospedado después de que se haya completado la implementación.

Después de que finalice satisfactoriamente el proceso de publicación, verá una respuesta similar a la siguiente:

La salida del comando Publish-AzureService

Nota:

La implementación de la aplicación puede tardar varios minutos y la aplicación estará disponible cuando se publique.

Una vez finalizada la implementación, se abrirá una ventana del explorador y navegará hasta el servicio en la nube.

Ventana del explorador que muestra la página hello world; la dirección URL indica que la página está hospedada en Azure.

La aplicación ya se está ejecutando en Azure.

El cmdlet Publish-AzureServiceProject realiza los siguientes pasos:

  1. Crea un paquete de implementación. El paquete contiene todos los archivos en la carpeta de la aplicación.
  2. Crea una nueva cuenta de almacenamiento si no hay ninguna disponible. La cuenta de almacenamiento de Azure se utiliza para almacenar el paquete de la aplicación durante la implementación. Una vez finalizada la implementación, puede eliminar de forma segura la cuenta de almacenamiento.
  3. Crea un nuevo servicio en la nube si no hay ninguno disponible. Un servicio en la nube es el contenedor en el que se hospeda la aplicación cuando se implementa en Azure. Para obtener más información, consulte Información general de la creación de un servicio hospedado para Azure.
  4. Publica el paquete de implementación en Azure.

Detención y eliminación de la aplicación

Después de implementar su aplicación, es posible que desee deshabilitarla para evitar costes adicionales. Azure factura las instancias de rol web por hora consumida de tiempo de servidor. El tiempo de servidor se empieza a consumir una vez implementada su aplicación, incluso si las instancias no se están ejecutando y se encuentran detenidas.

  1. En la ventana de Windows PowerShell, detenga la implementación del servicio creado en la sección anterior con el siguiente cmdlet:

    Stop-AzureService
    

    La detención del servicio puede durar varios minutos. Una vez detenido el servicio, recibirá un mensaje que le avisará de su detención.

    Estado del comando Stop-AzureService

  2. Para eliminar el servicio, llame al siguiente cmdlet:

    Remove-AzureService
    

    Cuando se le solicite, escriba Y para eliminar el servicio.

    La eliminación del servicio puede durar varios minutos. Una vez eliminado el servicio, recibirá un mensaje que le avisará de su eliminación.

    Estado del comando Remove-AzureService

    Nota

    La eliminación del servicio no elimina la cuenta de almacenamiento que se creó al publicar por primera vez el servicio, por lo que se le seguirá facturando por el almacenamiento utilizado. Si nada más está utilizando el almacenamiento, puede eliminarlo.

Pasos siguientes

Para más información, vea el Centro para desarrolladores de Node.js.