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
eENV_TYPE
- Confronta i nomi DNS DocumentRoot e VirtualHost tra le configurazioni Apache e le configurazioni del modulo.
Risoluzione resolution
-
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_SSL
oppurePUBLISH_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
variableDISP_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
ePUBLISH_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 variabilesample.vhost
-
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
-
-
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 variabiliENV_TYPE
eRUNMODE
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
eRUNMODE
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.