marți, 14 iulie 2009

Instanțe apache 2 multiple pe FreeBSD

Mi s-a întâmplat de câteva ori să am nevoie să rulez mai multe instanțe de server apache pe un server. Deși metoda folosirii virtualhost este adesea suficientă, unicitatea anumitor directive din fișierul de configurare httpd.conf face necesară rularea de instanțe multiple.
Una dintre metodele de a rula mai multe servere apache concomitent este folosirea conceptului FreeBSD 'jail', care conferă o multitudine de avantaje, cum ar fi posibilitatea de a instala doar extensiile php strict necesare respectivei instanțe și izolarea mai bună față de server, dar punerea pe picioare a unui jail poate dura destul de mult.

O variantă alternativă este folosirea de profile de instanță apache distincte, care partajează același set de librării și extensii php, însă folosind fișiere de configurare diferite, lucru facilitat chiar de scriptul de pornire a serverului instalat de pachetul apache22. Pentru fiecare profil configurat, urmează a se pune în execuție câte un proces apache, cu setări specifice.
Astfel, în fișierul global de configurare a sistemului, /etc/rc.conf, directivele referitoare la apache22 se extind față de directivele uzuale:
# directive apache22 clasice, comune
apache22_enable="YES"
apache22_http_accept_load="YES"
apache22_http_accept_enable="YES"

# Directive apache22 care permit folosirea de profile
apache22_profiles="default p1"
apache22_default_enable="YES"
apache22_default_http_accept_enable="YES"
apache22_default_configfile="/usr/local/etc/apache22/httpd.conf"
apache22_p1_enable="YES"
apache22_p1_http_accept_enable="YES"
apache22_p1_configfile="/usr/local/etc/apache22/httpd-p1.conf"

Acum voi detalia semnificația directivelor suplimentare
apache22_profiles="p1 p2 p3"
indică scriptului /usr/local/etc/rc.d/apache22 să folosească instanțe multiple, instanțe identificate prin lista separată cu spații. Pentru fiecare profil, fișierul /etc/rc.conf va trebui să includă câte un set de directive de forma "apache22_profil_directiva=valoare".

Directivele specifice fiecărui profil sunt:

apache22_profil_configfile="/cale/catre/fisier/configurare/httpd.profil.conf"
apache22_profil_enable="YES|NO"
apache22_profil_flags="alte_directive_pentru_httpd_specifice_pentru_acest_profil"
apache22_profil_http_accept_enable="YES|NO"
apache22_profil_limits_enable="YES|NO"
apache22_profil_limits_args="limits_args"
apache22_profil_fib="FIB"


Este strict necesară indicarea fișierului de configurare al respectivului profil, toate celelalte directive fiind opționale. O directivă interesantă este "FIB", care nu poate avea efect decât pe FreeBSD mai recent de 7.1, care se referă la 'Forward Information Base' (FIB) asociat cu respectiva instanță apache. Începând de la versiunea 7.1, FreeBSD poate folosi multiple FIB-uri, lucru care permite folosirea de tabele de rutare diferite pentru procese diferite.

În continuare, se crează fișierul de configurare httpd-profil.conf specific respectivului profil, probabil pornind de la o versiune salvată sau de la fișierul de configurare inclus în distribuția Apache22. Va trebui să ajustați câteva setări importante: adresa IP si portul folosit de profil, amplasarea DocumentRoot, si în mod special amplasarea log-urilor, pentru a nu fi scrise în același loc cu logurile altor profile. Atenție mare și la adresa IP/port, dacă sunt mai multe servicii configurate să foloseasca acelasi IP și același port, uul dintre ele nu va putea porni.

Pentru pornirea tuturor instanțelor apache nu mai rămâne de făcut decât:
/usr/local/etc/rc.d/apache22 start

Ți-a plăcut această postare? Spune și altora!

Niciun comentariu:

Trimiteți un comentariu

Super ofertă la eMag!

Related Posts Plugin for WordPress, Blogger...