Uso e comprensione delle variabili

Descrizione description

Ambiente

Adobe Experience Manager

Problema/Sintomi

Questo documento illustra come sfruttare la potenza delle variabili nel server web Apache e nei file di configurazione del modulo dispatcher.

Variabili

Apache supporta le variabili e le versioni 4.1.9 in avanti del modulo dispatcher. Possiamo sfruttarli per eseguire le seguenti operazioni:

  • Assicurati che tutto ciò che è specifico per l'ambiente non sia in linea nelle configurazioni ma estratto per assicurarti che i file di configurazione da dev funzionino in prod con lo stesso output funzionale.
  • Attiva/disattiva le funzioni e modifica i livelli di registro dei file immutabili forniti da AMS e non consente di modificare.
  • Modifica che include da utilizzare in base a variabili come RUNMODE e ENV_TYPE
  • Confronta i nomi DNS DocumentRoot e VirtualHost tra le configurazioni Apache e le configurazioni del modulo.

Risoluzione resolution

  1. Utilizzo delle variabili della linea di base
    Poiché i file della linea di base AMS sono di sola lettura e non modificabili, sono disponibili funzioni che possono essere disattivate e attivate e configurate modificando le variabili utilizzate.

    Variabili della linea di base

    Ecco un esempio del contenuto del file /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
    

    Esempio 1 - Forza SSL

    Variabili mostrate sopra AUTHOR_FORCE_SSLoppure PUBLISH_FORCE_SSL può essere impostato su 1 per attivare regole di riscrittura che obbligano gli utenti finali che entrano su richiesta http a essere reindirizzati a https.

    Di seguito è riportata la sintassi del file di configurazione che consente il funzionamento di questo interruttore:

    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
    

    Come puoi vedere le regole di riscrittura includono ciò che ha il codice per reindirizzare il browser degli utenti finali, ma la variabile impostata su 1 è ciò che consente o meno l’utilizzo del file.

    Esempio 2 - Livello di registrazione

    Le variabili DISP_LOG_LEVEL può essere utilizzato per impostare ciò che si desidera per il livello di log effettivamente utilizzato nella configurazione in esecuzione.

    Di seguito è riportato un esempio di sintassi presente nei file di configurazione della linea di base ams:

    code language-none
    IfModule disp_apache2.c
    
      DispatcherLog    logs/dispatcher.log
    
      DispatcherLogLevel ${DISP_LOG_LEVEL}
    
    /IfModule
    

    Se hai bisogno di aumentare il livello di registrazione del dispatcher, devi solo aggiornare il ams_default.vars variable DISP_LOG_LEVEL al livello desiderato.

    I valori di esempio possono essere un numero intero o una parola:

    table 0-row-3 1-row-3 2-row-3 3-row-3 4-row-3 5-row-3
    Livello di log Valore intero Valore Word
    Traccia 4 traccia
    Debug 3 debug
    Info 2 info
    Avvertenza 1 avvertire
    Errore 0 error

    Esempio 3 - Elenchi consentiti

    Le variabili AUTHOR_WHITELIST_ENABLED e PUBLISH_WHITELIST_ENABLED può essere impostato su 1 per attivare regole di riscrittura che includono regole che consentono o impediscono il traffico degli utenti finali in base all’indirizzo IP. L’attivazione di questa funzione deve essere combinata con la creazione di un file di regole della whitelist da includere.

    Di seguito sono riportati alcuni esempi di sintassi di come la variabile abilita gli "include" dei file della whitelist e un esempio di file della whitelist:

    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
    

    Come puoi vedere la sample_whitelist.rules applica la restrizione IP, ma l’attivazione della variabile ne consente l’inclusione nella variabile sample.vhost

  2. Dove posizionare le variabili?

    Argomenti di avvio del server web

    AMS inserirà le variabili globali negli argomenti di avvio del processo Apache all’interno del file /etc/sysconfig/httpd

    Questo file ha variabili predefinite come mostrato qui:

    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'
    

    Non si tratta di qualcosa che puoi modificare, ma è utile da sfruttare nei file di configurazione.

    Nota: A causa del fatto che questo file viene incluso solo all'avvio del servizio. Per rilevare le modifiche è necessario riavviare il servizio. Ciò significa che un ricaricamento non è sufficiente, ma è necessario riavviare il sistema.

    File variabili (.vars)

    Le variabili personalizzate fornite dal codice devono trovarsi nei file .vars all'interno della directory /etc/httpd/conf.d/variables/

    Questi file possono avere variabili personalizzate desiderate. Di seguito sono riportati alcuni esempi di sintassi per i seguenti file di esempio:

    Quando crei le tue variabili, denominale in base al loro contenuto e per seguire gli standard di denominazione forniti nel manuale qui. Nell’esempio precedente puoi vedere che il file delle variabili ospita le diverse voci DNS come variabili da utilizzare nei file di configurazione.

    • /etc/httpd/conf.d/variables/weretail_domains_dev.vars

      code language-none
      Define WERETAIL_DOMAIN dev.weretail.com
          Define WERETAIL_ALT_DOMAIN dev.weretail.net
      
    • /etc/httpd/conf.d/variables/weretail_domains_stage.vars

      code language-none
      Define WERETAIL_DOMAIN stage.weretail.com
          Define WERETAIL_ALT_DOMAIN stage.weretail.net
      
    • /etc/httpd/conf.d/variables/weretail_domains_prod.vars

      code language-none
      Define WERETAIL_DOMAIN www.weretail.com
          Define WERETAIL_ALT_DOMAIN www.weretail.net
      
  3. Utilizzo delle variabili
    Ora che hai definito le variabili all'interno dei file delle variabili, vuoi sapere come usarle correttamente all'interno degli altri file di configurazione.

    Utilizzeremo i file .vars di esempio di cui sopra per illustrare un caso d’uso corretto.

    Vogliamo includere globalmente tutte le variabili basate sull'ambiente e creeremo il file /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
    

    Sappiamo che all’avvio del servizio httpd estrae le variabili impostate da AMS in /etc/sysconfig/httpd e ha l'insieme di variabili ENV_TYPE e RUNMODE

    Quando questo file .conf globale viene estratto, verrà estratto in anticipo perché l'ordine di inclusione dei file in conf.d è alfanumerico ordine di caricamento significa 000 nel nome del file assicurerà che venga caricato prima degli altri file nella directory.

    L’istruzione include utilizza anche una variabile nel nome del file. Questo può cambiare il file che verrà effettivamente caricato in base al valore presente in ENV_TYPE e RUNMODE variabili.

    Se la ENV_TYPE value is dev quindi il file che viene utilizzato è:

    /etc/httpd/conf.d/variables/weretail_domains_dev.vars

    Se la ENV_TYPE value is stadio quindi il file che viene utilizzato è:

    /etc/httpd/conf.d/variables/weretail_domains_stage.vars

    Se la RUNMODE value is anteprima quindi il file che viene utilizzato è:

    /etc/httpd/conf.d/variables/weretail_domains_preview.vars

    Quando quel file viene incluso, ci permetterà di utilizzare i nomi delle variabili memorizzati all'interno.

    Nel nostro /etc/httpd/conf.d/available_vhosts/weretail.vhost file possiamo cambiare la normale sintassi che funzionava solo per dev:

    code language-none
    VirtualHost *:80
    
      ServerName    dev.weretail.com
    
      ServerAlias    dev.weretail.net
    

    Con una nuova sintassi che utilizza il potere delle variabili per funzionare per dev, stage e prod:

    code language-none
    VirtualHost *:80
    
      ServerName    ${WERETAIL_DOMAIN}
    
      ServerAlias    ${WERETAIL_ALT_DOMAIN}
    

    Nel nostro /etc/httpd/conf.dispatcher.d/vhosts/weretail_vhosts.any file possiamo cambiare la normale sintassi che funzionava solo per dev:

    code language-none
    "dev.weretail.com"
    "dev.weretail.net"
    

    Con una nuova sintassi che utilizza il potere delle variabili per funzionare per dev, stage e prod:

    code language-none
    "${WERETAIL_DOMAIN}"
    "${WERETAIL_ALT_DOMAIN}"
    

    Queste variabili hanno una grande quantità di riutilizzo per individuare le impostazioni in esecuzione senza dover disporre di file distribuiti diversi per ambiente. In sostanza puoi modellare i file di configurazione con l’uso di variabili e includere file basati su variabili.

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