Uso e nozioni di base sulle variabili

Questo documento illustra come puoi sfruttare la potenza delle variabili in Apache Web Server e nei file di configurazione del modulo dispatcher.

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 &quot;${PUBLISH_FORCE_SSL} == 1&quot;> 
   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:

Livello di log

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 &quot;${AUTHOR_WHITELIST_ENABLED} == 1&quot;> 
   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 &quot;${DEFAULT_STAT_LEVEL}&quot;
	}
}

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=&quot;10.43.0.59&quot; 
AUTHOR_PORT=&quot;4502&quot; 
AUTHOR_DOCROOT='/mnt/var/www/author' 
PUBLISH_IP=&quot;10.43.0.20&quot; 
PUBLISH_PORT=&quot;4503&quot; 
PUBLISH_DOCROOT='/mnt/var/www/html' 
ENV_TYPE='dev' 
RUNMODE='dev'

Non si tratta di variabili modificabili, ma puoi sfruttarle nei file di configurazione

Nota:

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:

&quot;dev.weretail.com&quot; 
&quot;dev.weretail.net&quot;

Con una nuova sintassi che utilizza il potere delle variabili per poter funzionare per dev, stage e prod:

&quot;${WERETAIL_DOMAIN}&quot; 
&quot;${WERETAIL_ALT_DOMAIN}&quot;

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

 Adobe

Ottieni supporto in modo più facile e veloce

Nuovo utente?

Adobe MAX 2024

Adobe MAX
La conferenza sulla creatività

14-16 ottobre Miami Beach e online

Adobe MAX

La conferenza sulla creatività

14-16 ottobre Miami Beach e online

Adobe MAX 2024

Adobe MAX
La conferenza sulla creatività

14-16 ottobre Miami Beach e online

Adobe MAX

La conferenza sulla creatività

14-16 ottobre Miami Beach e online