Quantcast
Viewing all articles
Browse latest Browse all 452

Ghost Blog Software unter Linux installieren

Vielleicht habt ihr schon einmal von Ghost gehört – der noch jungen node.js-basierten Blogsoftware. Aktuell liegt Version 0.7 vor (also noch keine fertige Version), aber wer will, kann schon einmal einen ersten Eindruck von Ghost gewinnen. Ghost kann auf einem eigenen Server installiert und genutzt werden oder über die offiziellen Instanzen. Diese Anleitung wird die Installation auf einem eigenen Linux-Server erklären.

Neuen Benutzer einrichten

Für den Ghost Server wird zuerst ein neuer Benutzer eingerichtet, unter dem Ghost laufen soll. Solche Software als root laufen zu lassen, wäre eine Security-Katastrophe. ;)

adduser --disabled-login --disabled-password ghost

Als „ghost“ User anmelden:

sudo -i -u ghost

NVM und Node.js Installieren

Damit Ghost installiert werden kann, ist Node.js Version 0.10 Voraussetzung. Für eine einfachere Verwaltung von Node.js Versionen nutzen wir NVM [GitHub] – den Node Version Manager. Die meisten Linux-Distibutionen haben zwar Node.js in ihren Paket-Repositories, aber oftmals eine veraltete oder zu neue Version. Mit NVM kann man ohne Root-Rechte eine Account-spezifische, beliebige Node.js Version installieren, benutzen und schnell zwischen ihnen umschalten. Komfortabler geht nicht.

Also wird zuerst einmal NVM heruntergeladen und der NVM Installer gestartet:

wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.26.1/install.sh | bash

oder:

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.26.1/install.sh | bash

(Alternative, manuelle Installation auf GitHub: https://github.com/creationix/nvm#manual-install)

Nachdem NVM installiert ist, muss der nvm-Befehl noch im System bekannt gemacht werden:

source ~/.profile

Jetzt kann die passende Node.js Version für Ghost 0.7 installiert werden – Node.js 0.10. Sie wird zugleich als Standardversion festgelegt, denn sonst müsste nach jedem Login des Users „ghost“ am System die gewünschte Node.js Version festgelegt werden.

nvm install 0.10
nvm alias default 0.10

Für die Blogsoftware wird nun ein neues Verzeichnis erstellt und betreten …

mkdir ghost
cd ghost

… und Ghost heruntergeladen und entpackt:

wget https://ghost.org/zip/ghost-0.7.0.zip
unzip ghost-0.7.0.zip

(Den aktuellen Downloadlink für wget findet ihr unter https://ghost.org/download/)

Nun müssen alle noch fehlenden Module für Ghost heruntergeladen und installiert werden. Das geschieht vollautomatisch über folgenden Befehl:

npm install --production

(npm = Node Package Manager – wurde mit Node.js automatisch mitinstalliert)

Ghost konfigurieren

Ghost ist installiert und muss noch konfiguriert werden. Aber keine Sorge – das ist schnell erledigt. Kopiert die Beispielkonfiguration nach „config.js“:

cp config.example.js config.js

In der config.js muss im „production“ Abschnitt eigentlich nur die url angepasst werden. Alles weitere ist optional.

Beispiel:

// ### Production
// When running Ghost in the wild, use the production environment.
// Configure your URL and mail settings here
production: {
    url: 'http://ghost.meinserver.tld',
    mail: {},
    database: {
        client: 'sqlite3',
        connection: {
            filename: path.join(__dirname, '/content/data/ghost.db')
        },
        debug: false
    },

    server: {
        host: '127.0.0.1',
        port: '2368'
    }
},

„url“ ist die Adresse, unter der Ghost zu erreichen sein soll. In meinem Beispiel nutze ich dafür eine eigene Subdomain.

mit einem

npm start --production

könnt ihr den Server kurz starten, um zu sehen, ob er korrekt läuft. Beendet Ghost dann wieder mit STRG+C.

Ghost Autostart beim Boot

Für einen komfortableren Start und Autostart beim Start des Serversystems nutze ich unter Ubuntu Server 14.04 ein Upstart Script. Leider kann ich euch nur für Ubuntu ein solches Autostart-Script vorstellen. Falls ihr kein Ubuntu Server verwendet, könnt ihr Ghost auch wie eben erwähnt manuell starten (am besten in einer screen-Session, um das Terminal nicht zu blockieren.).

Zunächst müsst ihr den „ghost“ Benutzer wieder verlassen:

exit

… und wechselt dann als Root in das Verzeichnis /etc/init/, wo ihr die Datei „ghost.conf“ mit folgendem Inhalt anlegt:

description "Starts Ghost server"

start on runlevel [2345]
stop on runlevel [06]

setuid ghost
setgid ghost

env HOME=/home/ghost

script
    chdir /home/ghost/ghost
    exec bash -c 'source ~/.profile && exec npm start --production'
end script

start on startup
respawn
respawn limit 20 5

… dann noch abspeichern und ghost mit einem

start ghost

starten.

Nginx Proxy einrichten

Als Application-Proxy für Ghost benutzen wir Nginx. Ich setze hier einen installierten Nginx-Webserver und grundlegende Kenntnisse im Umgang mit Nginx voraus. Die VirtualHost Konfiguration für den Ghost Proxy sieht in der Basisversion so aus:

server {
    listen 80;
    listen [::]:80;
    server_name ghost.meinserver.tld;

    location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header HOST $http_host;
        proxy_set_header X-NginX-Proxy true;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://127.0.0.1:2368;
        proxy_redirect off;
    }
}

Speichert die neue Konfiguration ab, aktiviert sie ggf. (je nach System), prüft sie via „nginx -t“ und ladet Nginx neu.

Für eine TLS-Verschlüsselte Verbindung braucht ihr in der Konfiguration nur die entsprechenden Parameter hinzufügen. Eine Schlüsselrolle spielt dabei die Zeile „proxy_set_header X-Forwarded-Proto $scheme;“ ohne die ihr bei einer HTTPS-Anfrage in einer Weiterleitungsschleife gefangen wärt. Denkt daran, auch in der Ghost-Konfiguration eine https:// url anzugeben, wenn ihr eine TLS-Transportverschlüsselung nutzen wollt.

Das Setup ist fertig und ihr solltet die Ghost-Startseite sehen, wenn ihr die konfigurierte URL im Webbrowser eingebt.


Viewing all articles
Browse latest Browse all 452