Les packages précompilés pour Windows tels que WAMP ou XAMPP sont livrés avec une petite interface graphique pour gérer les divers services (daemon). Quand on se compile tout soit même on n’a pas cet outil. Que cela ne tienne !
Voici un batch pour gérer les arrêts/démarrages du daemon httpd d’Apache 2. Il est très pratique quand on met au point une configuration et qu’il faut souvent la recharger.
Il faut obligatoirement exécuter ce batch en faisant un clic bouton droit dessus et en choisissant « exécuter en tant qu’administrateur ». Il y a dans le script une tentative d’utiliser « runas » pour le lancer en admin directement en tapant son nom sur la ligne de commande mais il semble que les droits obtenus avec cette méthode ne soient pas suffisants pour installer le service.
Il faut adapter deux variables au début du fichier:
- le path complet de httpd.exe
- le nom de votre compte ayant les droits d’administrateur,
Il est facile d'étendre ce batch en fonction des besoins. On peut ajouter l’ouverture des fichiers de conf dans un éditeur comme notepad++ et l’affichage des logs (facile à faire si on installe la commande tail de gnuwin32)
@echo off
set HTTPD=C:\Path\to\Apache2\bin\httpd.exe
set ADMUSR=admin
if [%USERNAME%] == [%ADMUSR%] goto :init
@echo.
@echo Droits administrateur requis
runas /profile /user:%ADMUSR% %~dpnx0
if ERRORLEVEL 1 pause
goto :eof
:init
rem Fixe la taille visible de la fenêtre
mode con:cols=80 lines=40
rem Fixe la taille du buffer
powershell -command "&{$H=get-host;$W=$H.ui.rawui;$B=$W.buffersize;$B.width=80;$B.height=300;$W.buffersize=$B;}"
call :do_help
:loop
@echo.
set /P OP="Operation (help): "
2>nul call :do_%OP%
if ERRORLEVEL 1 call :erreur
goto :loop
:do_h
:do_help
@echo.
@echo == Operations :
@echo h = help
@echo i = info
@echo install, uninstall
@echo start, r = restart, stop
@echo on=(install + start) off=(stop + uninstall) info
@echo q = quit
@goto :done
:do_on
@echo on
%HTTPD% -k install
%HTTPD% -k start
@goto :done
:do_off
@echo on
%HTTPD% -k stop
%HTTPD% -k uninstall
@goto :done
:do_i
:do_info
%HTTPD% -v -V
%HTTPD% -l
%HTTPD% -M
@goto :done
:do_r
set OP=restart
:do_install
:do_start
:do_restart
:do_stop
:do_uninstall
@echo on
%HTTPD% -k %OP%
:done
@echo off
rem force le errorlevel à zéro
ver > nul
goto :eof
:erreur
@echo.
@echo ERREUR: "%OP%" n'est une opération valide.
goto :eof
:do_q
:do_quit
:do_exit
exit
Bon, effectivement, il existe le très spartiate Apache Service Monitor mais qui n’est pas extensible comme notre batch. Son avantage est de pouvoir gérer des serveurs Apache s’exécutant sur des machines Windows distantes.