Apache2-duplica-istanza

Da WikiSitech.
Vai alla navigazioneVai alla ricerca

Tutorial: duplicare l'istanza di Apache

Le spiegazioni che seguono fanno riferimento ad una linux box con SUSE 11.3 sulla quale sia già installato Apache 2.2.15 distribuzione SUSE. Per altre distribuzioni potrebbe essere necessario qualche adattamento.

Per ottenere il risultato richiesto sarà necessario eseguire il demone di Apache due volte a partire da un diverso file di configurazione evitando conflitti tra le due istanze. Nella nostra configurazione di esempio utilizzeremo stesso indirizzo, ma porte diverse, più precisamente le porte utilizzate saranno la 80 e 88 sullo stesso indirizzo IP.

Altro problema è rappresentato dal pid file nel quale Apache memorizza l'identificatore univoco del processo, process id, e che dovrà essere distinto per ogni istanza.

Cominciamo con il duplicare il file di configurazione httpd.conf, nel nostro caso posizionato in /etc/apache2, rinominandolo httpd-80.conf e creandone una copia httpd-88.conf.
Stesso procedimento lo applichiamo al file listen.conf rinominandolo in listen-80.conf e creandone una copia di nome listen-88.conf.
Modifichiamo le direttive dei file httpd-80.conf e httpd-88.conf rispettivamente nel seguente modo:

ErrorLog /var/log/apache2/error_log-80
Include /etc/apache2/listen-80.conf

e

ErrorLog /var/log/apache2/error_log-88
Include /etc/apache2/listen-88.conf


Aggiungiamo poi le seguenti direttive, immediatamente dopo la riga con la direttiva ErrorLog rispettivamente nei due file di configurazione:

CustomLog /var/log/apache2/access_log-80 combined
PidFile /var/run/httpd2-80.pid

e

CustomLog /var/log/apache2/access_log-88 combined
PidFile /var/run/httpd2-88.pid


Modifichiamo ora la direttiva del file listen-88.conf nel seguente modo:

Listen 88


Ora passiamo a modificare il file sysconfig.d/global.conf commentando la direttiva CustomLog

#CustomLog /var/log/apache2/access_log combined


Attiviamo le due istanze di Apache

Per eseguire lo start e lo stop del web server si può (e comunemente direttamente o indirettamente lo si fa) utilizzare lo script apachectl. Tale script esegue alcuni controlli prima di lanciare o bloccare il demone httpd. All'avvio viene utilizzato di default il file di configurazione httpd.conf, ma, per nostra fortuna, risulta possibile indicarne uno diverso con l'opzione -f.
Posizioniamoci in /usr/sbin/ dove nel nostro caso si trova apachectl, rinominiamo il file in apachectl-80 e ne creiamo una copia di nome apachectl-88.
Editiamo i file appena creati in modo da specificare il file di configurazione corretto. Per farlo dobbiamo individuare la riga che inizia con httpd_conf= e modificarla per utilizzare il file di configurazione previsto:

httpd_conf=${APACHE_HTTPD_CONF:-$sysconfdir/httpd-80.conf}

e

httpd_conf=${APACHE_HTTPD_CONF:-$sysconfdir/httpd-88.conf}


Proviamo la configurazione con:

apachectl-80 -t

e

apachectl-88 -t


Modifiche allo script di avvio automatico (init.d)

Per far si che il webserver si riavvii ed arresti correttamente durante le procedure di avvio ed arresto del sistema, è necessario intervenire sullo script presente nella cartella /etc/init.d
Posizioniamoci quindi in /etc/init.d/ dove troveremo il file apache2; rinominiamo il file in apache2-80 e ne creiamo una copia di nome apache2-88.
Editiamo i file appena creati in modo da specificare come file di configurazione quello corretto. Per farlo dobbiamo individuare la riga che inizia con httpd_conf= e modificarla per utilizzare il file di configurazione previsto:

httpd_conf=${APACHE_HTTPD_CONF:-$sysconfdir/httpd-80.conf}

e

httpd_conf=${APACHE_HTTPD_CONF:-$sysconfdir/httpd-88.conf}


Oltre a questo è necessario intervenire sul nome del file PID, modificando la riga opportuna in:

: ${pidfile:=/var/run/httpd2-80.pid}

e

: ${pidfile:=/var/run/httpd2-88.pid}


e infine modificare alcune tag contenute nella sezione INIT INFO rispettivamente in questo modo:

# Provides:                     apache-80 apache2-80 httpd-80
# Short-Description:            Apache 2.2 HTTP Server (WS port 80)

e

# Provides:                     apache-88 apache2-88 httpd-88
# Short-Description:            Apache 2.2 HTTP Server (WS port 88)