Overcrowded

a blog by Christopher Bischoff

Move the most recent commit(s) to a new branch with Git

git branch newbranch  
git reset --hard HEAD~3 # Go back 3 commits. You *will* lose uncommitted work.*1  
git checkout newbranch  

via Stackoverflow

How to convert video to images

ffmpeg -i your-video.mov -r 2 -s 848x480 -f image2 humble-output-%03d.jpeg  

(-r how many frames per second should be captured)

via ffmpeg Documentation

Ghost auf v0.5.0 updaten

Dieses Blog läuft jetzt unter Ghost v0.5.0 und wird zuverlässig von Uberspace gehostet, weshalb ich den Service hiermit gerne weiterempfehle.

Das Update verlief reibungslos, auch wenn etwas Handarbeit nötig ist. Im Uberspace-Wiki kannst du nachlesen, wie du Ghost auf den Uberspace-Servern installieren kannst.

Phase 1: Trockenübung

Mein Blog liegt, in einem git-Repo, lokal auf der Platte. Updates führe ich immer lokal durch und pushe Sie dann auf den Server.

Erstelle einen neuen Branch

$ git branch v0.5.0
$ git checkout v0.5.0

Du solltest dich jetzt im Branch v0.5.0 befinden. Mit dem Befehl git branch listest du alle Branches auf. Der aktive Branch ist mit einem * markiert.

$ git branch
  master
* v0.5.0

Download

Lade dir die aktuellste Version von Ghost herunter und entpacke sie in einem temporären Ordner.

  1. Lösche die Datei index.js aus deiner bestehenden Ghost-Installation und ersetze Sie mit der index.js aus deinem temporären Ordner.
  2. Lösche die Datei package.json aus deiner bestehenden Ghost-Installation und ersetze Sie mit der package.json aus deinem temporären Ordner.
  3. Lösche den Ordner core aus deiner bestehenden Ghost-Installation und ersetze Sie mit core aus deinem temporären Ordner.
  4. Mein angepasstes Theme will ich behalten, deshalb lasse ich es wie es ist.

Als nächstes müssen die Node-Module aktualisiert werden.

$ npm install --production

Wenn das abgeschlossen ist, startest du den Ghost-Server. Als erstes wird Ghost ein paar Migrations-Tasks abfeuern.

$ npm start

...

Ghost is running in development... 
Listening on 127.0.0.1:2368 
Url configured as: http://127.0.0.1:2368 
Ctrl+C to shut down

Mit einem Link-Checker kannst du prüfen, ob alles soweit läuft. Ich nutze die App Integrity. Wenn du beide Fenster nebeneinander legst, kannst du sehen wie der Server (im Terminal) arbeitet und ob Links deiner Installation funktionieren. In meinem Fall sind nur zwei externe Links kaputt. Das ist okay.

Phase 2: Deployment

Da die Installation soweit funktioniert kannst du jetzt anfangen deine lokale Installation auf den Live-Server zu schieben.

Branches zusammenführen

Zuerst solltest du deinen lokalen Ghost-Server killen.

$ git checkout master
$ git merge v0.5.0

Als nächstes loggst du dich per SSH auf deinen Uberspace ein und fährst deinen Ghost-Service runter.

$ ssh <dein-user>@<dein-host>.uberspace.de
$ svc -d service/ghost/

Als nächstes solltest du ein Backup machen. Ich verbinde mich per SFTP und lade den Ordner content herunter. Dort liegen meine Datenbank, meine Bilder und mein Theme. Nun pusht du deinen Master-Branch zum remote origin.

$ exit
$ git checkout master
$ git push origin master

Jetzt müssen die Node-Module auf dem Online Server aktualisiert werden.

$ ssh <dein-user>@<dein-host>.uberspace.de
$ cd ~/ghost/
$ npm install --production

Um zu testen ob alles soweit funktioniert startest du den Ghost-Server.

$ npm start

Wieder sollten ein paar Migrations-Tasks abgefeuert werden. Sollte nach Abschluss der Tasks etwas wie Ghost is running in development... stehen. Muss noch die passende Environment-Variable gesetzt werden.

$ export NODE_ENV=production
$ npm start

Im Browser kannst du nochmal testen ob alles funktioniert hat. Bei mir lief alles reibungslos. ¯\_(ツ)_/¯

Zum Schluss killst du den temporären Server und startset den Ghost-Dienst wieder.

$ svc -u service/ghost/