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:
RUNMODE
e ENV_TYPE
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
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
oppure 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:
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:
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:
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:
VirtualHost *:80
Directory /
If "${AUTHOR_WHITELIST_ENABLED} == 1"
Include /etc/httpd/conf.d/whitelists/*_whitelist.rules
/If
/Directory
/VirtualHost
sample_whitelist.rules:
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
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:
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
Define WERETAIL_DOMAIN dev.weretail.com
Define WERETAIL_ALT_DOMAIN dev.weretail.net
/etc/httpd/conf.d/variables/weretail_domains_stage.vars
Define WERETAIL_DOMAIN stage.weretail.com
Define WERETAIL_ALT_DOMAIN stage.weretail.net
/etc/httpd/conf.d/variables/weretail_domains_prod.vars
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
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:
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:
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:
"dev.weretail.com"
"dev.weretail.net"
Con una nuova sintassi che utilizza il potere delle variabili per funzionare per dev, stage e prod:
"${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.