Mar 26 2008
Debian: Apache 2 + envvars
Nedávno jsem při aktualizaci Apache na jednom ze strojů zjistil, že v testing verzi Debianu (lenny) nastali nějaké zásadnější změny v konfiguračních souborech, jmenovitě v /etc/apache2/apache2.conf
které bylo třeba ručně odsouhlasit před vlastní aktualizací.
Změna se týká předávání parametrů z prostředí uživatele pod kterým je server spouštěn do konfigurace Apache serveru – environment variables. Imho velmi zajímavá a vhodná věc. O co jde?
Parametrizovatelnost konfigurace Apache
Nová verze balíčku si vytváří další soubor: /etc/apache2/envvars
, v tom jsou definovány defaultní proměnné prostředí pro řízení a spouštění Apache (apache2ctl
, /etc/init.d/apache2
).
Tedy z vašeho apache2.conf zmizí natvrdo definované hodnoty jako:
User www-data Group www-data
a nahradí je proměnná, definovaná v souboru envvars:
User ${APACHE_RUN_USER} Group ${APACHE_RUN_GROUP}
Soubor /etc/apache2/envvars
pak vypadá přibližně takto:
export APACHE_RUN_USER=www-data export APACHE_RUN_GROUP=www-data
Inu, a na co je to tedy dobré kromě toho, že přesunu uživatele a skupiny pod kterou Apache běží do jiného souboru? Může se to hodit například při spravování většího množství virtuálních domén a nastavování jejich parametrů.
Pro příklad uvažujme jeden server, který zajišťuje několik domén: domena1.cz
, domena2.cz
, domena3.cz
. Každá konfigurace domény pak musí obsahovat IP (např.: 123.456.789.0) vašeho stroje asi následovně:
<VirtualHost 123.456.789.0:80> ServerName www.domena1.cz ServerAlias *.domena1.cz DocumentRoot /var/www/domena1.cz/public ... ... </VirtualHost> <VirtualHost 123.456.789.0:80> ServerName www.domena2.cz ServerAlias *.domena2.cz DocumentRoot /var/www/domena2.cz/public ... ... </VirtualHost>
Zde je jasně vidět že se vaše IP neustále opakuje a pokud máte například složitější nastavení subdomén a virtuálních serverů, jednotlivé konfigurační soubory rozděleny tak je pak velmi zdlouhavé v případě změny IP (například vám poskytovatel změní IP nebo přesunete server) všechny konfigurace projít a změnit.
Zde se pak ideálně nabízí použití právně envvars kde si definujete svoji IP adresu:
export APACHE_EXTERNAL_IP=123.456.789.0
a jednoduše upravíte vaši konfiguraci takto:
<VirtualHost ${APACHE_EXTERNAL_IP}:80> ServerName www.domena1.cz ServerAlias *.domena1.cz DocumentRoot /var/www/domena1.cz/public ... ... </VirtualHost> <VirtualHost ${APACHE_EXTERNAL_IP}:80> ServerName www.domena2.cz ServerAlias *.domena2.cz DocumentRoot /var/www/domena2.cz/public ... ... </VirtualHost>
a při změně IP adresy tak stáčí upravit jediný soubor a jediný řádek a vše funguje tak jak má.
Toto byl pouze příklad, myslím že lze nalézt spousty další vhodných použití envvars souboru a proměnných prostředí při konfiguraci Apache. Pro upřesnění pouze doplním verzi balíčku: Apache 2.2.8-1
Comments Off