Utilizzo e nozioni di base sulle variabili

Scopri come sfruttare la potenza delle variabili nel server web Apache e nei file di configurazione del modulo Dispatcher.

Descrizione description

Ambiente

Adobe Experience Manager (AEM)

Problema

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 e successive 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 garantire che i file di configurazione da sviluppo funzionino nella produzione con lo stesso output funzionale.
  • Attiva/disattiva le funzioni e modifica i livelli di registro dei file immutabili forniti da AMS e che non ti consentono di modificare.
  • Modifica che include da utilizzare in base a variabili come RUNMODE e ENV_TYPE.
  • Fai corrispondere i nomi DNS DocumentRoot e VirtualHost tra le configurazioni di Apache e le configurazioni dei moduli.

Risoluzione resolution

  1. Utilizzo delle variabili della linea di base
    Poiché i file della linea di base AMS sono di sola lettura e immutabili, è possibile attivare e disattivare alcune funzioni e configurarle modificando le variabili che utilizzano.

    Variabili 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

    Le variabili mostrate sopra AUTHOR_FORCE_SSL o PUBLISH_FORCE_SSL possono essere impostate su 1 per attivare regole di riscrittura che obbligano gli utenti finali quando arrivano su richiesta http a essere reindirizzati a https.

    Ecco 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 di utilizzare o meno il file.

    Esempio 2 - Livello di registrazione

    Le variabili DISP_LOG_LEVEL possono essere utilizzate per impostare ciò che si desidera avere per il livello di registro effettivamente utilizzato nella configurazione in esecuzione.

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

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

    Per aumentare il livello di log del dispatcher, è sufficiente aggiornare la variabile ams_default.vars DISP_LOG_LEVEL al livello desiderato.

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

    table 0-row-3 1-row-3 2-row-3 3-row-3 4-row-3 5-row-3
    Livello registro Valore intero Valore Word
    Traccia 4 traccia
    Debug 3 debug
    Info 2 info
    Avvertenza 1 avvertenza
    Errore 0 errore

    Esempio 3 - Whitelist

    Le variabili AUTHOR_WHITELIST_ENABLED e PUBLISH_WHITELIST_ENABLED possono essere impostate su 1 per attivare regole di riscrittura che includono regole per consentire o non consentire il traffico dell'utente finale in base all'indirizzo IP. L'attivazione di questa funzione ON 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 le inclusioni 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 sample_whitelist.rules applica la restrizione IP, ma l'attivazione della variabile ne consente l'inclusione in sample.vhost

  2. Dove inserire le variabili?
    Argomenti di avvio del server Web

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

    Questo file ha variabili predefinite, come illustrato di seguito:

    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'
    

    Questi non sono elementi che puoi modificare, ma che puoi sfruttare nei tuoi file di configurazione.

    Nota - Poiché questo file viene incluso solo all'avvio del servizio. Per raccogliere le modifiche è necessario riavviare il servizio. Ciò significa che un ricaricamento non è sufficiente, ma è necessario un riavvio.

    File di variabili (.vars)

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

    Questi file possono contenere qualsiasi variabile personalizzata. Di seguito sono riportati alcuni esempi di sintassi per i seguenti file di esempio:

    Quando crei i tuoi file di variabili, assegnagli un nome in base al loro contenuto e in base agli 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/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. Utilizzo di variabili
    Dopo aver definito le variabili nei file delle variabili, è necessario sapere come utilizzarle correttamente negli altri file di configurazione.

    Per illustrare un caso d’uso corretto, utilizzeremo i file .vars di esempio riportati sopra.

    Si desidera includere tutte le variabili basate sull'ambiente a livello globale. Verrà creato 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 quando il servizio httpd viene avviato, estrae le variabili impostate da AMS in /etc/sysconfig/httpd e ha il set di variabili ENV_TYPE e RUNMODE

    Quando questo file .conf globale viene richiamato verrà richiamato in anticipo perché l'ordine di inclusione dei file in conf.d è l'ordine di caricamento alfanumerico media 000 nel nome 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 quale file verrà effettivamente caricato in base al valore presente nelle variabili ENV_TYPE e RUNMODE.

    Se il valore ENV_TYPE è dev, allora il file che viene utilizzato è:

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

    Se il valore ENV_TYPE è stage, allora il file che viene utilizzato è:

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

    Se il valore RUNMODE è preview, allora il file che viene utilizzato è:

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

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

    Nel file /etc/httpd/conf.d/available_vhosts/sample-domain.vhost è possibile cambiare la normale sintassi che funzionava solo per dev:

    code language-none
    <VirtualHost *:80>
    
      ServerName    dev.sample-domain.com
    
      ServerAlias    dev.sample-domain.net
    

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

    code language-none
    <VirtualHost *:80>
    
      ServerName    ${SAMPLE_DOMAIN}
    
      ServerAlias    ${SAMPLE_ALT_DOMAIN}
    

    Nel file /etc/httpd/conf.dispatcher.d/vhosts/sample-domain_vhosts.any è possibile cambiare la normale sintassi che funzionava solo per dev:

    code language-none
    "dev.sample-domain.com"
    "dev.sample-domain.net"
    

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

    code language-none
    "${SAMPLE_DOMAIN}"
    "${SAMPLE_ALT_DOMAIN}"
    

    Queste variabili possono essere riutilizzate per personalizzare le impostazioni in esecuzione senza dover disporre di file distribuiti diversi in base all’ambiente. Essenzialmente puoi modellare i file di configurazione con l’utilizzo di variabili e includere file basati su variabili.

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