Stop e restart di Apache

Se si controllano i processi in esecuzione sul proprio server web, si potranno vedere svariati processi httpd che stanno girando, tutti con PPID coincidente con il PID del processo httpd padre, l'unico che dovrebbe girare come utente root.

Ogni operazione di controllo del server web, gestita tramite l'invio di segnali, va quindi fatta sul PID del processo httpd padre.
Se per esempio si vuole fermare il servizio si può scrivere:
[[email protected] diego]# kill -TERM `cat /usr/local/apache/logs/httpd.pid`
Qui 'cat /usr/local/apache/logs/httpd.pid' indica semplicemente il PID del processo, che viene generalmente scritto in un file chiamato httpd.pid, il cui path completo può cambiare a seconda di come si è impostata l'opzione --runtimedir in fase di compilazione.
E' possibile verificare il progresso delle nostre operazioni analizzando i file di log, per esempio con:
[[email protected] diego]# tail -f /usr/local/apache/logs/error_log
Notare che i path dei file di pid e di log indicati possono variare anche tramite httpd.conf, per impostare le loro posizioni si usano le direttive PidFile e ErrorLog nel file di configurazione.

Ci sono 3 tipi di segnali che sono comunemente usati: TERM, HUP e USR1.

Segnale TERM: stop
Mandando il segnale TERM al processo padre, si causa l'immediato kill di tutti i processi figlio e il processo padre termina. Tutte le richieste http in gestione terminano immediatamente, e fino a quando il server non viene restartato nessuna richiesta verrà accolta. Il delay tra quando si lancia il comando e l'effettivo stop del server è di qualche secondo (in funzione di quanti sono i processi figlo).

Segnale HUP: restart
Mandando il segnale HUP al processo padre, si causa l'immediato kill di tutti i processi figlio, ma non del processo padre. Il processo padre rilegge il file di configurazione e riapre i file di log. Una volta fatto ciò ricrea i processi figlio che continueranno ad accogliere richieste.

Segnale USR1: graceful restart
Nota: Nelle versioni precedenti alla 1.2b9, questo segnale è leggermente instabile, e si consiglia di non usarlo.
Lanciando questo segnale, il processo padre dirà ai processi figli di terminare non appena hanno finito di gestire le richieste correnti (o di stopparsi immediatamente se non ne stanno gestendo), nel frattempo rilegge il file di configurazione, riapre i file di log e rigenera nuovi figli.
Questo è il metodo migliore per modificare e ricaricare la configurazione su un server che sta gestendo del traffico, senza interrompere alcuna sessione corrente.

Tramite lo script apachectl presente con i sorgenti di Apache, è possibile gestire in modo semplice l'avvio e la chiusura del web server, oltre ad avere la possibilità di invocare altre opzioni come il controllo dello stato del servizio e la verifica della configurazione.
Provare ad eseguire /usr/local/apache/bin/apachectl (o in un PATH diverso da quello di default, dopo averlo cercato con un locate apachectl) senza argomenti per visualizzare le opzioni disponibili.

Privacy Policy