Share via


Publicar una aplicación de Node.js en Azure (App Service de Linux)

Este tutorial le guía a lo largo de la tarea de crear una aplicación sencilla de Node.js y publicarla en Azure.

Al publicar una aplicación de Node.js en Azure, hay varias opciones. Estas incluyen Azure App Service, una máquina virtual con un sistema operativo de su elección, Azure Container Service (AKS) para la administración con Kubernetes, una instancia de contenedor con Docker, etc. Para obtener más detalles sobre cada una de estas opciones, vea Compute.

En este tutorial, la aplicación se implementa en App Service de Linux. App Service de Linux implementa un contenedor Docker de Linux para ejecutar la aplicación de Node.js (a diferencia de App Service de Windows, que ejecuta aplicaciones de Node.js detrás de IIS en Windows).

En este tutorial se muestra cómo crear una aplicación de Node.js a partir de una plantilla instalada con Herramientas de Node.js para Visual Studio, insertar el código en un repositorio de GitHub y luego aprovisionar una instancia de Azure App Service a través del portal web de Azure para poder implementar desde el repositorio de GitHub. Para usar la línea de comandos para aprovisionar la instancia de Azure App Service e insertar el código desde un repositorio de Git local, vea Creación de una aplicación web de Node.js.

Importante

La información de este artículo se aplica únicamente al tipo de proyecto Node.js (.njsproj). La plantilla que se usa en este artículo ya no está disponible a partir de Visual Studio 2022, versión 17.8 Preview 2.

En este tutorial, aprenderá a:

  • Crear un proyecto de Node.js
  • Crear un repositorio de GitHub para el código
  • Crear una instancia de App Service de Linux en Azure
  • Implementar en Linux

Requisitos previos

  • Debe tener instalado Visual Studio y la carga de trabajo de desarrollo de Node.js.

    Si todavía no ha instalado Visual Studio 2019, vaya a la página Descargas de Visual Studio para instalarlo de forma gratuita.

    Si tiene que instalar la carga de trabajo pero ya tiene Visual Studio, vaya a Herramientas>Obtener herramientas y características… y se abrirá el Instalador de Visual Studio. Elija la carga de trabajo Desarrollo de Node.js y, después, haga clic en Modificar.

    Node.js workload in VS Installer

  • Debe tener instalado el runtime de Node.js.

    Si todavía no lo tiene instalado, instale la versión LTS desde el sitio web de Node.js. En general, Visual Studio detecta automáticamente el entorno de ejecución de Node.js instalado. Si no detecta un runtime instalado, puede configurar el proyecto para que haga referencia al runtime instalado en la página de propiedades (después de crear un proyecto, haga clic con el botón derecho en el nodo del proyecto y elija Propiedades).

Crear un proyecto de Node.js para ejecutarlo en Azure

  1. Abra Visual Studio.

  2. Cree una aplicación de Express de TypeScript.

    Presione Esc para cerrar la ventana de inicio. Presione Ctrl + Q para abrir el cuadro de búsqueda, escriba Node.js, elija Create a new Basic Azure Node.js Express 4 application (Crear una aplicación básica de Azure Node.js Express 4) (TypeScript). En el cuadro de diálogo que se abre, elija Crear.

    Si no ve la plantilla de proyecto Aplicación básica de Azure Node.js Express 4, debe agregar la carga de trabajo Desarrollo de Node.js. Para instrucciones detalladas, consulte los Requisitos previos.

    Visual Studio crea el proyecto y lo abre en el Explorador de soluciones (panel derecho).

  3. Presione F5 para compilar y ejecutar la aplicación y asegúrese de que todo funciona según lo previsto.

  4. Seleccione Archivo>Agregar al control de código fuente para crear un repositorio de Git local para el proyecto.

    En este punto, hay una aplicación de Node.js que usa el marco de Express y está escrita en TypeScript funcionando y se inserta en el repositorio en el control de código fuente local.

  5. Edite el proyecto como quiera antes de continuar con los pasos siguientes.

Insertar código de Visual Studio en GitHub

Para configurar GitHub para Visual Studio:

  1. Asegúrese de que la Extensión de GitHub para Visual Studio esté instalada y habilitada mediante el elemento de menú Herramientas>Extensiones y actualizaciones.

  2. En el menú, seleccione Ver>Otras ventanas>GitHub.

    Se abre la ventana de GitHub.

  3. Si no ve el botón Comenzar en la ventana de GitHub, haga clic en Archivo>Agregar al control de código fuente y espere a que la interfaz de usuario se actualice.

    Open the GitHub window

  4. Haga clic en Comenzar.

    Si ya está conectado a GitHub, aparece un cuadro de herramientas similar a la siguiente ilustración.

    GitHub repo settings

  5. Rellene los campos del nuevo repositorio que se va a publicar y luego haga clic en Publicar.

    Transcurridos unos instantes, aparece un banner que indica "Repositorio creado correctamente".

    En la siguiente sección se obtiene información sobre cómo publicar desde este repositorio en Azure App Service en Linux.

