Httpd è un demone che viene eseguito in background per gestire le richieste. Di seguito esamineremo alcuni comandi utili per avviare questo demone, riavviarlo e terminarne l’esecuzione.
Se il servizio è associato ad una porta inferiore alla 1024 (specifica Listen), solo l’utente root può avviare il servizio apache. Una volta avviato il servizio httpd, dopo aver effettuato alcune operazioni preliminari, come per sempio generare i file di log e popolarli, egli lancia svariati processi figli, in grado di intercettare le richieste provenienti dai client e formire delle risposte.
Il processo padre gira con i permessi di root, ma i processi figli no, essi di norma vengono associati all’utente apache (di default www-data su sistemi debian)
Il modo migliore di invocare l’avvio di apache è utilizzando lo script apache2ctl start. Di norma comunque in tutti i sistemi citati nel capitolo precedente, una volta installato il server web, configurano il sistema perché apache parta all’avvio.
Quando ci sono problemi all’avvio di apache, solitamente si tratta di due errori particolari:
-
Si sta cercando di avviare il demone quando è già in esecuzione
-
Si sta cercando di avviare il servizio con un utente con privilegi insufficienti.
Per arrestare o riavviare il demone sono possibili 4 alternative:
-
apache2ctl stop → con questo comando (segnale TERM) si avvisa il processo padre killare tutti i processi figli. Una volta uccisi tutti i processi figli in esecuzione, viene terminata anche l’esecuzione del padre stesso e alcuna richiesta viene più servita.
-
apache2ctrl graceful-stop → in questo caso quando il segnale WINCH, avvisa il processo padre di chiudere tutti i processi figli immediatamente nel caso in cui non stiano servendo alcuna richiesta o di attendere la fine di questa prima di spegnersi Il processo padre una volta ricevuti il segnale WINCH, non accetta più richieste in ingresso, ed una volta terminata l’esecuzione dell’ultimo figlio, anche il processo padre termina.
-
apache2ctl restart → invoca il segnale HUP, cioè killa tutti i processi figli (segnale TERM), lascia in esecuzione il processo padre, che rilegge il file di configurazione e rigenera tutti i processi figli
-
apache2ctl graceful → viene passato il segnale USR1 al processo httpd padre, che avvisa i propri figli di chiudersi dopo che la richiesta corrente è terminata. Fatto ciò viene riletto il file di configurazione dal processo padre, che non è stato chiuso, e vengono rigenerati tutti i nuovi processi figli.










[...] “Avviare, riavviare e arrestare Apache” ci vengono illustrati i comandi e i requisiti fondamentali per l’esecuzione del [...]