Schlagwort-Archive: deployhq

WordPress in den Maintenance Modus versetzen

WordPress bringt seinen eigenen Update Mechanismus mit, der aber nicht funktioniert, wenn man WordPress eigentlich korrekt aufsetzt und dem PHP/Webserver keine Schreibrechte auf das DocumentRoott gewährt. Damit kann WordPress seine Dateien nicht aktualisieren. Das tolle am WordPress-Eigenen Update ist aber, das vorher der Maintenance-Modus angeschaltet wird und somit keiner in dieser Zeit auf den Blog zugreifen kann. Wie schaltet man aber nun diesen Maintenance-Modus an, wenn man über DeployHQ die Updates einspielt?

WordPress überprüft beim StartUp, ob im WordPress-Root eine Datei mit dem Namen „.maintenance“ existiert. Wenn ja, dann wird diese als PHP-Script inkludiert. In dieser wird die Variable $upgrading definiert, die den Unix-Timestamp des Start-Zeitpunkt des Upgrades enthält. Im StartUp wird dann überprüft, ob weniger als 10 Minuten vergangen sind und dann die Ausführung mit einer Fehlermeldung und HTTP-Statuscode 503 beendet.

In DeployHQ kann man nun ganz einfach zwei Skripte definieren, die einmal vor und nach dem Deploy ausgeführt werden.

Vorher:

echo '<?php $upgrading=time();' > /path/to/wordpress/root/.maintenance

Nacher:

rm /path/to/wordpress/root/.maintenance