Implementare file statici Web

Nota

I piani Basic, Standard ed Enterprise saranno deprecati a partire dalla metà di marzo 2025, con un periodo di ritiro di 3 anni. È consigliabile eseguire la transizione ad App Azure Container. Per altre informazioni, vedere l'annuncio di ritiro di Azure Spring Apps.

Il piano Standard a consumo e dedicato sarà deprecato a partire dal 30 settembre 2024, con un arresto completo dopo sei mesi. È consigliabile eseguire la transizione ad App Azure Container. Per altre informazioni, vedere Eseguire la migrazione del consumo di Azure Spring Apps Standard e del piano dedicato alle app Azure Container.

Questo articolo si applica a:❌ Basic/Standard ✔️ Enterprise

Questo articolo illustra come distribuire i file statici in un'istanza del piano Enterprise di Azure Spring Apps usando la buildpack dei server Web Tanzu. Questo approccio è utile se si dispone di applicazioni esclusivamente per contenere file statici come HTML, CSS o applicazioni front-end compilate con il framework JavaScript preferito. È possibile distribuire direttamente queste applicazioni con un server Web configurato automaticamente (HTTPD e NGINX) per gestire tali asset.

Prerequisiti

Distribuire i file statici

Nota

Questo articolo è incentrato sulla descrizione delle configurazioni di distribuzione e sulla risoluzione dei problemi specifici per la distribuzione di file statici Web. Per comprendere gli scenari generali di compilazione e distribuzione per il piano Enterprise di Azure Springs Apps, vedere la sezione Creare un servizio su richiesta di Usare il servizio di compilazione Tanzu e Come distribuire app polyglot.

È possibile distribuire file statici in Azure Spring Apps usando server Web NGINX o HTTPD nei modi seguenti:

  • È possibile distribuire direttamente i file statici. Azure Spring Apps configura automaticamente il server Web specificato per gestire i file statici.
  • È possibile creare l'applicazione front-end nel framework JavaScript preferito e quindi distribuire l'applicazione front-end dinamica dal codice sorgente. Azure Spring Apps compila l'app in contenuto statico e usa il server Web configurato per gestire i file statici.

È anche possibile creare un file di configurazione del server per personalizzare il server Web.

Esempi di distribuzione

Gli esempi dell'interfaccia della riga di comando di Azure in questa sezione illustrano la compilazione e la distribuzione di file statici per due scenari del registro contenitori:

  • Registro contenitori gestito di Azure Spring Apps.
  • Registro contenitori gestiti dall'utente.

Compilare e distribuire file statici direttamente

In questo esempio vengono distribuiti direttamente i file statici usando un file di configurazione del server predefinito generato automaticamente.

Il comando seguente distribuisce un file statico:

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

Per informazioni sull'uso delle variabili di ambiente, vedere la sezione Configurare un file di configurazione del server generato automaticamente.

Compilare e distribuire l'applicazione front-end come contenuto statico

Questo esempio distribuisce un'applicazione front-end dinamica dal codice sorgente.

Il comando seguente implementa un'applicazione:

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

Compilare e distribuire file statici usando un file di configurazione personalizzato

In questo esempio vengono distribuiti file statici usando un file di configurazione del server personalizzato.

Il comando seguente implementa un'applicazione:

az spring app deploy \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-instance-name> \
    --name <app-name> \
    --source-path <path-to-source-code>

Per altre informazioni, vedere la sezione Usare un file di configurazione del server personalizzato di questo articolo.

Codice di esempio

Nota

Il codice di esempio viene gestito dalla community open source di Paketo.

Gli esempi di buildpack Di Paketo illustrano casi d'uso comuni per diversi tipi di applicazione, inclusi i casi d'uso seguenti:

  • Gestione di file statici con un file di configurazione del server predefinito usando BP_WEB_SERVER per selezionare HTTPD o NGINX.
  • Uso di Node Gestione pacchetti per compilare un'app React in file statici che possono essere usati da un server Web. Seguire questa procedura:
    1. Definire uno script nella scripts proprietà del file package.json che compila gli asset statici pronti per la produzione. Per React, è build.
    2. Scoprire dove vengono archiviati gli asset statici dopo l'esecuzione dello script di compilazione. Per React, gli asset statici vengono archiviati in per ./build impostazione predefinita.
    3. Impostare BP_NODE_RUN_SCRIPTS sul nome dello script di compilazione.
    4. Impostare BP_WEB_SERVER_ROOT sulla directory di output di compilazione.
  • Gestione di file statici con il proprio file di configurazione del server, usando HTTPD o NGINX.

