Livello di log
Questo documento illustra come puoi sfruttare la potenza delle variabili in Apache Web Server e nei file di configurazione del modulo dispatcher.
??Sommario
??Precedente Nozioni di base sulla cache
Variabili
Sia Apache che il modulo dispatcher (dalla versione 4.1.9) supportano le variabili.
Possiamo sfruttarle per molte funzioni utili tra cui:
- Verificare che quanto è specifico dell’ambiente sia estratto (anziché incorporato nelle configurazioni) per accertarsi che i file di configurazione da dev funzionino in prod con lo stesso output funzionale.
- Attivare/disattivare le funzionalità e modificare i livelli di log dei file non modificabili che AMS fornisce ma non consente di modificare.
- Modificare gli elementi da usare in base a variabili come RUNMODE e ENV_TYPE
- Abbinare i nomi DNS DocumentRoot e VirtualHost delle configurazioni Apache con le configurazioni dei moduli.
Uso delle variabili della linea di base
Poiché i file della linea di base di AMS sono di sola lettura e non modificabili, puoi attivare, disattivare o persino configurare delle funzionalità modificando le variabili utilizzate.
Variabili della linea di base pronte all’uso e configurabili
Tutte le variabili pronte all’uso sono definite in /etc/httpd/conf.d/variables/ootb.vars e assicurati che sia impostato un valore predefinito per tutte le variabili della linea di base.Una volta caricati i valori predefiniti, gli altri file .vars sovrascriveranno i valori definiti nel file ootb.vars.
Una qualsiasi delle variabili del file ootb.vars che si desidera modificare e regolare nel file modificabile /etc/httpd/conf.d/variables/ams_default.vars
Ecco un esempio di alcune variabili:
Define DISP_LOG_LEVEL info Define AUTHOR_WHITELIST_ENABLED 0 Define PUBLISH_WHITELIST_ENABLED 0 Define AUTHOR_FORCE_SSL 1 Define PUBLISH_FORCE_SSL 1
Esempio 1 - Forza SSL
Puoi impostare le variabili mostrate sopra, AUTHOR_FORCE_SSL o PUBLISH_FORCE_SSL, su 1 per attivare le regole di riscrittura che forzano il reindirizzamento su https degli utenti finali che accedono a un sito http
Ecco la sintassi del file di configurazione che permette il funzionamento di questa funzione:
</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 notare l’“include” delle regole di riscrittura è l’elemento che consente al codice di reindirizzare il browser degli utenti finali, ma è la variabile impostata a 1 che permette al file di essere usato oppure no
Esempio 2 - Livello di registrazione
Puoi usare le variabili DISP_LOG_LEVEL per impostare ciò che desideri per il livello di log effettivamente utilizzato nella configurazione in esecuzione.
Ecco l’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 log del dispatcher, devi solo aggiornare la variabile ams_default.vars DISP_LOG_LEVEL al livello desiderato.
I valori di esempio possono essere un numero intero o la parola:
|
Valore intero |
Valore parola |
---|---|---|
Traccia |
4 |
traccia |
Debug |
3 |
debug |
Informazione |
2 |
Informazioni |
Avvertenza |
1 |
avvertenza |
Errore |
0 |
errore |
Esempio 3 - Elenchi consentiti
Puoi impostare le variabili AUTHOR_WHITELIST_ENABLED e PUBLISH_WHITELIST_ENABLED a 1 per attivare regole di riscrittura che includono regole per consentire o meno il traffico degli utenti finali in base all’indirizzo IP. L’attivazione di questa funzionalità deve essere combinata con la creazione di un file di regole di elenchi consentiti da includere.
Ecco alcuni esempi di sintassi di come la variabile abilita gli “include” dei file degli elenchi consentiti e un esempio di file degli elenchi consentiti
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 notare il file sample_whitelist.rules implementa la restrizione IP, ma è l’attivazione della variabile che ti permette di includerla nel sample.vhost
Esempio 4: livello del file stat
La variabile DEFAULT_STAT_LEVEL può essere impostata su un numero che consentirà a ogni farm che utilizza questa variabile di sapere quante directory profonde creare.file stat durante lo svuotamento della cache
ams_default.vars:
Define DEFAULT_STAT_LEVEL 7
Ogni farm che utilizza questa variabile ora imposta il proprio livello di file stat su 7.È molto utile che questa impostazione di configurazione globale si applichi facilmente a molti farm. Ecco una sezione di esempio di un file farm in cui viene utilizzata la variabile
002_ams_publish_farm.any:
/publishfarm { /cache { /statfileslevel "${DEFAULT_STAT_LEVEL}" } }
Dove collocare le variabili
Argomentazioni per l’avvio del server web
AMS pone le variabili complessive nelle argomentazioni di avvio del processo Apache nel file /etc/sysconfig/httpd
Questo file dispone di 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 variabili modificabili, ma puoi sfruttarle nei file di configurazione
Dato che questo file dispone di “include” solo all’avvio del servizio, devi riavviare il servizio per implementare le modifiche. Ciò significa che non basta ricaricare una pagina; devi effettuare un riavvio
File di variabili (.vars)
Le variabili personalizzate fornite dal codice devono trovarsi nei file .vars nella directory /etc/httpd/conf.d/variables/
Questi file possono disporre di qualsiasi variabile personalizzata desideri. Puoi vedere alcuni esempi di sintassi 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 delle variabili, denominale in base al contenuto e per essere conforme alla convenzione di denominazione fornita nel manuale qui. Nell’esempio precedente puoi vedere che il file delle variabili ospita le diverse voci DNS come variabili da usare nei file di configurazione.
Uso delle variabili
Ora che hai definito le variabili all’interno dei file variabili, vuoi sapere come usarle correttamente negli altri file di configurazione.
Usiamo i file .vars dell’esempio di cui sopra per illustrare un caso d’uso corretto.
Vogliamo includere complessivamente tutte le variabili basate sull’ambiente e creiamo 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 in fase di avvio, il servizio httpd richiama le variabili impostate da AMS in /etc/sysconfig/httpd e dispone del set di variabili ENV_TYPE e RUNMODE.
Quando includi questo file .conf, lo includi subito perché l’ordine “include” dei file in conf.d è alfanumerico. Ciò significa che la presenza di 000 nel nome del file, assicura il caricamento di questo file nella directory prima degli altri.
L’istruzione “include” usa anche una variabile nel nome del file. Questa può cambiare quale file viene 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 includi quel file puoi usare i nomi delle variabili memorizzati al suo interno.
Nel file /etc/httpd/conf.d/available_vhosts/weretail.vhost 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 poter 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 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 poter funzionare per dev, stage e prod:
"${WERETAIL_DOMAIN}" "${WERETAIL_ALT_DOMAIN}"
Puoi usare queste variabili per individuare le impostazioni in esecuzione senza dover disporre di diversi file distribuiti per ambienti. Essenzialmente puoi “modellare” i file di configurazione usando le variabili e includere i file basati su variabili.
Prossimo articolo➡ Svuotamento