Utilizzo e nozioni di base sulle 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 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 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

    Le variabili mostrate sopra AUTHOR_FORCE_SSL, o PUBLISH_FORCE_SSL può essere impostato 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 può essere utilizzato 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
    

    Se hai bisogno di aumentare il livello di registrazione di Dispatcher, devi solo aggiornare ams_default.vars variabile 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 può essere impostato su 1 per attivare regole di riscrittura che includono regole per consentire o impedire il traffico dell’utente finale in base all’indirizzo IP. L’attivazione di questa funzione deve essere combinata con la creazione di un file di regole di 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 la sample_whitelist.rules applica la restrizione IP, ma l’attivazione della variabile ne consente l’inclusione nella proprietà sample.vhost

  2. Dove posizionare le variabili?

    Argomenti di avvio 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 trovarsi nei 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 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/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
    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.

    Il file verrà creato per includere tutte le variabili basate sull’ambiente a livello globale /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 vengono richiamate 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 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 in ENV_TYPE e RUNMODE variabili.

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

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

    Se il ENV_TYPE il valore è fase il file che viene utilizzato è:

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

    Se il RUNMODE il valore è anteprima il file che viene utilizzato è:

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

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

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