Configurare un file di configurazione del server generato automaticamente

È possibile usare le variabili di ambiente per modificare il file di configurazione del server generato automaticamente. La tabella seguente illustra le variabili di ambiente supportate.

Variabile di ambiente Valore supportato Descrizione
BP_WEB_SERVER nginx o httpd Specifica il tipo di server Web, nginx per Nginx o httpd per il server HTTP Apache. Obbligatorio quando si usa il file di configurazione del server generato automaticamente.
BP_WEB_SERVER_ROOT Percorso di file assoluto o percorso di file relativo a /workspace. Imposta la directory radice per i file statici. Il valore predefinito è public.
BP_WEB_SERVER_ENABLE_PUSH_STATE true o false Abilita il routing dello stato push per l'applicazione. Indipendentemente dalla route richiesta, index.html viene sempre servita. Utile per le applicazioni Web a pagina singola.
BP_WEB_SERVER_FORCE_HTTPS true o false Applica HTTPS per le connessioni server reindirizzando tutte le richieste per l'uso del protocollo HTTPS.

Le variabili di ambiente seguenti non sono supportate.

  • BP_LIVE_RELOAD_ENABLED
  • BP_NGINX_VERSION
  • BP_HTTPD_VERSION

Usare un file di configurazione del server personalizzato

È possibile configurare il server Web usando un file di configurazione del server personalizzato. La tabella seguente illustra il percorso del file di configurazione:

Server Web Percorso file di configurazione predefinito Come personalizzare il percorso del file di configurazione del server
nginx nginx.conf nel percorso radice del codice sorgente. Usare la variabile BP_NGINX_CONF_LOCATION di ambiente per specificare il nome del file di configurazione. Posizionare il file nel percorso radice del codice sorgente.
httpd httpd.conf nel percorso radice del codice sorgente. Non supportato.

Il file di configurazione deve essere conforme alle restrizioni descritte nella tabella seguente.

Impostazione Descrizione Configurazione di Nginx Configurazione httpd
Porta di ascolto Il server Web deve essere in ascolto sulla porta 8080. Il servizio controlla la porta su TCP per la conformità e se è attiva. È necessario usare la variabile PORT modello nel file di configurazione. Il numero di porta appropriato viene inserito all'avvio del server Web. listen {{PORT}} Listen "${PORT}"
percorso del log Percorso del log di configurazione della console. access_log /dev/stdout, error_log stderr ErrorLog /proc/self/fd/2
Percorso file con autorizzazione di scrittura Al server Web viene concessa l'autorizzazione di scrittura per la directory /tmp . La configurazione del percorso completo richiede l'autorizzazione di scrittura nella directory /tmp . Ad esempio: client_body_temp_path /tmp/client_body_temp
Dimensione massima del corpo accettato della richiesta client Il server Web si trova dietro il gateway. Le dimensioni massime del corpo accettato della richiesta client sono impostate su 500 m nel gateway e il valore per il server Web deve essere inferiore a 500 m. client_max_body_size deve essere minore di 500 m. LimitRequestBody deve essere minore di 500 m.

Binding buildpack

La distribuzione di file statici nel piano Enterprise di Azure Spring Apps supporta l'associazione buildpack Dynatrace. L'associazione htpasswd buildpack non è supportata.

Per altre informazioni, vedere Come configurare l'integrazione di APM e i certificati CA.

Errori comuni di compilazione e distribuzione

La distribuzione di file statici in un'istanza di Azure Spring Apps Enterprise può generare gli errori di compilazione comuni seguenti:

  • 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 radice di questi errori è che il tipo di server Web non è specificato. Per risolvere questi errori, impostare la variabile BP_WEB_SERVER di ambiente su nginx o httpd.

La tabella seguente descrive gli errori di distribuzione comuni quando si distribuiscono file statici in Azure Spring Apps Enterprise.

Messaggio d'errore Causa principale Soluzione
112404: Exit code 0: purposely stopped, please refer to https://aka.ms/exitcode Impossibile avviare il server Web. Convalidare il file di configurazione del server per verificare se si verifica un errore di configurazione. Controllare quindi se il file di configurazione è conforme alle restrizioni descritte nella sezione Usare un file di configurazione del server personalizzato.
mkdir() "/var/client_body_temp" failed (13: Permission denied) Il server Web non dispone dell'autorizzazione di scrittura per il percorso specificato. Configurare il percorso nella directory /tmp; ad esempio: /tmp/client_body_temp.

Passaggi successivi