dijous, 10 de gener de 2013

Apache reboots on Redhat and Debian

Cada volta que canviem la configuració d'Apache, hi ha que assegurar-se que la sintaxi del fitxer de configuració del servidor web és la correcta. Aquest es el pas previ a qualsevol altre.

En Redhat utilitzariem la següent comanda per comprobar la sintaxi:

/etc/init.d/httpd configtest

I en Debian:

apache2ctl configtest

Si tot funciona correctament recibirem el següent missatge:

Syntax OK

Una volta ens hem assegurat que la sintaxi del fitxer de configuració es correcta podem procedir a realitzar el reinici del proces. Existeixen dos formes de reiniciar el servei: restart i graceful.

Restart:

Si utilitzem la opció restart, s'envia una senyal SIGHUP a tots els processos d'Apache. Açò es tradueix en:
  • Sol·licitar la finalització dels procesos fill amb una senyal TERM, i la posterior finalització del process pare.
  • Es tornen llegir el fitxers de configuracio. 
  • S'obren els fitxer dels logs.
  • Es crea un nou process pare i els fills que depenen d'ell.
El servei queda interrumpit durant un xicotet espai de temps.

Per a realitzar aquest tipus de reinici utilitzarem la següent comanda en Redhat:

/etc/init.d/httpd restart

Amb Debian la comanda serà una d'aquestes dos:
/etc/init.d/apache2 restart
apachectl -k restart

Graceful:

Si utilitzem la opció graceful, s'envia una senyal SIGUSR1, d'aquesta manera el proces pare d'Apache permet que els fills acaben de servir la petició que estan processant i que finalitzen una volta estiga servida.
  • S'envia una senyal SIGUSR1
  • El proces pare indica als processos fills que finalitzen quan acaben de servir la petició en curs.
  • El proces pare torna a llegir els fitxers de configuracio i a obrir els logs.
  • El fills que finalitzen de servir les peticions es van substituint per nous fills creats per el pare.
El servei no s'interrumpeix
Per a realitzar aquest tipus de reinici utilitzarem la següent comanda en Redhat:

/etc/init.d/httpd restart

Amb Debian la comanda serà una d'aquestes dos:

/etc/init.d/apache2 reload  
apachectl -k graceful