Apache2-duplica-istanza
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)