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
eENV_TYPE
. - Fai corrispondere i nomi DNS DocumentRoot e VirtualHost tra le configurazioni di Apache e le configurazioni dei moduli.
Risoluzione resolution
-
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
oPUBLISH_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
ePUBLISH_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 insample.vhost
-
Dove inserire le variabili?
Argomenti di avvio del server WebAMS 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
-
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 variabiliENV_TYPE
eRUNMODE
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
eRUNMODE
.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.