Utilizzo e nozioni di base sulle variabili
<- Precedente: informazioni sulla cache
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, dalla versione 4.1.9 del modulo Dispatcher, supporta anche queste.
Possiamo sfruttarli per fare un sacco di cose utili come:
- 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 non consentirti di modificare.
- Modifica che include da utilizzare in base a variabili come
RUNMODE
eENV_TYPE
- Abbina i nomi DNS di
DocumentRoot
eVirtualHost
tra le configurazioni Apache e le configurazioni dei moduli.
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
Le variabili predefinite di AMS sono dichiarate nel file /etc/httpd/conf.d/variables/ootb.vars
. Questo file non è modificabile, ma esiste per assicurarti che le variabili non abbiano valori Null. Vengono inclusi prima e poi dopo rispetto a /etc/httpd/conf.d/variables/ams_default.vars
. Puoi modificare il file per modificare i valori di queste variabili o anche includere gli stessi nomi e valori delle variabili nel file.
Di seguito è riportato 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
Le variabili mostrate sopra AUHOR_FORCE_SSL
o PUBLISH_FORCE_SSL
possono essere impostate su 1 per attivare le 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:
</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:
<IfModule disp_apache2.c>
DispatcherLog logs/dispatcher.log
DispatcherLogLevel ${DISP_LOG_LEVEL}
</IfModule>
Per aumentare il livello di registrazione di Dispatcher, è sufficiente aggiornare la variabile ams_default.vars
DISP_LOG_LEVEL
al livello desiderato.
Esempio Valori può essere un numero intero o la parola:
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 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
:
<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 sample_whitelist.rules
applica la restrizione IP, ma l'attivazione della variabile ne consente l'inclusione in sample.vhost
Dove inserire le variabili
Argomenti di avvio server Web
AMS inserirà variabili specifiche per server/topologia negli argomenti di avvio del processo Apache nel file /etc/sysconfig/httpd
Questo file ha variabili predefinite, come illustrato di seguito:
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='sites'
Questi non sono elementi che puoi modificare ma che puoi sfruttare nei file di configurazione
File di variabili (.vars
)
Le variabili personalizzate fornite dal codice devono essere contenute in .vars
file nella directory /etc/httpd/conf.d/variables/
Questi file possono contenere qualsiasi variabile personalizzata desiderata; alcuni esempi di sintassi sono disponibili nei seguenti file di esempio
/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
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.
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, verranno utilizzati i file di esempio .vars
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
IncludeOptional /etc/httpd/conf.d/variables/*_${ENV_TYPE}.vars
IncludeOptional /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 il file .conf
globale viene richiamato, verrà richiamato in anticipo perché l'ordine di inclusione dei file in conf.d
è l'ordine di caricamento alfanumerico medio 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/weretail_domains_dev.vars
Se il valore ENV_TYPE
è stage
, allora il file che viene utilizzato è:
/etc/httpd/conf.d/variables/weretail_domains_stage.vars
Se il valore RUNMODE
è preview
, allora 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 file /etc/httpd/conf.d/available_vhosts/weretail.vhost
è possibile 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 file /etc/httpd/conf.dispatcher.d/vhosts/weretail_vhosts.any
è possibile 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 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.
Visualizzazione dei valori delle variabili
A volte, quando si utilizzano le variabili, è necessario eseguire una ricerca per vedere quali potrebbero essere i valori nei file di configurazione. È possibile visualizzare le variabili risolte eseguendo i seguenti comandi sul server:
source /etc/sysconfig/httpd;/sbin/httpd -S | grep Define | grep "="
Aspetto delle variabili nella configurazione Apache compilata:
$ source /etc/sysconfig/httpd;/sbin/httpd -t -D DUMP_CONFIG | grep -v "#"
Aspetto delle variabili nella configurazione Dispatcher compilata:
$ source /etc/sysconfig/httpd;/sbin/httpd -t -D DUMP_ANY
Nell'output dei comandi vengono visualizzate le differenze tra la variabile nel file di configurazione e l'output compilato.
Esempio di configurazione
/etc/httpd/conf.d/enabled_vhosts/aem_publish.vhost
:
<VirtualHost *:80>
DocumentRoot ${PUBLISH_DOCROOT}
Eseguire ora i comandi per visualizzare l'output compilato
Configurazione Apache compilata:
$ source /etc/sysconfig/httpd;/sbin/httpd -t -D DUMP_CONFIG | grep DocumentRoot
DocumentRoot /mnt/var/www/html
Configurazione Dispatcher compilata:
$ source /etc/sysconfig/httpd;/sbin/httpd -t -D DUMP_ANY | grep docroot
/docroot "/mnt/var/www/html"