So installieren Sie Discourse Behind Nginx unter Ubuntu 14.04

Einführung

http://www.discourse.org [Discourse] ist eine Open-Source-Community-Diskussionsplattform für das moderne Web.

In diesem Tutorial werden Sie durch die Schritte zum Konfigurieren von Discourse, zum Verschieben hinter einen Reverse-Proxy mit Nginx und zum Konfigurieren eines SSL-Zertifikats mit Let’s Encrypt geführt. Das Verschieben von Discourse hinter einen Reverse-Proxy bietet Ihnen die Flexibilität, andere Websites auf Ihrem Droplet auszuführen.

Voraussetzungen

Stellen Sie sicher, dass Sie Folgendes haben, bevor wir beginnen:

  • Ubuntu 14.04 Droplet (1 GB oder größer)

  • Nicht-Root-Benutzer mit Sudo-Rechten (Initial Server Setup with Ubuntu 14.04 erklärt, wie dies eingerichtet wird. )

  • Diskurs installiert unter Verwendung von dieses Tutorial

  • Vollständig registrierte Domain. Sie können eine unter https://namecheap.com [Namecheap] erwerben oder kostenlos unter Freenom herunterladen.

  • Stellen Sie sicher, dass Ihr Domain-Name so konfiguriert ist, dass er auf Ihr Droplet verweist. Lesen Sie this tutorial, wenn Sie Hilfe benötigen.

Alle Befehle in diesem Lernprogramm sollten als Benutzer ohne Rootberechtigung ausgeführt werden. Wenn für den Befehl root-Zugriff erforderlich ist, wird vor + sudo + angezeigt.

Schritt 1 - Diskurs konfigurieren

Nachdem Sie Discourse installiert haben, müssen wir es so konfigurieren, dass es hinter Nginx funktioniert.

Es gibt nur eine Einstellung, die wir in "Diskurs" ändern müssen, damit wir sie hinter Nginx verschieben können. Wechseln Sie in das Verzeichnis, das die Konfigurationsdatei enthält:

cd /var/discourse

Öffnen Sie dann die zu ändernde Konfigurationsdatei:

sudo nano containers/app.yml

Scrollen Sie mit den Pfeiltasten nach unten zum Abschnitt "+ expose +" (dieser sollte sich oben befinden) und ändern Sie die erste Portnummer in dieser Zeile:

/var/discourse/containers/app.yml

...
## which TCP/IP ports should this container expose?
expose:
 - ":80"   # fwd host port 80   to container port 80 (http)
...

Diese Nummer kann zufällig gewählt werden und sollte nicht mit anderen geteilt werden. Sie können sogar den unbefugten Zugriff darauf mit einer iptables-Firewall blockieren (https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall- using-iptables-on-ubuntu-14-04[) Regel], wenn Sie möchten.

Speichern und beenden Sie nun den Texteditor.

Aktivieren Sie die Konfigurationsänderung, indem Sie Folgendes ausführen:

sudo ./launcher rebuild app

Dieser Schritt kann eine Weile dauern, bitte haben Sie etwas Geduld.

