Service web : Un mode maintenance pour bricoler
Afin de réaliser des maintenances sur mon service web (ou les services attenant tel que Mysql) j’ai mis en place un petit mot d’excuse qui dit en substance : « maintenance en cours, merci de repasser plus tard ». C’est mieux que « La connexion a échoué » ou « Can’t Connect to MySQL Server on nian nian nian » non ?
La configuration de prod :
- Apache sur le port 80
La configuration de maintenance :
- Apache sur le port 80 (le même)
- Lighttpd sur le port 81
- Iptables redirige le trafic arrivant sur le port 80 vers le port 81 en PREROUTING sauf pour mon IP (ça permet donc de bricoler)
Installation de lighttpd
Apeuté, et ayé :
aptitude -y install lighttpd update-rc.d lighttpd remove mkdir /var/www/maintenance echo "Serveur en maintenance" > /var/www/maintenance/index.html # Vous pouvez faire une belle page html c'est mieux !
Configuration de lighttpd
Éditer le fichier /etc/lighttpd/lighttpd.conf
server.modules = ( "mod_access", ) server.document-root = "/var/www/maintenance" server.upload-dirs = ( "/var/cache/lighttpd/uploads" ) server.errorlog = "/var/log/lighttpd/error.log" server.pid-file = "/var/run/lighttpd.pid" server.username = "www-data" server.groupname = "www-data" server.port = 81 server.error-handler-404 = "/index.html" index-file.names = ( "index.html", "index.lighttpd.html" ) include_shell "/usr/share/lighttpd/create-mime.assign.pl"
Il est certainement possible de faire plus propre sur ce point. Actuellement je gère le message dans le index.html que je met dans le error404. Des redirection 302 quelque soit l’URL serait à envisager.
Maintenance On/Off
Pour se mettre en mode maintenance :
# Démarrage du serveur d'excuse service lighttpd start # Redirection du port 80 vers 81 sauf pour mon IP iptables -A INPUT -p tcp --dport 81 -j ACCEPT iptables -t nat -A PREROUTING \\! -s ${IPMAISONDEMOI} -p tcp --dport 80 -j DNAT --to-destination ${IPDUSERVEUR}:81 iptables -t nat -A POSTROUTING -j MASQUERADE
Et pour désactiver le mode maintenance :
# Si vous n'avez pas d'autres règles (c'est mal) : iptables -F iptables -t nat -F # Sinon redémarrer votre service iptables # Lighttpd n'est plus utile service lighttpd stop
Si vous avez des suggestions…