Ghost installieren & Erste Schritte

Was getan werden muss, um deinen neuen Blog zum ersten mal einzurichten.

Ghost einsetzen

Du willst Ghost also einsetzen? Ausgezeichnet!

Die erste Entscheidung, die du zu treffen hast, ist ob du Ghost selbst installieren und einrichten oder ob du ein Installationsprogramm nutzen willst.

Installationsprogramme

Im Moment gibt es eine Reihe an einfachen Installationsprogrammen.

Manuelle Einrichtung

Dies erfordert einen Hosting-Account der bereits Node.js beherrscht oder es zur Installation anbietet. Viele Cloud-Dienste (Amazon EC2, DigitalOcean, Rackspace Cloud), VPS (Webfaction, Dreamhost) oder andere Pakete mit SSH-Zugang ermöglichen die installation von Node.js. Es gibt viele Anbieter und einige sind sehr günstig.

Was momentan nicht unterstützt wird, ist Shared-Hosting im Stil von cPanel, welches normalerweise ausschließlich PHP bietet. Wer jedoch bereits heute Ruby unterstützt, wird möglicherweise in Zukunft auch Node.js unterstützen, da diese gewissermaßen ähnlich sind.

Leider sind viele der Node.js Cloud-Hosting-Dienste wie Nodejitsu und Heroku NICHT kompatibel mit Ghost. Zwar lässt sich Ghost auf ihnen starten, sie löschen allerdings deine Dateien und somit auch alle hochgeladenen Bilder und die Datenbank. Heroku unterstützt MySQL und lässt sich somit verwenden, Bilder bleiben dennoch nicht permanent erhalten.

Die folgenden Links enthalten englische Anleitungen, die die Einrichtung beschreiben:

Ghost ununterbrochen ausführen

Bisher wurde Ghost mit npm start gestartet. Das ist der beste Weg für lokale Entwicklung oder Tests, sobald du allerdings das Terminal beendest oder dich aus SSH ausloggst, wird Ghost auch beendet. Um das zu verhindern, musst du Ghost als Dienst ausführen, wofür es mehrere Wege gibt.