Sie können überprüfen, ob alles funktioniert, indem Sie Ihre Website besuchen. Ihr Domain-Name für Discourse (z. B. "+ http: // ") lädt die Schnittstelle nicht mehr in einen Webbrowser. Sie sollte jedoch verfügbar sein, wenn Sie den soeben für Discourse konfigurierten Port verwenden, z. B. " http: //". /: + `(Ersetzen Sie dies durch Ihren Domainnamen und den Port, den Sie gerade in diesem Schritt verwendet haben).

Schritt 2 - Installieren und Konfigurieren von Nginx

Nach der Installation und Konfiguration von Discourse für Nginx ist es an der Zeit, Nginx zu installieren.

Um Nginx unter Ubuntu zu installieren, geben Sie einfach diesen Befehl ein und die Installation beginnt:

sudo apt-get install nginx

Wenn Sie zu Ihrer alten Diskurs-URL unter "+ http: // +" navigieren, wird die Standard-Nginx-Webseite angezeigt:

Das ist okay. Wir werden dies jetzt in Ihrem Forum ändern. Stoppen wir zunächst Nginx:

sudo service nginx stop

Löschen Sie dann diese Standard-Webseiten-Konfiguration - wir brauchen sie nicht:

sudo rm /etc/nginx/sites-enabled/default

Als nächstes erstellen wir eine neue Konfigurationsdatei für unseren Diskurs-Server, die wir "+ Diskurs +" nennen.

sudo nano /etc/nginx/sites-enabled/discourse

Kopieren Sie die folgende Konfiguration und fügen Sie sie ein. Ersetzen Sie "" durch Ihren Domainnamen und "" durch den Port, den Sie gerade im vorherigen Schritt verwendet haben:

/ etc / nginx / sites-enabled / discourse

server {
       listen 80;
       server_name ;
       return 301 https://$request_uri;
}
server {
       listen 443 ssl spdy;
       server_name ;
       ssl_certificate /etc/letsencrypt/live//fullchain.pem;
       ssl_certificate_key /etc/letsencrypt/live//privkey.pem;
       ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
       ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
       ssl_prefer_server_ciphers on;
       location / {
               proxy_pass      http://:/;
               proxy_read_timeout      90;
               proxy_redirect  http://:/ https://;
       }
}

Diese Konfiguration bewirkt Folgendes:

  • Der erste Serverblock überwacht die Domäne "++" an Port 80 und leitet alle Anforderungen an SSL an Port 443 um. Dies ist optional, erzwingt jedoch SSL auf Ihrer Website für alle Benutzer.

  • Der zweite Serverblock befindet sich an Port 443 und leitet Anforderungen an den Webserver weiter, der an Port ++ (in diesem Fall Discourse) ausgeführt wird. Hierbei wird im Wesentlichen ein Reverse-Proxy verwendet, um Diskurs-Seiten über SSL an Ihre Benutzer und wieder zurück zu senden.

Möglicherweise haben Sie bemerkt, dass wir unter "+ / etc / letsencrypt +" auf einige Zertifikate verweisen. Im nächsten Schritt werden diese generiert, bevor Nginx neu gestartet wird.

Schritt 3 - Generieren der SSL-Zertifikate

Um die SSL-Zertifikate zu generieren, installieren wir zunächst den ACME-Client von Let’s Encrypt. Diese Software ermöglicht es uns, SSL-Zertifikate zu generieren.

sudo git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt

Dann gehe in das + letsencrypt + Verzeichnis:

cd /opt/letsencrypt/

Installieren Sie die Pakete, die für Let’s Encrypt zum ersten Mal erforderlich sind:

./letsencrypt-auto --help

Jetzt können wir Ihre Zertifikate durch Ausführen generieren (durch Ihre E-Mail-Adresse und Ihren Domain-Namen ersetzen):

./letsencrypt-auto certonly --standalone --email  --agree-tos -d

Sie sollten ziemlich schnell eine Antwort erhalten, ähnlich der folgenden:

Lassen Sie uns die Ausgabe verschlüsseln

IMPORTANT NOTES:
- If you lose your account credentials, you can recover through
  e-mails sent to .
- Congratulations! Your certificate and chain have been saved at
  /etc/letsencrypt/live//fullchain.pem. Your
  cert will expire on . To obtain a new version of the
  certificate in the future, simply run Let's Encrypt again.
- Your account credentials have been saved in your Let's Encrypt
  configuration directory at /etc/letsencrypt. You should make a
  secure backup of this folder now. This configuration directory will
  also contain certificates and private keys obtained by Let's
  Encrypt so making regular backups of this folder is ideal.

Sie werden feststellen, dass Ihre Zertifikate in "+ / etc / letsencrypt / live / +" gespeichert wurden. Dies bedeutet, dass unsere Nginx-Konfiguration jetzt gültig ist. Sie werden auch feststellen, dass das Ablaufdatum nicht zu weit entfernt ist. Dies ist bei Let’s Encrypt-Zertifikaten normal. Alles, was Sie tun müssen, um zu erneuern, ist, denselben Befehl erneut auszuführen. Die Anmeldung alle 90 Tage macht jedoch keinen Spaß. Daher werden wir sie in unserem nächsten Schritt automatisieren.

Schritt 4 - Automatisieren der Erneuerung von Let’s Encrypt-Zertifikaten

Nachdem wir unsere Zertifikate zum ersten Mal eingerichtet haben, sollten wir sicherstellen, dass sie automatisch erneuert werden. Let 's Encrypt-Zertifikate sind nur 90 Tage lang gültig. Danach verfallen sie und zeigen allen Besuchern Ihrer Website im Browser eine Warnung an. Zum Zeitpunkt des Schreibens ist die automatische Verlängerung nicht in den Client integriert, aber wir können ein Skript einrichten, um sie manuell zu verlängern.

Weitere Informationen finden Sie unter https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-14-04#step-4-%E2%80% 94-set-up-auto-renewal Schritt [Set Up Auto Renewal] von https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu -14-04 [So sichern Sie Nginx mit Let’s Encrypt unter Ubuntu 14.04] für Einzelheiten zum Einrichten eines Cron-Jobs zur automatischen Erneuerung Ihres Zertifikats.

Alle mit diesem Befehl erstellten Ausgaben befinden sich zur Fehlerbehebung unter "+ / var / log / certificate-renewal.log +".

Schritt 5 - Nginx neu starten

Schließlich sollte unsere Konfiguration abgeschlossen sein. Starten Sie Nginx neu, indem Sie diesen Befehl ausführen:

sudo service nginx restart

Wenn Sie nun zu "+ https: /// +" navigieren, sollte Ihre Website online sein und mit "Let’s Encrypt" gesichert sein, das in den meisten Browsern als grünes Schloss angezeigt wird.

Fazit

Das ist es! Sie haben jetzt ein Diskursforum hinter Nginx eingerichtet, das mit den neuesten SSL-Standards mit Let’s Encrypt gesichert ist.