Discourse-Website lädt nach der Installation nicht, ohne Let's Encrypt zu aktivieren

Ich weiß gerade genug, um gefährlich zu sein, wenn ich vor einer offenen SSH-Sitzung sitze. Die Installation habe ich vor ein paar Tagen problemlos durchlaufen und sie hat funktioniert.

Heute musste ich jedoch neu aufsetzen (ich war auf einem Entwicklungsserver, nicht auf dem Produktivserver). Nach denselben Schritten erscheint nach dem Ausführen von ./discourse-setup und dem Aufruf der Website nach Abschluss der Installation nichts.

Ich habe auch ./launcher start app ausgeführt, aber immer noch passiert nichts.

Was sind typische Schritte, die ich zur Fehlerbehebung bei der Installation unternehmen sollte?

Keine Meldung, kein Fehler nach ./discourse-setup oder ./launcher start app?

Erzählen Sie uns, wie sich die Umgebungen unterscheiden.

Verwenden Sie einen Reverse-Proxy? CloudFlare?

Wo hosten Sie die Produktionsinstallation?

Nein, die Installation scheint erfolgreich gewesen zu sein. Wenn ich docker info überprüfe, sehe ich, dass der Container ebenfalls läuft.

Ich verwende Amazon Linux 2 auf AWS, und dies hat vor einigen Tagen auf demselben Betriebssystem funktioniert. CloudFlare wird für diese Domain nur für DNS genutzt.

Hier ist die genaue Reihenfolge meiner Schritte. Git, Docker und ncat wurden über amazon-linux-extras installiert, wie während der Installation empfohlen (dies sollte jedoch kein Problem sein, da ich vor einigen Tagen ein funktionierendes Entwicklerforum hatte).

  1. Git installieren
  2. Docker installieren und starten
  3. ncat installieren
  4. Discourse installieren
  5. nginx 1.12 installieren

Warum hast du das getan?

Eine berechtigte Frage. :joy: Ich habe das gemacht, weil es nach Schritt 4 nicht mehr funktionierte… haha. Soll ich es deinstallieren?

Ja. Deinstallieren.

Es liegt wahrscheinlich ein DNS-Problem vor.

Was gibt curl localhost zurück?

Was zeigt tail /var/discourse/shared/logs/var-log/nginx/access.log an?

Discourse enthält einen Webserver im Container.

curl: (7) Verbindung zu localhost Port 80 fehlgeschlagen: Verbindung verweigert

tail: kann '/var/discourse/shared/logs/var-log/nginx/access.log' nicht zum Lesen öffnen: Datei oder Verzeichnis nicht gefunden

Ich habe die normale Installation durchgeführt, aber ich habe bestätigt, dass der shared-Ordner nicht einmal existiert.

Danke übrigens für deine Hilfe! Wie gesagt, ich weiß gerade genug, um gefährlich zu sein … und nicht immer auf die gute Art. :smiling_face_with_sunglasses:

Entschuldigung.

tail /var/discourse/shared/standalone/logs/var-log/nginx/access.log

Oder, falls es immer noch falsch ist,

find /var/discourse/shared -name access.log

um zu sehen, wo sich die Protokolldatei befindet.

Ich habe es hier gefunden:

/var/discourse/shared/standalone/log/var-log/nginx/

Es gab keine access.log, aber eine error.log.

Darin stand immer wieder derselbe Eintrag (die echte Domain wurde hier durch example.com ersetzt):

2020/04/08 19:46:34 [emerg] 2112#2112: cannot load certificate "/shared/ssl/example.com.cer": PEM_read_bio_X509_AUX() failed (SSL: error:0909006C:PEM routines:get_name:no start line:Expecting: TRUSTED CERTIFICATE)

Ich habe den Zertifikatsprozess mit Let’s Encrypt nicht durchlaufen, da ich bereits ein Zertifikat für diese Domain habe. Muss ich Let’s Encrypt trotzdem noch einrichten?

Sie benötigen ein Zertifikat.

Sie können nach Anleitungen suchen, die erklären, wie man ein eigenes Zertifikat installiert – was oft als sehr mühsam beschrieben wird – oder Sie lassen Let’s Encrypt kostenlos und ohne Aufwand ein Zertifikat für Sie besorgen.

Na, sieh mal einer an. Es hat funktioniert.

Danke an @pfaffman und alle anderen, die geantwortet haben. :+1:

Eigentlich nehme ich das zurück. Chrome hat das Fenster in einem Modus geladen, der den letzten erfolgreichen Seitenaufruf anzeigte, aber ein Neuladen im Inkognito-Modus zeigt, dass es immer noch nicht funktioniert. Totaler Fehler von meiner Seite. :man_facepalming:

Gibt es einen Link dazu, wie man das Let’s Encrypt-Zertifikat einrichtet? Ich muss nachsehen, was ich getan habe (oder nicht getan habe).

Führen Sie einfach discourse-setup aus. Wenn es nach Let’s Encrypt fragt, geben Sie eine beliebige E-Mail-Adresse ein oder Ihre eigene, falls Sie eine Benachrichtigung erhalten möchten, falls eine Erneuerung erforderlich ist.

Ok, das habe ich gemacht… Ich ging davon aus, dass alles auf der Installationsanleitung basiert, aber ich bekomme immer noch leere Seiten.

Es sieht so aus, als würde Discourse nach dem Zertifikat im Verzeichnis /shared/ssl/ suchen, aber der tatsächliche Standort meines Zertifikats ist /shared/standalone/ssl/

Meine app.yml-Konfiguration ist wie folgt eingestellt:

   ## Der Docker-Container ist zustandslos; alle Daten werden in /shared gespeichert
volumes:
  • volume:
    host: /var/discourse/shared/standalone
    guest: /shared
  • volume:
    host: /var/discourse/shared/standalone/log/var-log
    guest: /var/log

Sie können Folgendes versuchen:

cd /var/discourse
rm -r shared/standalone/ssl shared/standalone/letsencrypt
./launcher rebuild app

Die rm-Zeile stammt aus dem Gedächtnis. Falls diese Verzeichnisse nicht existieren, suchen Sie heraus, was ich hätte eingeben sollen.

Es sieht also so aus, als stünde ich bei Let’s Encrypt vor einem Limit von 10 Zertifikaten pro Woche. Das erklärt wohl teilweise, warum ich an diesem Schritt nicht weiterkomme.

Hier ist das, was ich von jemandem gefunden habe, der nach mehreren Neustarts auf dasselbe Problem gestoßen ist: Trouble with SSL after lots of rebuilds - #14 by pfaffman

Also habe ich derzeit wohl keine andere Wahl, als mein eigenes, bereits vorhandenes Zertifikat zu installieren?