Använda och förstå variabler
Lär dig hur du utnyttjar variablerna i webbservern i Apache och i konfigurationsfilerna för modulen Dispatcher.
Beskrivning description
Miljö
Adobe Experience Manager (AEM)
Utgåva
I det här dokumentet beskrivs hur du kan utnyttja variablerna i webbservern i Apache och i konfigurationsfilerna för modulen Dispatcher.
Variabler
Apache stöder variabler och version 4.1.9 och senare av dispatcherns modul. Vi kan utnyttja dessa för att göra följande:
- Kontrollera att allt som är miljöspecifikt inte är infogat i konfigurationerna utan extraheras för att säkerställa att konfigurationsfilerna från dev fungerar med samma funktionella utdata.
- Växla mellan funktioner och ändra loggnivåer för oföränderliga filer som AMS tillhandahåller, och du kan inte ändra dem.
- Ändra vilket inkluderar att använda baserat på variabler som
RUNMODEochENV_TYPE. - Matcha DNS-namn för DocumentRoot och VirtualHost mellan cachekonfigurationer och modulkonfigurationer.
Upplösning resolution
-
Använder baslinjevariabler
Eftersom AMS baslinjefiler är skrivskyddade och oföränderliga finns det funktioner som kan inaktiveras och aktiveras, liksom konfigureras genom redigering av de variabler som de använder.Baslinjevariabler
Här är ett exempel på innehållet i filen
/etc/httpd/conf.d/variables/ams_default.varscode language-none Define DISP_LOG_LEVEL info Define AUTHOR_WHITELIST_ENABLED 0 Define PUBLISH_WHITELIST_ENABLED 0 Define AUTHOR_FORCE_SSL 1 Define PUBLISH_FORCE_SSL 0Exempel 1 - Tvinga SSL
Variablerna som visas ovan
AUTHOR_FORCE_SSL, ellerPUBLISH_FORCE_SSLkan anges till 1 för att aktivera omskrivningsregler som tvingar slutanvändare att omdirigeras till http-begäran när de kommer in på http-begäran.Här är konfigurationsfilens syntax som gör att den här växlingen fungerar:
code language-none <VirtualHost *:80> <IfModule mod_rewrite.c> ReWriteEngine on <If "${PUBLISH_FORCE_SSL} == 1"> Include /etc/httpd/conf.d/rewrites/forcessl_rewrite.rules </If> </IfModule> </VirtualHost>Som du kan se är omskrivningsreglerna vad som har koden som omdirigerar slutanvändarens webbläsare, men variabeln som anges till 1 är vad som gör att filen kan användas eller inte.
Exempel 2 - Loggningsnivå
Variablerna
DISP_LOG_LEVELkan användas för att ange vad du vill ha för loggnivån som faktiskt används i den konfiguration som körs.Här är syntaxexemplet som finns i AMS-konfigurationsfilerna för baslinjen:
code language-none <IfModule disp_apache2.c> DispatcherLog logs/dispatcher.log DispatcherLogLevel ${DISP_LOG_LEVEL} </IfModule>Om du behöver öka loggningsnivån för dispatcher uppdaterar du bara
ams_default.vars-variabelnDISP_LOG_LEVELtill den nivå du vill ha.Exempelvärden kan vara ett heltal eller ordet:
table 0-row-3 1-row-3 2-row-3 3-row-3 4-row-3 5-row-3 Loggnivå Heltalsvärde Word-värde Kalkera 4 trace Felsök 3 debug Info 2 info Varning 1 varna Fel 0 fel Exempel 3 - vitlistor
Variablerna
AUTHOR_WHITELIST_ENABLEDochPUBLISH_WHITELIST_ENABLEDkan ställas in på ** för att aktivera omskrivningsregler som innehåller regler som tillåter eller inte tillåter slutanvändartrafik baserat på IP-adress. Om den här funktionen ON ska växlas måste den kombineras med att en regelfil för vitlista skapas, så att den kan inkluderas.Här följer några syntaxexempel på hur variabeln aktiverar inkluderingen av vitlistfilerna och ett exempel på en vitlistfil:
sample.vhost:
code language-none <VirtualHost *:80> <Directory /> <If "${AUTHOR_WHITELIST_ENABLED} == 1"> Include /etc/httpd/conf.d/whitelists/*_whitelist.rules </If> </Directory> </VirtualHost>sample_whitelist.rules:
code language-none <RequireAny> Require ip 10.43.0.10/24 </RequireAny>Som du kan se tillämpar
sample_whitelist.rulesIP-begränsningen, men om du växlar variabeln kan den inkluderas isample.vhost -
Var ska variablerna placeras?
Startargument för webbserverAMS placerar globala variabler i startargumenten för cacheprocessen i filen
/etc/sysconfig/httpdDen här filen har fördefinierade variabler som visas här:
code language-none AUTHOR_IP="10.43.0.59" AUTHOR_PORT="4502" AUTHOR_DOCROOT='/mnt/var/www/author' PUBLISH_IP="10.43.0.20" PUBLISH_PORT="4503" PUBLISH_DOCROOT='/mnt/var/www/html' ENV_TYPE='dev' RUNMODE='dev'Detta är inte något du kan ändra, men det är bra att utnyttja i dina konfigurationsfiler.
Obs! På grund av att den här filen bara inkluderas när tjänsten startas. Tjänsten måste startas om för att ändringarna ska kunna hämtas. Det räcker inte med en omladdning, men du måste starta om i stället.
Variabelfiler (.vars)
Anpassade variabler som tillhandahålls av koden ska finnas i .vars-filer i katalogen
/etc/httpd/conf.d/variables/De här filerna kan innehålla valfria anpassade variabler. Här följer några syntaxexempel för följande exempelfiler:
När du skapar dina egna variabelfiler namnger de efter deras innehåll och följer namngivningsstandarderna i handboken här. I exemplet ovan ser du att variabelfilen är värd för de olika DNS-posterna som variabler som ska användas i konfigurationsfilerna.
/etc/httpd/conf.d/variables/sample-domain_domains_dev.vars:
code language-none Define SAMPLE_DOMAIN dev.sample-domain.com Define SAMPLE_ALT_DOMAIN dev.sample-domain.net/etc/httpd/conf.d/variables/sample-domain_domains_stage.vars:
code language-none Define SAMPLE_DOMAIN stage.sample-domain.com Define SAMPLE_ALT_DOMAIN stage.sample-domain.net/etc/httpd/conf.d/variables/sample-domain_domains_prod.vars:
code language-none Define SAMPLE_DOMAIN www.sample-domain.com Define SAMPLE_ALT_DOMAIN www.sample-domain.net -
Använder variabler
Nu när du har definierat variablerna i dina variabelfiler vill du veta hur du använder dem på rätt sätt i dina andra konfigurationsfiler.Vi kommer att använda .vars-filerna ovan för att illustrera ett bra användningsexempel.
Vi vill ta med alla miljöbaserade variabler globalt skapar vi filen
/etc/httpd/conf.d/000_load_env_vars.confcode language-none Include /etc/httpd/conf.d/variables/*_${ENV_TYPE}.vars Include /etc/httpd/conf.d/variables/*_${RUNMODE}.varsVi vet att när httpd-tjänsten startas hämtas den in i de variabler som AMS anger i
/etc/sysconfig/httpdoch har variabeluppsättningenENV_TYPEochRUNMODENär den här globala .conf-filen dras in kommer den att hämtas tidigt eftersom inkluderingsordningen för filer i conf.d är alfanumerisk, vilket innebär 000 i filnamnet, vilket garanterar att den läses in före de andra filerna i katalogen.
Programsatsen include använder också en variabel i filnamnet. Detta kan ändra vilken fil som läses in baserat på vilket värde som finns i variablerna
ENV_TYPEochRUNMODE.Om värdet
ENV_TYPEär dev är filen som används:/etc/httpd/conf.d/variables/sample-domain_domains_dev.varsOm värdet
ENV_TYPEär stage är filen som används:/etc/httpd/conf.d/variables/sample-domain_domains_stage.varsOm värdet
RUNMODEär preview är filen som används:/etc/httpd/conf.d/variables/sample-domain_domains_preview.varsNär den filen inkluderas kan vi använda de variabelnamn som finns lagrade i den.
I vår
/etc/httpd/conf.d/available_vhosts/sample-domain.vhost-fil kan vi byta ut den normala syntaxen som bara fungerade för dev:code language-none <VirtualHost *:80> ServerName dev.sample-domain.com ServerAlias dev.sample-domain.netMed en nyare syntax som utnyttjar kraften i variabler för att arbeta med dev, stage och prod:
code language-none <VirtualHost *:80> ServerName ${SAMPLE_DOMAIN} ServerAlias ${SAMPLE_ALT_DOMAIN}I vår
/etc/httpd/conf.dispatcher.d/vhosts/sample-domain_vhosts.any-fil kan vi byta ut den normala syntaxen som bara fungerade för dev:code language-none "dev.sample-domain.com" "dev.sample-domain.net"Med en nyare syntax som utnyttjar kraften i variabler för att arbeta med dev, stage och prod:
code language-none "${SAMPLE_DOMAIN}" "${SAMPLE_ALT_DOMAIN}"Dessa variabler har en enorm mängd återanvändning för att anpassa körningsinställningar utan att behöva ha olika distribuerade filer per miljö. Du kan i stort sett mallanpassa dina konfigurationsfiler med hjälp av variabler och inkludera filer som är baserade på variabler.