Mein Blog

Ein Blog mit Ghost und Node.js

Ghost ist eine minimalistisch aufgebautete Blogging-Plattform. Gestartet wurde das Projekt auf Kickstarter von John O’Nolan, der einfach nur eine wirklich einfache Blogging-Plattform haben wollte.

Das besondere an Ghost ist, das es in JavaScript mit Hilfe des Frameworks Node.js geschrieben wurde. Mit Hilfe von Node.js lassen sich hochperformante, skalierbare und echtzeitfähige Webanwendungen entwickeln. Node.js funktioniert dabei auch als Webserver. Da wir bereits einen Webserver auf Port 80 laufen haben (Apache2), müssen wir einen Weg finden, Apache2 und die Node.js Plattform parallel auf unserem Root-Server zu betreiben.

Wenn Sie noch unsicher sind, ob Sie Ghost wirklich benötigen, dann schauen Sie sich einfach zu Motivationszwecken einfach mal den Kickstarter Film aus 2013 an. Und denken Sie daran, dass es den klassischen LAMP Stack nun auch schon fast 20 Jahre gibt 🙂

Wenn Sie jetzt überzeugt sind :), dann lassen Sie uns starten. Zuerst müssen wir die Node.js Plattform installieren, dann das Ghost Blog, dann die Weiterleitung durch den Apache 2 und zu guter Letzt die permante.

Node.js auf Ubuntu 14.04. installieren

Da Node.js ein recht junges Projekt ist (Start in 2009), gibt es natürlich viele Änderungen und Anpassungen. In den Ubuntu 14.04 repositories ist die Version 0.10.25 enthalten. Diese Version ist zwar nicht die Neueste, aber recht stabil und vor allem ausreichend, um die Ghost Blogging Plattform zu installieren.

sudo apt-get update
sudo apt-get install nodejs

Das Paket nodejs stellt nur die absolute Basis Funktionalität bereit. Daher benötigt man noch den separaten Erweiterungsmanager Node.js package manager (npm).

sudo apt-get install npm

Normalerweise heisst Node.js auf der Kommandoebene node. In Ubuntu 14.04. heisst es nodejs. Die beiden folgenden Befehlen zeigen die Versionsnummern an und sollten nach der Installation ausgeführt werden um sicher zu gehen, dass alles geklappt hat.

novatrend@server1:~$ nodejs -v
v0.10.25
novatrend@server1:~$ npm -v
1.3.10

Die Sache mit dem Namen!

In der Ubuntu Version 14.04. heisst das Paket für Node.js nodejs. Das klingt zunächst mal logisch. Innerhaln des npm wird allerdings immer der Befehl node benutzt, so dass es hin und wieder Problem gibt. Dieser wunderbare Befehl (den ich ziemlich lange gesucht habe), löst das Problem.

sudo update-alternatives --install /usr/bin/node node /usr/bin/nodejs 10

Ghost installieren

Als erstes muss das Installationverzeichnis angelegt werden. Ich installiere in /var/www/ghost.serverblogger.ch/.

sudo mkdir -p /var/www/ghost.serverblogger.ch/

Dann ins Installationsverzeichnis wechseln

cd /var/www/ghost.serverblogger.ch

und den Quellcode herunterladen

sudo curl -L https://ghost.org/zip/ghost-latest.zip -o ghost.zip

Auspacken

unzip -uo ghost.zip -d ghost

und ins das gerade erzeugte Verzeichnis ghost wechseln

cd ghost

Zur eigentlichen Installation wird der Packet Manager genutzt

sudo npm install --production

Nach der Installation können Sie den Server mit

sudo npm start

starten. Ghost läuft nun auf Port 2368 auf Ihrem Root-Server

Apache und Ghost

Um das Blog auch sehen zu können und alles über Port 80 zu routen, müssen Sie den Default vhost des Apache2 Webservers umkonfigurieren und ein Proxymodul installieren.

