Statische webbestanden implementeren
Notitie
De Basic-, Standard- en Enterprise-abonnementen worden afgeschaft vanaf medio maart 2025, met een pensioenperiode van 3 jaar. We raden u aan om over te stappen naar Azure Container Apps. Zie de aankondiging over buitengebruikstelling van Azure Spring Apps voor meer informatie.
Het standaardverbruik en het speciale abonnement worden vanaf 30 september 2024 afgeschaft, met een volledige afsluiting na zes maanden. We raden u aan om over te stappen naar Azure Container Apps. Zie Azure Spring Apps Standard-verbruik en toegewezen abonnement migreren naar Azure Container Apps voor meer informatie.
Dit artikel is van toepassing op:❌ Basic/Standard ✔️ Enterprise
In dit artikel wordt beschreven hoe u uw statische bestanden implementeert in een Azure Spring Apps Enterprise-planexemplaren met behulp van het Tanzu-webservers-buildpack. Deze benadering is handig als u toepassingen hebt die uitsluitend zijn bedoeld voor het opslaan van statische bestanden, zoals HTML, CSS of front-endtoepassingen die zijn gebouwd met het JavaScript-framework van uw keuze. U kunt deze toepassingen rechtstreeks implementeren met een automatisch geconfigureerde webserver (HTTPD en NGINX) voor deze assets.
Vereisten
- Een exemplaar van een Azure Spring Apps Enterprise-abonnement is al ingericht. Zie quickstart: Apps bouwen en implementeren in Azure Spring Apps met behulp van het Enterprise-abonnement voor meer informatie.
- Een of meer toepassingen die worden uitgevoerd in Azure Spring Apps.
- Azure CLI, versie 2.45.0 of hoger.
- Uw statische bestanden of dynamische front-endtoepassing, bijvoorbeeld een React-app.
Uw statische bestanden implementeren
Notitie
Dit artikel is gericht op het beschrijven van implementatieconfiguraties en het oplossen van problemen die specifiek zijn voor de implementatie van statische webbestanden. Voor meer informatie over de algemene build- en implementatiescenario's voor het Azure Springs Apps Enterprise-plan, raadpleegt u de sectie Build-service op aanvraag van Tanzu Build Service en het implementeren van polyglot-apps.
U kunt statische bestanden implementeren in Azure Spring Apps met behulp van NGINX- of HTTPD-webservers op de volgende manieren:
- U kunt statische bestanden rechtstreeks implementeren. Azure Spring Apps configureert automatisch de opgegeven webserver voor de statische bestanden.
- U kunt uw front-endtoepassing maken in het JavaScript-framework van uw keuze en vervolgens uw dynamische front-endtoepassing implementeren vanuit broncode. Azure Spring Apps bouwt uw app in op statische inhoud en gebruikt uw geconfigureerde webserver voor de statische bestanden.
U kunt ook een serverconfiguratiebestand maken om de webserver aan te passen.
Implementatievoorbeelden
In de Azure CLI-voorbeelden in deze sectie ziet u het bouwen en implementeren van statische bestanden voor twee containerregisterscenario's:
- Door Azure Spring Apps beheerde containerregister.
- Door de gebruiker beheerde containerregister.
Statische bestanden rechtstreeks bouwen en implementeren
In dit voorbeeld worden statische bestanden rechtstreeks geïmplementeerd met behulp van een automatisch gegenereerd standaardserverconfiguratiebestand.
Met de volgende opdracht wordt een statisch bestand geïmplementeerd:
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
Zie de sectie Een automatisch gegenereerd serverconfiguratiebestand configureren voor informatie over het gebruik van omgevingsvariabelen.
Uw front-endtoepassing bouwen en implementeren als statische inhoud
In dit voorbeeld wordt een dynamische front-endtoepassing geïmplementeerd vanuit broncode.
Met de volgende opdracht wordt een toepassing geïmplementeerd:
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
Statische bestanden bouwen en implementeren met behulp van een aangepast configuratiebestand
In dit voorbeeld worden statische bestanden geïmplementeerd met behulp van een aangepast serverconfiguratiebestand.
Met de volgende opdracht wordt een toepassing geïmplementeerd:
az spring app deploy \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name <app-name> \
--source-path <path-to-source-code>
Zie de sectie Een aangepast serverconfiguratiebestand van dit artikel gebruiken voor meer informatie.
Voorbeeldcode
Notitie
De voorbeeldcode wordt onderhouden door de opensource-community van Paketo.
De Paketo buildpacks-voorbeelden demonstreren veelvoorkomende use cases voor verschillende toepassingstypen, waaronder de volgende use cases:
- Statische bestanden verwerken met een standaardserverconfiguratiebestand om
BP_WEB_SERVER
HTTPD of NGINX te selecteren. - Node Pakketbeheer gebruiken om een React-app te bouwen in statische bestanden die een webserver kan leveren. Gebruik de volgende stappen:
- Definieer een script onder de
scripts
eigenschap van het package.json-bestand waarmee uw statische assets worden gebouwd die gereed zijn voor productie. Voor React is hetbuild
. - Ontdek waar statische assets worden opgeslagen nadat het buildscript is uitgevoerd. Voor React worden statische assets standaard opgeslagen
./build
. - Ingesteld
BP_NODE_RUN_SCRIPTS
op de naam van het buildscript. - Ingesteld
BP_WEB_SERVER_ROOT
op de build-uitvoermap.
- Definieer een script onder de
- Statische bestanden leveren met uw eigen serverconfiguratiebestand, met behulp van HTTPD of NGINX.
Een automatisch gegenereerd serverconfiguratiebestand configureren
U kunt omgevingsvariabelen gebruiken om het configuratiebestand voor de automatisch gegenereerde server te wijzigen. In de volgende tabel ziet u ondersteunde omgevingsvariabelen.
Omgevingsvariabele | Ondersteunde waarde | Beschrijving |
---|---|---|
BP_WEB_SERVER |
nginx of httpd | Hiermee geeft u het webservertype, nginx voor Nginx of httpd voor Apache HTTP-server. Vereist wanneer u het configuratiebestand voor de automatisch gegenereerde server gebruikt. |
BP_WEB_SERVER_ROOT |
Een absoluut bestandspad of een bestandspad ten opzichte van /workspace. | Hiermee stelt u de hoofdmap voor de statische bestanden in. De standaardwaarde is public . |
BP_WEB_SERVER_ENABLE_PUSH_STATE |
waar of onwaar | Hiermee schakelt u pushstatusroutering voor uw toepassing in. Ongeacht de route die wordt aangevraagd, wordt index.html altijd bediend. Handig voor webtoepassingen met één pagina. |
BP_WEB_SERVER_FORCE_HTTPS |
waar of onwaar | Dwingt HTTPS af voor serververbindingen door alle aanvragen om te leiden om het HTTPS-protocol te gebruiken. |
De volgende omgevingsvariabelen worden niet ondersteund.
BP_LIVE_RELOAD_ENABLED
BP_NGINX_VERSION
BP_HTTPD_VERSION
Een aangepast serverconfiguratiebestand gebruiken
U kunt webserver configureren met behulp van een aangepast serverconfiguratiebestand. In de volgende tabel ziet u het pad naar het configuratiebestand:
Webserver | Standaardpad voor configuratiebestand | Pad naar serverconfiguratiebestand aanpassen |
---|---|---|
nginx | nginx.conf onder het hoofdpad van uw broncode. | Gebruik de omgevingsvariabele BP_NGINX_CONF_LOCATION om de naam van het configuratiebestand op te geven. Plaats het bestand onder het hoofdpad van uw broncode. |
httpd | httpd.conf onder het hoofdpad van uw broncode. | Wordt niet ondersteund. |
Uw configuratiebestand moet voldoen aan de beperkingen die in de volgende tabel worden beschreven.
Configuratie | Beschrijving | Nginx-configuratie | Httpd-configuratie |
---|---|---|---|
Luisterpoort | Webserver moet luisteren op poort 8080. De service controleert de poort op TCP op gereedheid en of deze live is. U moet de sjabloonvariabele PORT in het configuratiebestand gebruiken. Het juiste poortnummer wordt geïnjecteerd wanneer de webserver wordt gestart. |
listen {{PORT}} |
Listen "${PORT}" |
Logboekpad | Configuratielogboekpad naar de console. | access_log /dev/stdout , error_log stderr |
ErrorLog /proc/self/fd/2 |
Bestandspad met schrijfmachtiging | Aan de webserver wordt schrijfmachtigingen verleend voor de /tmp-map . Voor het configureren van het volledige pad is schrijfmachtiging vereist in de map /tmp . | Bijvoorbeeld: client_body_temp_path /tmp/client_body_temp | |
Maximale geaccepteerde hoofdtekstgrootte van clientaanvraag | Webserver bevindt zich achter de gateway. De maximale geaccepteerde bodygrootte van de clientaanvraag is ingesteld op 500 m in de gateway en de waarde voor webserver moet kleiner zijn dan 500 m. | client_max_body_size moet kleiner zijn dan 500 m. |
LimitRequestBody moet kleiner zijn dan 500 m. |
Buildpack-bindingen
Het implementeren van statische bestanden in het Azure Spring Apps Enterprise-plan ondersteunt de Dynatrace buildpack-binding. De htpasswd
buildpack-binding wordt niet ondersteund.
Zie APM-integratie en CA-certificaten configureren voor meer informatie.
Veelvoorkomende build- en implementatiefouten
Uw implementatie van statische bestanden naar een Azure Spring Apps Enterprise-exemplaar kan de volgende veelvoorkomende buildfouten genereren:
ERROR: No buildpack groups passed detection.
ERROR: Please check that you're running against the correct path.
ERROR: failed to detect: no buildpacks participating
De hoofdoorzaak van deze fouten is dat het webservertype niet is opgegeven. Als u deze fouten wilt oplossen, stelt u de omgevingsvariabele BP_WEB_SERVER
in op nginx of httpd.
In de volgende tabel worden veelvoorkomende implementatiefouten beschreven wanneer u statische bestanden implementeert in Azure Spring Apps Enterprise.
Foutmelding | Hoofdoorzaak | Oplossing |
---|---|---|
112404: Exit code 0: purposely stopped, please refer to https://aka.ms/exitcode |
De webserver kan niet worden gestart. | Valideer uw serverconfiguratiebestand om te zien of er een configuratiefout is. Controleer vervolgens of uw configuratiebestand voldoet aan de beperkingen die worden beschreven in de sectie Een aangepast serverconfiguratiebestand gebruiken. |
mkdir() "/var/client_body_temp" failed (13: Permission denied) |
De webserver heeft geen schrijfmachtiging voor het opgegeven pad. | Configureer het pad onder de map /tmp, bijvoorbeeld: /tmp/client_body_temp. |