Accueil > 4D, Apache, Développement, Mac OS X, Serveur, SSH > Mettre une page de maintenance web pour 4D Server Mac

Mettre une page de maintenance web pour 4D Server Mac

06/01/2014
Rating 4.33 out of 5
[?]

Lors de maintenance d’un 4D Server servant des pages web, lorsque l’on doit quitter 4D Server pour maintenance, changer de version par exemple, il est très ennuyeux de ne plus avoir du tout de réponse  du serveur, nous aurions préféré envoyer une page HTML au client pour lui signifier que le serveur est en maintenance et qu’il doit revenir plus tard. Ce n’est à priori pas possible puisque 4D Server étant quitté il n’y a plus de serveur HTTP pour lui répondre.

Sauf que, dans un Mac OS X nous disposont d’un serveur web apache qui n’est pas lancé par défaut et non utilisé puisque c’est notre 4D Server qui est chargé de cette tâche.

Nous allons donc utiliser ce précieux allié pour servir une page HTML de maintenance le temps de faire nos affaires avec 4D Server. 

Le principe est très simple : nous allons démarrer le serveur web de Mac OS X dans les preferences système Partage. c’est donc Apache qui répondra sur le port 80 et enverra une page html située dans le répertoire : mondisque/Bibliotheque/WebServer/Documents/index.html. Cette page index.html contiendra les recommandation en cas de maintenance.

Notre 4D Server va lui utiliser le port 8080 au lieu du 80 standard à paramétrer dans les propriétés de la base, onglet serveur http.  Nous allons à l’aide de la commande du terminal ipfw modifier la redirection du port 80 vers 8080 lorsque le 4D Server est lancé et supprimer cette redirection lorsque 4D Server est quitté.

Pour ce faire, il faut ajouter du code dans les événements de base ‘Sur démarrage serveur’ et ‘Sur Arret serveur’.

Créer une petite méthode générique pour  permettre l’utilisation du mode admin de la machine à partir de 4D car la commande ipfw doit être exécutée en sudo (admin).

ut_Sudo :

C_TEXTE($1;$Sortie;$Erreur;$Admin;$Script)
$Admin:=$1+"\n"
$Script:="sudo -S ls"
LANCER PROCESS EXTERNE($Script;$Admin;$Sortie;$Erreur)

Cette méthode reçoit un paramètre qui est le mot de passe admin de la machine.

Sur démarrage serveur :

C_TEXTE($Sortie;$Erreur;$Admin;$Script)
$Admin:="adminpass"
ut_Sudo ($Admin)
$Script:="sudo ipfw add 8080 fwd 127.0.0.1,8080 tcp from any to any 80 in"
LANCER PROCESS EXTERNE($Script;$Admin;$Sortie;$Erreur)

Au lancement  du serveur, nous demandons au système de rediriger toutes les requêtes qui arrivent sur le port 80 (apache pour le moment) vers le port 8080 (4D)

Sur arrêt serveur :

C_TEXTE($Sortie;$Erreur;$Admin;$Script)
$Admin:="adminpass"
ut_Sudo ($Admin)
$Script:="sudo ipfw del 8080"
LANCER PROCESS EXTERNE($Script;$Admin;$Sortie;$Erreur)

En quittant le 4D Server, nous demandons au système de supprimer la règle ipfw numéro 8080 créée au démarrage du serveur, ce sera donc apache et notre page index.html qui sera servie au client.

Pour terminer, il ne faudra pas oublier de placer dans le code html du header de votre page d’index les commandes pour éviter la mise en cache de la page :


<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />

Dans les préférences de Mac OSX vous trouverez dans l’option partage une boite à cocher pour lancer le serveur web Apache intégré. Cette option à disparue dans les versions récentes du système, il faudra alors lancer le serveur web à l’aide du terminal et de la commande ‘sudo apachectl start’.

 

Voilà, amusez-vous bien.

Les commentaires sont fermés.