Öffnen Sie die Ghost Konfigurationsdatei

sudo nano /var/www/ghost.serverblogger.ch/ghost/config.js

Ändern Sie alle 127.0.01 Einträge in die echte IP Adresse und die URL. In meinem Fall ist das 46.232.178.78 und ghost.serverblogger.ch

Öffnen Sie die Apache2 Standard Vitualhost Konfigurationsdatei

sudo nano /etc/apache2/sites-available/000-default.conf

fügen diese drei Zeilen hinzu und kommentieren das DocumentRoot aus

#DocumentRoot /var/www/html
ServerName ghost.serverblogger.ch
ProxyPreserveHost On
ProxyPass / http://46.232.178.78:2368/

Laden Sie das Apache Proy Modul

sudo a2enmod proxy_http
sudo a2enmod proxy

und starten den Apache2 Server neu

sudo service apache2 restart

Wechseln Sie nun in das Ghost Installationverzeichnis

cd /var/ghost.serverblogger.ch/html/ghost

und starten npm neu

sudo npm start

Ihr Blog ist nun unter http://ghost.serverblogger.ch erreichbar. IhrBenutzerkonto können Sie unter http://ghost.serverblogger.ch/ghost einrichten

Ghost User anlegen
Ghost User anlegen
Administrationsbereich
Administrationsbereich
Die Benutzeroberfläche ist wirklich schick!
Mein Blog
Mein Blog
Zu guter letzt müssen Sie noch dafür sorgen, das Ghost permanent auf Ihrem Root-Server läuft. Schliessen Sie die Anwendung mit Ctrl-C und führen Sie die folgenden Befehle aus:

sudo npm install forever -g
cd /var/www/ghost.serverblogger.ch/ghost
sudo forever start index.js

Das Beenden des Blog ist emotional etwas kritisch 😉 Sie müssen Ihr Blog töten, da es ja „forever“ läuft. Mit dem Befehl

ps axl | grep node

finden Sie es den entsprechenden Prozess … und mit der User root darf es töten!

novatrend@server1:/var/www/ghost.serverblogger.ch/ghost$ ps axl | grep node
0     0  8162     1  20   0 671656 23016 ep_pol Ssl  ?          0:00 /usr/bin/nodejs /usr/local/lib/node_modules/forever/bin/monitor index.js
0     0  8164  8162  20   0 1005368 87748 ep_pol Sl  ?          0:01 /usr/bin/nodejs /var/www/ghost.serverblogger.ch/ghost/index.js
0  1000  8176  7574  20   0  11732   688 pipe_w S+   pts/0      0:00 grep --color=auto node
novatrend@server1:/var/www/ghost.serverblogger.ch/ghost$ kill -9 8162
-bash: kill: (8162) - Operation not permitted
novatrend@server1:/var/www/ghost.serverblogger.ch/ghost$ sudo kill -9 8162

Hinweis: Stellen Sie sich darauf ein, dass wirklich jeder, dem Sie ihr Ghost-Blog zeigen, ebenfalls eins haben möchte!


tl:dr Es gibt schönere Blogging-Plattformen als WordPress. Sie werden Ghost haben wollen 😉


Beitrag veröffentlicht

in

von

Schlagwörter:

Kommentare

2 Antworten zu „Ein Blog mit Ghost und Node.js“

  1. […] eine tolle Sache um reinzuschnuppern. Sollten Sie sich zum self-hosting entscheiden kann ich Ihnen Ein Blog mit Ghost und Node.js, ans Herz legen, dort ist auf Deutsch gut beschrieben wie die Installation unter Ubuntu von statten […]

  2. […] die Installation von Ghost auf einem Root Server vor 6 Jahren (!) hier im Blog beschrieben – Ein Blog mit Ghost und Node.js. Damals war es nicht möglich, Node.js in einem Webhosting zu verwenden. Heute geht das aber […]