Forever (https://npmjs.org/package/forever)

Du kannst forever nutzen, um Ghost als Hintergrunddienst zu betreiben. forever kümmert sich um deine Ghost-Installation und startet sie neu, falls der Node-Prozess durch einen Fehler beendet wird.

  • Um forever zu installieren, verwende npm install forever -g
  • Um Ghost zu starten, wechsle in das Ghost-Verzeichnis und führe NODE_ENV=production forever start index.js aus
  • Um Ghost zu stoppen, führe forever stop index.js aus
  • Um herauszufinden ob Ghost momentan läuft, führe forever list aus

Supervisor (http://supervisord.org/)

Beliebte Linux-Distributionen wie Fedora, Debian und Ubuntu bieten ein Paket für Supervisor: Eine Prozessverwaltung die es ermöglicht Ghost ohne herkömmliche Init-Scripte beim Systemstart auszuführen. Anders als ein Init-Script ist Supvervisor über verschiedene Distrubitionen und Kernel-Versionen hinweg portabel.

  • Installiere Supervisor für deine Linux-Distribution. Meistens geht das über:
    • Debian/Ubuntu: apt-get install supervisor
    • Fedora: yum install supervisor
    • Meiste andere Distributionen: easy_install supervisor
  • Mit dem Befehl service supervisor start stellst du sicher, dass Supervisor läuft
  • Erstelle das Start-Script für deine Ghost-Installation. Normalerweise gehört dies in /etc/supervisor/conf.d/ghost.conf Beispielsweise:

    [program:ghost]
    command = node /Pfad/zu/Ghost/index.js
    directory = /Pfad/zu/Ghost
    user = ghost
    autostart = true
    autorestart = true
    stdout_logfile = /var/log/supervisor/ghost.log
    stderr_logfile = /var/log/supervisor/ghost_err.log
    environment = NODE_ENV="production"
    
  • Um Ghost mittels Supervisor zu starten, verwende supervisorctl start ghost

  • Um Ghost zu stoppen: supervisorctl stop ghost

Für weitere Informationen kannst du einen Blick in die Dokumentation von Supervisor werfen.

Init Script

Linux-Systeme führen Init-Scripte beim Systemstart aus. Sie liegen in /etc/init.d. Um Ghost ununterbrochen auszuführen, sogar über einen Neustart hinweg, kannst du ein Init-Script einrichten. Das folgende Beispiel funktioniert unter Ubuntu und wurde unter Ubuntu 12.04 getestet.

Abhängig vom Betriebssystem, müssen die folgenden Befehle eventuell mit sudo ausgeführt werden.

  • Lege die Datei /etc/init.d/ghost mit folgendem Befehl an:

    $ curl https://raw.github.com/TryGhost/Ghost-Config/master/init.d/ghost \
      -o /etc/init.d/ghost
    
  • Öffne die Datei mit nano /etc/init.d/ghost und prüfe folgendes:

  • Ändere die GHOST_ROOT Variable zum Pfad unter dem Ghost installiert ist

  • Prüfe ob die DEAMON variable der Ausgabe von which node entspricht

  • Setze die korrekten Rechte mit dem Befehl

    $ chmod 755 /etc/init.d/ghost
    
  • Verwendung des Scripts:

    • Start: service ghost start
    • Stopp: service ghost stop
    • Neustart: service ghost restart
    • Status: service ghost status
  • Um Ghost beim Systemstart automatisch zu starten, muss das Init-Script entsprechend registriert werden. Das geht mit den folgenden Befehlen:

    $ update-rc.d ghost defaults
    $ update-rc.d ghost enable
    

Weitere Dokumentation darüber, wie node mit forever verwendet wird und wie man Ghost als daemon unter Ubuntu betreibt, werden sehr bald hinzugefügt!

Ghost mit einer Domain betreiben

Wenn du Ghost aufgesetzt hast um immer zu laufen, kannst du auch einen Web-Server als Proxy einrichten mit deiner Domain. Im folgenden Beispiel nehmen wir an du verwendest Ubuntu 12.04 und benutzt nginx als Web-Server. Es nimmt auch an, dass Ghost im Hintergrund lauft mit einer der oben genannten Methoden.

  • Installiere nginx

    $ sudo apt-get install nginx
    

    Dies installiert nginx und richtet alle nötigen Verzeichnisse und eine Standardkonfiguration an

  • Konfiguriere deine Seite

    • Erstelle eine Datei unter /etc/nginx/sites-available/example.com
    • Öffne die Datei mit einem Text-Editor (z.B. sudo nano /etc/nginx/sites-available/example.com) und füge folgendes ein:

      server {
          listen 80;
      
          server_name example.com;
          root /var/www/ghost;
      
          location / {
              proxy_set_header   X-Real-IP $remote_addr;
              proxy_set_header   Host      $http_host;
              proxy_pass         http://127.0.0.1:2368;
          }
      }
      
    • Ändere server_name und root deinem Setup entsprechend

    • Symlinke deine Konfiguration sites-enabled

    $ sudo ln -s /etc/nginx/sites-available/ghost.conf /etc/nginx/sites-enabled/ghost.conf
    
    • Starte nginx neu
    $ sudo service nginx restart
    

Ghost mit SSL zum Laufen bringen

Nachdem du Ghost unter einer Domain eingerichtet hast, ist es eine gute Idee die Admin-Oberfläche oder vielleicht gleich deinen ganzen Blog durch HTTPS zu schützen. Es ist ratsam, die Admin-Oberfläche mit HTTPS zu schützen, da Benutzername und Passwort in Klartext übermittelt werden, wenn du keine Verschlüsselung einstellst.

Das folgende Beispiel wird dir zeigen, wie du SSL zum Laufen bekommst. Wir nehmen an, dass du bisher dieser Anleitung gefolgt bist und nginx als deinen Proxyserver benutzt. Ein Setup mit einem anderen Proxyserver sollte ähnlich aussehen.

Zuerst musst du ein SSL-Zertifikat von einem Provider erhalten, dem du vertraust. Dein Provider wird dich durch den Prozess von einer privaten Schlüsselgeneration und einer Zertifikatsregistrierungsanforderung (Certificate Signing Request, kurz CSR) leiten. Nachdem du deine Zertifizierungsdatei erhalten hast, musst du die CRT-Datei von deinem Zertifikatsprovider und die KEY-Datei, welche während der Erteilung des CSR generiert wird, zu deinem Server kopieren.

  • mkdir /etc/nginx/ssl
  • cp server.crt /etc/nginx/ssl/server.crt
  • cp server.key /etc/nginx/ssl/server.key

Nachdem diese beiden Dateien an Ort und Stelle sind, musst du deine nginx-Konfiguration aktualisieren.

  • Öffne die nginx-Konfigurationsdatei mit einem Texteditor (z. B. sudo nano /etc/nginx/sites-available/ghost.conf)
  • Füge die mit einem Plus markierten Einstellungen zu deiner Konfigurationsdatei:

     server {
         listen 80;
    +    listen 443 ssl;
         server_name example.com;
    +    ssl_certificate        /etc/nginx/ssl/server.crt;
    +    ssl_certificate_key    /etc/nginx/ssl/server.key;
         ...
         location / {
    +       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    +       proxy_set_header Host $http_host;
    +       proxy_set_header X-Forwarded-Proto $scheme;
            proxy_pass http://127.0.0.1:2368;
            ...
         }
     }
    
    • Starte nginx neu
    $ sudo service nginx restart
    

Nach diesen Schritten solltest du in der Lage sein, den Adminbereich deines Blogs über eine geschützte HTTPS-Verbindung zu erreichen. Wenn du all deinen Verkehr zur SSL-Benutzung zwingen möchtest, ist es möglich, das Protokoll der URL-Einstellungen in deiner config.js-Datei zu https zu ändern (z. B.: url: 'https://mein-ghost-blog.com'). Dies wird die SSL-Nutzung für Frontend und Adminbereich erzwingen. Alle Anfragen, die über HTTP gesendet werden, werden zu HTTPS weitergeleitet. Wenn du Bilder in deinen Posts einbaust, die von Domains stammen, die HTTP verwenden, erscheint eine 'insecure content' (unsicherer Inhalt)-Warnung. Scripte und Schriftarten von HTTP-Domains werden aufhören zu funktionieren.

In den meisten Fällen wirst du SSL im Adminbereich erzwingen wollen und das Frontend über HTTP und HTTPS bedienen. Um SSL für den Adminbereich zu erzwingen, wurde die Option forceAdminSSL: true eingeführt.

Wenn du weitere Informationen über das Aufsetzen von SSL für deinen Proxyserver benötigst, sind die offizielle SSL-Dokumentation von nginx und apache perfekte Orte zum starten.