Crear una instancia de App Service de Linux en Azure

  1. Inicie sesión en Azure Portal.

  2. Seleccione App Services en la lista de servicios de la izquierda y luego haga clic en Agregar.

  3. En caso necesario, cree un grupo de recursos y un plan de App Service para hospedar la nueva aplicación.

  4. Asegúrese de establecer el SO en Linux y Pila en tiempo de ejecución en la versión necesaria de Node.js, como se muestra en la ilustración.

    Create a Linux App Service

  5. Haga clic en Crear para crear la instancia de App Service.

    Puede tardar unos minutos en implementarse.

  6. Una vez implementada, vaya a la sección Configuración de la aplicación y agregue un valor con el nombre SCM_SCRIPT_GENERATOR_ARGS y un valor de --node.

    Application settings

    Advertencia

    El proceso de implementación de App Service usa un conjunto de técnicas heurísticas para determinar qué tipo de aplicación se va a probar y ejecutar. Si se detecta un archivo .sln en el contenido distribuido, asume que se va a implementar un proyecto basado en MSBuild. El valor agregado arriba reemplaza esta lógica y especifica explícitamente que se trata de una aplicación de Node.js. Sin este valor, la aplicación de Node.js no se implementa si el archivo .sln forma parte del repositorio que se va a implementar en App Service.

  7. En Configuración de la aplicación, agregue otro valor con el nombre WEBSITE_NODE_DEFAULT_VERSION y un valor de 8.9.0.

  8. Una vez implementada, abra la instancia de App Service y seleccione Opciones de implementación.

    Deployment options

  9. Haga clic en Elegir origen, elija GitHub y luego configure los permisos necesarios.

    GitHub permissions

  10. Seleccione el repositorio y la rama que se van a publicar y, luego, haga clic en Aceptar.

    Publish to Linux App Service

    La página Opciones de implementación aparece durante la sincronización.

    Deploying and syncing with GitHub

    Una vez finalizada la sincronización, aparece una marca de verificación.

    El sitio ya está ejecutando la aplicación de Node.js desde el repositorio de GitHub y es accesible en la dirección URL creada para Azure App Service (de forma predeterminada, el nombre asignado a Azure App Service seguido de ".azurewebsites.net").

Modificar la aplicación e insertar cambios

  1. Agregue el código que se muestra aquí a app.ts después de la línea app.use('/users', users);. Esto agrega una API REST en la dirección URL /api.

    app.use('/api', (req, res, next) => {
        res.json({"result": "success"});
    });
    
  2. Compile el código y pruébelo en local, luego insértelo en el repositorio de GitHub.

    En Azure Portal se tarda unos segundos en detectar los cambios en el repositorio de GitHub; luego se inicia una nueva sincronización de la implementación. El resultado es similar a la ilustración siguiente.

    Modify and sync

  3. Una vez completada la implementación, vaya al sitio público y anexe /api a la dirección URL. Se devuelve la respuesta JSON.

Solución de problemas

  • Si se produce un problema en el proceso de node.exe (es decir, se produce una excepción no controlada), el contenedor se reinicia.
  • Cuando se reinicia el contenedor, se ejecuta por medio de diferentes técnicas heurísticas para determinar cómo iniciar el proceso de Node.js. Los detalles de la implementación pueden verse en generateStartupCommand.js.
  • Puede conectarse al contenedor en ejecución a través de SSH para investigar. Esto se hace fácilmente con Azure Portal. Seleccione la instancia de App Service y desplácese hacia abajo en la lista de herramientas hasta alcanzar SSH en la sección Herramientas de desarrollo.
  • Para ayudar a solucionar problemas, vaya a la opción Registros de diagnóstico de App Service y cambie la opción Registro de contenedor de Docker de Desactivado a Sistema de archivos. Los registros se crean en el contenedor en /home/LogFiles/ _docker.log* y se puede acceder a ellos en el cuadro mediante SSH o FTP (S).
  • Puede asignar un nombre de dominio personalizado al sitio, en lugar de la dirección URL *.azurewebsites.net asignada de forma predeterminada. Para obtener más detalles, vea el tema Asignación de un dominio personalizado.
  • Se recomienda implementar en un sitio de ensayo para realizar más pruebas antes de pasar a producción. Para obtener detalles sobre cómo configurarlo, vea el tema Creación de entornos de ensayo.
  • Vea Preguntas más frecuentes sobre Azure App Service en Linux para leer las preguntas más frecuentes.

Pasos siguientes

En este tutorial ha aprendido a crear una instancia de App Service de Linux y a implementar una aplicación de Node.js en el servicio. Es posible que quiera obtener más información sobre App Service de Linux.