Discourse lädt nicht mit Apache und Proxy-Weiterleitung

Obwohl ich ursprünglich vorhatte, mich von Discourse zu verabschieden, da die aktuelle Dokumentation völlig fehlt und sich hyperfokussiert auf CentOS/Nginx konzentriert, hat eine unglaublich großzügige und geduldige Person bei DigitalOcean auf einen Thread reagiert, den ich dort erstellt hatte. Nach einigen Versuchen und Fehlern half sie mir dabei, eine einfach zu befolgende Anleitung für potenzielle Discourse-Nutzer mit denselben Umständen wie meiner zusammenzustellen.

Als Erinnerung: Diese Umstände sind:

Installation von Discourse auf demselben Server wie Apache | Unter Verwendung von Ubuntu 18.04 | DigitalOcean

Danksagung an Bobbyiliev @ DigitalOcean
Install Discourse on a droplet with WordPress served by Apache ? | DigitalOcean (erste Antwort)

Voraussetzungen

  • Um auf der sicheren Seite zu sein, stellen Sie sicher, dass Sie Ihr Droplet sichern, damit Sie im Fehlerfall auf eine funktionierende Version zurückkehren können.
  • Verbinden Sie sich per SSH mit Ihrem Droplet.
  • Apache muss installiert sein. Sie können die Schritte zur Installation hier nachlesen:

Schritt 1 – Docker installieren

Folgen Sie für die Installation von Docker den Schritten hier:

Schritt 2 – Discourse herunterladen

Erstellen Sie zunächst ein Verzeichnis, in dem Sie Ihre Discourse-Dateien speichern:

mkdir /var/discourse

Klonen Sie danach das offizielle Discourse-Docker-Image nach /var/discourse:

git clone https://github.com/discourse/discourse_docker.git /var/discourse

Schritt 3 – Discourse so konfigurieren, dass es auf Port 8080 lauscht

Wir verwenden die Vorlage standalone.yml, die alle erforderlichen Dienste wie PostgreSQL, Redis usw. enthält.

Kopieren Sie die Beispiel-Datei mit dem folgenden Befehl:

cp /var/discourse/samples/standalone.yml /var/discourse/containers/app.yml

Bearbeiten Sie danach die Datei mit Ihrem bevorzugten Editor. Öffnen Sie /var/discourse/containers/app.yml und aktualisieren Sie die Ports in den Zeilen 23 und 24:

## Welche TCP/IP-Ports sollen von diesem Container exponiert werden?
expose:
  - "8080:80"   # Host-Port 8080 an Container-Port 80 (HTTP) weiterleiten
  - "8443:443"   # Host-Port 8443 an Container-Port 443 (HTTPS) weiterleiten

Falls Sie noch kein SSL-Zertifikat haben, stellen Sie sicher, dass Sie Zeile 16 auskommentieren:

  #- "templates/web.ssl.template.yml"

Fügen Sie einfach das #-Symbol vor der Zeile - "templates/web.ssl.template.yml hinzu, sonst startet Discourse nicht.

Schritt 4 – Discourse einrichten

Wechseln Sie das Verzeichnis:

cd /var/discourse

Starten Sie dann Discourse (da dies das erste Mal ist, dass Sie den Dienst starten, wird die Anwendung mit den neuen Änderungen in Ihrer app.yml-Datei initialisiert):

./discourse-setup

Hinweis: Stellen Sie sicher, dass gültige E-Mail-Server-Einstellungen angegeben werden, sonst kann die Einrichtung fehlschlagen.

Schritt 5 – Apache einrichten

Erstellen Sie in /etc/apache2/sites-available/ eine neue Datei namens forum.example.com.conf und fügen Sie den folgenden Vhost-Inhalt hinzu:

<VirtualHost *:80>
  ServerName forum.example.com
  ServerAlias www.forum.example.com

  <IfModule proxy_module>
    ProxyPreserveHost on
    ProxyPass / http://localhost:8080/
    ProxyPassReverse / http://localhost:8080/
  </IfModule>
</VirtualHost>
  • Aktivieren Sie den Vhost mit dem folgenden Befehl:
a2ensite forum.example.com
  • Aktivieren Sie Mod Proxy:
a2enmod proxy
a2enmod proxy_http
a2enmod proxy_balancer
a2enmod lbmethod_byrequests
  • Starten Sie Apache neu:
systemctl restart apache2

Danach können Sie direkt über Ihren Domainnamen auf Discourse zugreifen.


Hinweis 1: Bei der Installation von Discourse kann app.yml überschrieben werden, und die Zeilen 16/17 (SSL) werden wieder auskommentiert. Sie müssen diese Zeilen erneut auskommentieren und dann die App neu erstellen (vergessen Sie nicht, das Verzeichnis zu wechseln): ./launcher rebuild app

Hinweis 2: SSL ist mit dieser Anleitung für Discourse nicht aktiviert. Überraschenderweise scheint keine Dokumentation dafür zu existieren, wie man Let’s Encrypt SSL aktiviert, wenn es bereits für Apache aktiviert ist. Falls jemand eine Lösung dafür findet, kontaktieren Sie uns bitte.

4 „Gefällt mir“