Implementación de archivos web estáticos
Nota:
Los planes de Básico, Estándar y Enterprise quedarán en desuso a partir de mediados de marzo de 2025, con un período de retiro de 3 años. Se recomienda realizar la transición a Azure Container Apps. Para más información, consulte el anuncio de retirada de Azure Spring Apps.
El plan de consumo estándar y dedicado quedará obsoleto a partir del 30 de septiembre de 2024, con un cierre completo al cabo de seis meses. Se recomienda realizar la transición a Azure Container Apps. Para obtener más información, consulte Migrar el plan de consumo y dedicado Azure Spring Apps Standard a Azure Container Apps.
Este artículo se aplica a: ❎ Básico/Estándar ✅ Enterprise
En este artículo se muestra cómo implementar los archivos estáticos en una instancia de plan de Azure Spring Apps Enterprise mediante el paquete de compilación de servidores web Tanzu. Este enfoque es útil si tiene aplicaciones que son exclusivamente para contener archivos estáticos como HTML, CSS o aplicaciones front-end compiladas con el marco de JavaScript que prefiera. Puede implementar directamente estas aplicaciones con un servidor web configurado automáticamente (HTTPD y NGINX) para atender esos recursos.
Requisitos previos
- Una instancia de plan de Azure Spring Apps Enterprise ya aprovisionada. Para más información, consulte Inicio rápido: Compilación e implementación de aplicaciones en Azure Spring Apps con el plan Enterprise.
- Una o varias aplicaciones que se ejecutan en Azure Spring Apps.
- CLI de Azure, versión 2.45.0 o superior.
- Tus archivos estáticos o tu aplicación dinámica front-end, por ejemplo, una aplicación React.
Implementación de archivos estáticos
Nota:
Este artículo se centra en describir las configuraciones de implementación y la resolución de problemas específicos de la implementación de archivos estáticos web. Para comprender los escenarios generales de compilación e implementación del plan Azure Springs Apps Enterprise, consulte la sección Crear un servicio bajo demanda Utilizar Tanzu Build Service y Cómo implementar aplicaciones políglotas.
Puede implementar archivos estáticos en Azure Spring Apps mediante servidores web NGINX o HTTPD de las siguientes maneras:
- Puede implementar archivos estáticos directamente. Azure Spring Apps configura automáticamente el servidor web especificado para servir los archivos estáticos.
- Puede crear la aplicación front-end en el marco de JavaScript que prefiera y, a continuación, implementar la aplicación front-end dinámica desde el código fuente. Azure Spring Apps compila la aplicación en contenido estático y usa el servidor web configurado para atender los archivos estáticos.
También puede crear un archivo de configuración del servidor para personalizar el servidor web.
Ejemplos de implementación
Los ejemplos de la CLI de Azure de esta sección muestran la compilación e implementación de archivos estáticos para dos escenarios de registro de contenedor:
- Registro de contenedor administrado de Azure Spring Apps.
- Registro de contenedor administrado por el usuario.
Compilar e implementar archivos estáticos directamente
Este sencillo ejemplo despliega archivos estáticos directamente utilizando un archivo de configuración de servidor por defecto autogenerado.
- Registro de contenedor administrado de Azure Spring Apps
- Registro de contenedor administrado por el usuario
El siguiente comando implementa un archivo estático:
az spring app deploy
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name <app-name> \
--source-path <path-to-source-code> \
--build-env BP_WEB_SERVER=nginx
Para obtener información sobre el uso de variables de entorno, consulte la sección Configurar un archivo de configuración de servidor autogenerado.
Compilación e implementación de la aplicación front-end como contenido estático
En este ejemplo se implementa una aplicación front-end dinámica desde el código fuente.
- Registro de contenedor administrado de Azure Spring Apps
- Registro de contenedor administrado por el usuario
El comando siguiente implementa una aplicación:
az spring app deploy \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name <app-name> \
--source-path <path-to-source-code> \
--build-env BP_WEB_SERVER=nginx BP_NODE_RUN_SCRIPTS=build BP_WEB_SERVER_ROOT=build
Compilación e implementación de archivos estáticos mediante un archivo de configuración personalizado
En este ejemplo se implementan archivos estáticos mediante un archivo de configuración de servidor personalizado.
- Registro de contenedor administrado de Azure Spring Apps
- Registro de contenedor administrado por el usuario
El comando siguiente implementa una aplicación:
az spring app deploy \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name <app-name> \
--source-path <path-to-source-code>
Para más información, consulte la sección Uso de un archivo de configuración de servidor personalizado de este artículo.
Código de ejemplo
Nota:
El código de ejemplo lo mantiene la comunidad de código abierto Paketo.
Los ejemplos de módulos de compilación de Paketo muestran casos de uso comunes para varios tipos de aplicación diferentes, incluidos los siguientes casos de uso:
- Servir archivos estáticos con un archivo de configuración de servidor predeterminado mediante
BP_WEB_SERVER
para seleccionar HTTPD o NGINX. - Usar el Administrador de paquetes de Node para compilar una Aplicación de React en archivos estáticos a los que puede servir un servidor web. Siga estos pasos:
- Defina un script bajo la propiedad
scripts
del archivo package.json que compila los recursos estáticos listos para producción. Para React, esbuild
. - Averigüe dónde se almacenan los recursos estáticos después de que se ejecute el script de compilación. Para React, los recursos estáticos se almacenan en
./build
de manera predeterminada. - Establezca
BP_NODE_RUN_SCRIPTS
en el nombre del script de compilación. - Establezca
BP_WEB_SERVER_ROOT
en el directorio de salida de compilación.
- Defina un script bajo la propiedad
- Proporcionar archivos estáticos con su propio archivo de configuración de servidor, mediante HTTPD o NGINX.
Configurar un archivo de configuración de servidor autogenerado
Puede usar variables de entorno para modificar el archivo de configuración del servidor generado automáticamente. En la tabla siguiente se muestran las variables de entorno admitidas.
Variable de entorno | Valor admitido | Descripción |
---|---|---|
BP_WEB_SERVER |
nginx o httpd | Especifica el tipo de servidor web, nginx para Nginx o httpd para el servidor HTTP de Apache. Necesario cuando se usa el archivo de configuración del servidor generado automáticamente. |
BP_WEB_SERVER_ROOT |
Una ruta de acceso de archivo absoluta o una ruta de acceso de archivo relativa a /workspace. | Establece el directorio raíz de los archivos estáticos. El valor predeterminado es public . |
BP_WEB_SERVER_ENABLE_PUSH_STATE |
true o false | Habilita el enrutamiento de estado de inserción para la aplicación. Independientemente de la ruta solicitada, index.html siempre se sirve. Útil para aplicaciones web de página única. |
BP_WEB_SERVER_FORCE_HTTPS |
true o false | Aplica HTTPS para las conexiones de servidor redirigiendo todas las solicitudes para usar el protocolo HTTPS. |
No se admiten las siguientes variables de entorno.
BP_LIVE_RELOAD_ENABLED
BP_NGINX_VERSION
BP_HTTPD_VERSION
Uso de un archivo de configuración de servidor personalizado
Puede configurar el servidor web mediante un archivo de configuración de servidor personalizado. En la siguiente tabla se muestra la ruta de acceso del archivo de configuración:
Servidor web | Ruta de acceso del archivo de configuración predeterminada | Personalización de la ruta de acceso del archivo de configuración del servidor |
---|---|---|
nginx | nginx.conf en la ruta de acceso raíz del código fuente. | Use la variable de entorno BP_NGINX_CONF_LOCATION para especificar el nombre del archivo de configuración. Coloque el archivo en la ruta de acceso raíz del código fuente. |
httpd | httpd.conf en la ruta de acceso raíz del código fuente. | No admitida. |
El archivo de configuración debe cumplir las restricciones descritas en la tabla siguiente.
Configuración | Descripción | Configuración de Nginx | Configuración de Httpd |
---|---|---|---|
Puerto de escucha | El servidor web debe escuchar en el puerto 8080. El servicio comprueba la preparación del puerto en TCP y si está en ejecución. Debe usar la variable PORT con plantilla en el archivo de configuración. El número de puerto adecuado se inserta cuando se inicia el servidor web. |
listen {{PORT}} |
Listen "${PORT}" |
Ruta de acceso al registro | Ruta de acceso del registro de configuración a la consola. | access_log /dev/stdout , error_log stderr |
ErrorLog /proc/self/fd/2 |
Ruta de acceso de archivo con permiso de escritura | Al servidor web se le concede permiso de escritura al directorio /tmp. La configuración de la ruta de acceso completa requiere el permiso de escritura en el directorio /tmp. | Por ejemplo: client_body_temp_path /tmp/client_body_temp | |
Tamaño máximo aceptado del cuerpo de la solicitud de cliente | El servidor web está detrás de la puerta de enlace. El tamaño máximo aceptado del cuerpo de la solicitud de cliente se establece en 500 m en la puerta de enlace y el valor del servidor web debe ser inferior a 500 m. | client_max_body_size debe ser inferior a 500 m. |
LimitRequestBody debe ser inferior a 500 m. |
Enlaces de módulos de compilación
La implementación de archivos estáticos en el plan Enterprise de Azure Spring Apps admite el enlace buildpack de Dynatrace. No se admite el enlace de módulos de compilación htpasswd
.
Para más información, consulte Cómo configurar la integración de APM y los certificados de CA.
Errores comunes de compilación e implementación
La implementación de archivos estáticos en una instancia de Azure Spring Apps Enterprise puede generar los siguientes errores de compilación comunes:
ERROR: No buildpack groups passed detection.
ERROR: Please check that you're running against the correct path.
ERROR: failed to detect: no buildpacks participating
La causa principal de estos errores es que no se especifica el tipo de servidor web. Para resolver estos errores, establezca la variable BP_WEB_SERVER
de entorno en nginx o httpd.
En la tabla siguiente se describen los errores de implementación comunes al implementar archivos estáticos en el nivel Enterprise de Azure Spring Apps.
Mensaje de error | Causa principal | Solución |
---|---|---|
112404: Exit code 0: purposely stopped, please refer to https://aka.ms/exitcode |
No se pudo iniciar el servidor web. | Valide el archivo de configuración del servidor para ver si hay un error de configuración. A continuación, compruebe si el archivo de configuración cumple las restricciones descritas en la sección Usar de un archivo de configuración de servidor personalizado. |
mkdir() "/var/client_body_temp" failed (13: Permission denied) |
El servidor web no tiene permiso de escritura en la ruta de acceso especificada. | Configure la ruta de acceso en el directorio /tmp; por ejemplo: /tmp/client_body_temp. |