Ghost

Ghost 2 auf Uberspace 7 per Script aktualisieren

Anleitung und Script, um die Blogging-Plattform Ghost bei dem Hoster Uberspace (7) einfach und sicher aktuell zu halten.

Ghost 2 auf Uberspace 7 per Script aktualisieren

Vor zwei Jahren schrieb ich bereits einen Artikel dazu, wie man einfach per Skript die Blogging-Plattform Ghost von einer auf die nächste Version aktualisiert.

Mittlerweile gibt es statt Ghost 1.x nun Version 2.x und Uberspace bietet auch eine komplett auf centOS 7 basierende neue Umgebung, "Uberspace 7".

Zeit also, um das Skript zu aktualisieren und somit für die Gegenwart und Zukunft fit zu machen, denn das Nutzen von ghost-cli zum Aktualisieren wird auch auf Uberspace 7 nicht unterstützt.

Zuerst folgt man dafür der Installationsanleitung aus dem UberLab 7.

Wenn dann alles läuft und der Zeitpunkt kommt, an dem man seine Ghost-Version aktualisieren möchte, kann man folgendes Skript dafür verwenden:

#!/bin/bash
#set -v
GHOSTDIR=~/ghost
PACKAGE_VERSION_OLD=$(sed -nE 's/^\s*"version": "(.*?)",$/\1/p' $GHOSTDIR/current/package.json)
CURRENT_GHOST=$(curl -s https://api.github.com/repos/TryGhost/Ghost/releases | grep tag_name | head -n 1 | cut -d '"' -f 4)
CURRENT_GHOST_DOWNLOAD=$(curl -s https://api.github.com/repos/TryGhost/Ghost/releases/latest | grep browser_download_url | cut -d '"' -f 4)
CURRENT_GHOST_FILE=$(echo $CURRENT_GHOST_DOWNLOAD | sed 's:.*/::')
echo "Installierte Version von Ghost: $PACKAGE_VERSION_OLD"
echo " Verfuegbare Version von Ghost: $CURRENT_GHOST"
cd $GHOSTDIR
if [[ $CURRENT_GHOST != $PACKAGE_VERSION_OLD ]]
then
	read -r -p "Soll Ghost jetzt von Version $PACKAGE_VERSION_OLD auf $CURRENT_GHOST aktualisiert werden? [J/n] " response
	if [[ $response =~ ^([jJ][aA]|[jJ]|"")$ ]]
	then
		echo "Ghost $CURRENT_GHOST wird heruntergeladen und entpackt..."
		cd $GHOSTDIR/versions/
		curl -LOk $CURRENT_GHOST_DOWNLOAD
		unzip $GHOSTDIR/versions/$CURRENT_GHOST_FILE -d $CURRENT_GHOST
		rm $GHOSTDIR/versions/$CURRENT_GHOST_FILE
		echo "Ghost wird jetzt aktualisiert..."
		cd $GHOSTDIR/versions/$CURRENT_GHOST
		npm install --production
		echo "Die Datenbank von Ghost wird auf die neue Version migriert..."
		cd $GHOSTDIR
		NODE_ENV=production knex-migrator migrate --mgpath $GHOSTDIR/versions/$CURRENT_GHOST
		ln -sfn $GHOSTDIR/versions/$CURRENT_GHOST $GHOSTDIR/current
		PACKAGE_VERSION=$(sed -nE 's/^\s*"version": "(.*?)",$/\1/p' $GHOSTDIR/current/package.json)
		echo "Ghost wurde von Version $PACKAGE_VERSION_OLD auf Version $PACKAGE_VERSION aktualisiert und wird neu gestartet. Dies kann ein paar Sekunden dauern..."
		supervisorctl restart ghost
		supervisorctl status
		echo "Bei Fehlern Logfile ueberpruefen: 'supervisorctl tail ghost'"
		echo "Zum Zuruecksetzen auf Ghost $PACKAGE_VERSION_OLD folgenden Befehl ausfuehren: 'ln -sfn $GHOSTDIR/versions/$PACKAGE_VERSION_OLD $GHOSTDIR/current' und dann per 'supervisorctl restart ghost' neustarten"
	else
		echo "-> Ghost wird nicht aktualisiert"
	fi
else
	echo "-> Ghost ist bereits auf dem aktuellen Stand, keine Aktualisierung notwendig"
fi 

Eventuell anpassen muss man dann nur noch die dritte Zeile zum Verzeichnis und das Skript per chmod +x ausführbar machen.

Ich hoffe, dass ich so einigen Leuten Zeit und Arbeit abnehmen kann und freue mich über Kommentare dazu.

0 Kommentare 0 Kommentare
0 Kommentare 0 Kommentare