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
- Un'istanza del piano Enterprise di Azure Spring Apps di cui è già stato effettuato il provisioning. Per altre informazioni, vedere Avvio rapido: Creare e distribuire app in Azure Spring Apps usando il piano Enterprise.
- Una o più applicazioni in esecuzione in Azure Spring Apps.
- Interfaccia della riga di comando di Azure, versione 2.45.0 o successiva.
- File statici o applicazione front-end dinamica, ad esempio un'app React.
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:
- Definire uno script nella
scripts
proprietà del file package.json che compila gli asset statici pronti per la produzione. Per React, èbuild
. - 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. - Impostare
BP_NODE_RUN_SCRIPTS
sul nome dello script di compilazione. - Impostare
BP_WEB_SERVER_ROOT
sulla directory di output di compilazione.
- Definire uno script nella
- 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. |