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 RUNMODE och ENV_TYPE.
  • Matcha DNS-namn för DocumentRoot och VirtualHost mellan cachekonfigurationer och modulkonfigurationer.

Upplösning resolution

  1. 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.vars

    code 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 0
    

    Exempel 1 - Tvinga SSL

    Variablerna som visas ovan AUTHOR_FORCE_SSL, eller PUBLISH_FORCE_SSL kan 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_LEVEL kan 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-variabeln DISP_LOG_LEVEL till 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_ENABLED och PUBLISH_WHITELIST_ENABLED kan 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.rules IP-begränsningen, men om du växlar variabeln kan den inkluderas i sample.vhost

  2. Var ska variablerna placeras?
    Startargument för webbserver

    AMS placerar globala variabler i startargumenten för cacheprocessen i filen /etc/sysconfig/httpd

    Den 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
    
  3. 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.conf

    code language-none
    Include /etc/httpd/conf.d/variables/*_${ENV_TYPE}.vars
    Include /etc/httpd/conf.d/variables/*_${RUNMODE}.vars
    

    Vi vet att när httpd-tjänsten startas hämtas den in i de variabler som AMS anger i /etc/sysconfig/httpd och har variabeluppsättningen ENV_TYPE och RUNMODE

    Nä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_TYPE och RUNMODE.

    Om värdet ENV_TYPE är dev är filen som används:

    /etc/httpd/conf.d/variables/sample-domain_domains_dev.vars

    Om värdet ENV_TYPE är stage är filen som används:

    /etc/httpd/conf.d/variables/sample-domain_domains_stage.vars

    Om värdet RUNMODE är preview är filen som används:

    /etc/httpd/conf.d/variables/sample-domain_domains_preview.vars

    Nä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.net
    

    Med 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.

recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f