borrame.com - Colección particular de recortes de código y documentación para programación web

Canales RSS

Lo más fresco

  1. Reemplazar selección con JavaScript Nuevo
  2. ¿Esta IP pertenece a esta red? Modificado
  3. Mozilla Firefox Modificado

Sugerencias del chef

Lo más visitado

  1. Fecha y hora
  2. Dar formato a un número
  3. Rotar logs en Windows
  4. Eliminar formato en Excel
  5. Caché del navegador
Compartir esta página

Reiniciar Apache con cuidado (graceful restart)

Este humilde script es una imitación (barata, admito) del comando service httpd graceful que nos encontramos en Red Hat y otros Linuxes: reinicia el servicio de Apache si y sólo si no existe ningún error de configuración. Es lo mismo que ejecutar a mano el icono Test Configuration y después (si todo fue bien) reiniciar Apache con el icono Restart o (si todo fue mal) no reiniciarlo.

@echo off
rem
rem Hace un "graceful restart" de Apache - v2010-03-25
rem
rem Reinicia Apache, instalado como servicio de Windows, si y sólo si no hay errores de configuración
rem


rem Establecemos el juego de caracteres ISO-8859-1 (Latin 1)

chcp 28591 > NUL


rem Ejecutable de Apache 2 (ruta completa si la carpeta no está en %PATH%)

set APACHE=%ProgramFiles%\Apache Software Foundation\Apache2.2\bin\httpd.exe

rem Nombre del servicio

set SERVICIO=Apache2.2

rem Si esta variable existe se insertará un PAUSE al final para poder leer la salida

rem en sesiones no interactivas; comentar con REM para desactivar
set PAUSA_AL_FINAL=Sí, por favor



echo ==========================================================================
echo Verificando la configuración de Apache...
echo.

"%APACHE%" -t

echo.

if %ERRORLEVEL% NEQ 0 (
    goto cfg_err
) else (
    goto cfg_ok
)



:cfg_err
echo Se han encontrado errores, no se puede continuar.
goto fin

:cfg_ok
echo La configuración es correcta.
echo ==========================================================================
echo Reiniciando el servicio "%SERVICIO%"...
echo.

net stop "%SERVICIO%" 2> NUL
net start "%SERVICIO%"

if %ERRORLEVEL% NEQ 0 (
    goto reinicio_err
) else (
    goto reinicio_ok
)

:reinicio_err
echo Ha fallado el reinicio del servicio.
goto fin

:reinicio_ok
echo El servicio ha sido reiniciado con éxito.
goto fin


:fin
echo ==========================================================================
echo.
echo.


if defined PAUSA_AL_FINAL (
    pause
);

Hay que modificar las líneas set APACHE y set SERVICIO si no son las correctas para el equipo. El nombre del servicio se puede ver en el administrador de servicios de Windows (campo Nombre de servicio en el cuadro de propiedades) o buscar con regedit en la clave de registro HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services pero a veces es más fácil ponerse a adivinar.

Recordad que en Windows Vista hay que ejecutarlo como administrador: botón derecho y Ejecutar como administrador o, más cómodo, creamos un acceso directo y lo cambiamos para siempre en las propiedades del mismo.

Historial

v2010-03-25
Uso de la variable de entorno %ProgramFiles% en las rutas.
La pausa final se puede activar/desactivar con una variable.
v2008-02-28
Fijamos el juego de caracteres para evitar complicaciones con los acentos.
Separamos los dos pasos del reinicio para poder usar el script aun con el servicio inicialmente apagado.
v2008-02-05
Primera versión.

Esta página ha sido impresa el lunes 21 de mayo de 2012 (03:06:28 +0200) desde http://borrame.com/recortes/apache/graceful-restart.html. La última vez que miré contenía HTML válido con CSS fresquito y si tiene flatas de ortografía ha sido sin querer.

borrame.com es el sitio anteriormente conocido como bits.demogracia.com (no confundir con Demogracia, que sólo pasaba por ahí).

© 2005-2011 by Álvaro G. Vicario (alvaro.es) • Burgos (España) • borrame.com