Ghost 1.x - Aktualisierung bei Uberspace

Ghost 1.x - Aktualisierung bei Uberspace

Nachdem ich jetzt seit gut drei Jahren diesen Blog mit Ghost in der Version 0.x als CMS betreibe, wurde vor ein paar Tagen das neue Major Release 1.0 veröffentlicht.
Mein absolut empfehlenswerter Hoster Uberspace hat bereits im Wiki eine aktualisierte Anleitung zur Installation erstellt und der Nutzer Ben eine praktische Hilfe zur Migration erstellt.
Da Ghost allerdings in den letzten Tagen mehrfach aktualisiert wurde und bei Uberspace die ghost-cli nicht genutzt werden kann, habe ich ein Script entwickelt, mit dem man ganz einfach per Shell Ghost aktualisieren und bei Bedarf sichern kann:

#!/bin/bash
#set -v
GHOSTDIR=~/node_apps/ghost
PACKAGE_VERSION_OLD=$(sed -nE 's/^\s*"version": "(.*?)",$/\1/p' $GHOSTDIR/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
		read -r -p "Soll ein Backup der bisherigen Instanz erstellt werden? [J/n] " response
		if [[ $response =~ ^([jJ][aA]|[jJ]|"")$ ]]
		then
			echo "Backup von bisheriger Version unter $GHOSTDIR-$(date +%[email protected]%T) wird erstellt..."
			cp -r $GHOSTDIR $GHOSTDIR-$(date +%[email protected]%T)
		fi	
		echo "Ghost $CURRENT_GHOST wird heruntergeladen und entpackt..."
		curl -LOk $CURRENT_GHOST_DOWNLOAD
		unzip $GHOSTDIR/$CURRENT_GHOST_FILE -d ghost-latest
		rm $GHOSTDIR/$CURRENT_GHOST_FILE
		rm -rf $GHOSTDIR/core
		rm -rf $GHOSTDIR/content/themes/casper
		rm $GHOSTDIR/index.js
		rm $GHOSTDIR/*.md
		rsync -a --remove-source-files $GHOSTDIR/ghost-latest/* $GHOSTDIR
		rm -rf $GHOSTDIR/ghost-latest
		echo "Die Datenbank von Ghost wird auf die neue Version migriert..."
		NODE_ENV=production knex-migrator migrate
		read -r -p "Cache loeschen vor Ghost-Aktualisierung? [j/N] " response
		if [[ $response =~ ^([jJ][aA]|[jJ])$ ]]
		then
			echo "Cache wird geloescht und Ghost danach aktualisiert"
					rm -rf $GHOSTDIR/node_modules && npm cache clear && npm install --python="/usr/local/bin/python2.7" --production
		else
			echo "Ghost wird jetzt aktualisiert..."
					npm install --python="/usr/local/bin/python2.7" --production
		fi
		svc -du ~/service/ghost
		PACKAGE_VERSION=$(sed -nE 's/^\s*"version": "(.*?)",$/\1/p' $GHOSTDIR/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..."
		echo "Bei Fehlern Logfile ueberpruefen: 'tail -F ~/service/ghost/log/main/current'"
	else
		echo "-> Ghost wird nicht aktualisiert"
	fi
else
	echo "-> Ghost ist bereits auf dem aktuellen Stand, keine Aktualisierung notwendig"
fi 

Einzig und allein Zeile 3 sollte angepasst werden und Ghost bereits als Dienst ghost eingerichtet sein.
Bei Fragen einfach melden!

Ähnliche Beiträge