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
Die Benutzeroberfläche ist wirklich schick!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 😉
Kommentare
2 Antworten zu „Ein Blog mit Ghost und Node.js“
[…] 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 […]
[…] 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 […]