Ich habe meine Installation durch ein fehlgeschlagenes Update zerbrochen – wie kann ich sie wiederherstellen?

Zusammenfassung: Ich habe auf die Schaltfläche „Aktualisieren“ in meinem Discourse-Admin-Panel geklickt, und die Aktualisierung ist fehlgeschlagen. Ich habe beschlossen, das Ganze neu zu starten und den Aktualisierungsvorgang erneut zu versuchen. Leider wird mein Discourse-Admin-Panel nicht angezeigt. Ich möchte die Dinge wieder zum Laufen bringen.

Zusätzliche Informationen: Dies befindet sich in einer DigitalOcean-VM, die eine WordPress-Website bedient. Ich habe sie vor Jahren eingerichtet und viele Details vergessen, aber irgendwie entscheidet Nginx anhand der angeforderten URL, ob WP für den Hauptinhalt oder Discourse für die Konversationen aktiviert werden soll. Die WP-Seite funktioniert immer noch.

Angesichts des naiven und beiläufigen Ansatzes, der in meiner Einleitung vorgeschlagen wird, wird es keine Überraschung sein, dass ich die genaue Art des Installationsfehlers, der mich in diesen traurigen Zustand gebracht hat, nicht ermitteln kann. Ich weiß nicht einmal, wo ich die Protokolldateien finden kann, die Hinweise enthalten könnten, um den Upgrade-Prozess wieder auf Kurs zu bringen.

Jeder Hinweis wäre sehr willkommen. Ich bin kein erfahrener Web-Admin, aber ich bin mit der Befehlszeile auf Debian-basierten Systemen vertraut. Die gerade erwähnte Software läuft alle auf Ubuntu 20.04.6 LTS, und ich habe SSH-Zugriff auf die entsprechende Plattform. Danke!

Hallo, versuchen Sie, den Container neu zu erstellen

1 „Gefällt mir“

Sie können versuchen:

cd /var/discourse
./launcher rebuild app

Das könnte das Problem beheben. Wenn nicht, wird es wahrscheinlich schwer zu erraten sein.

2 „Gefällt mir“

Vielen Dank für Ihre Antworten. Ich werde Jays Vorschlag befolgen und mich wieder melden. (Es kann jedoch mehrere Stunden dauern, bis ich das tue. Zuerst muss ich Pizza machen und sie meinen Gästen servieren. :slight_smile:

1 „Gefällt mir“

Leider scheint meine DigitalOcean VM zu klein zu sein. Wenn ich nach einem frischen Login du -sh eingebe, zeigt es an, dass meine zugewiesene Festplatte /dev/vda1 etwa 7 GiB frei hat. Nachdem ich den Befehl launcher rebuild app gegeben habe, geschieht eine Menge Herunterladen und Entpacken, und dann bricht das Skript ab, da es nur 3,3 G verfügbar sieht und sich weigert fortzufahren, es sei denn, es stehen 5 G oder mehr zur Verfügung.

Natürlich habe ich alles getan, um überflüssige Dinge zu finden und zu löschen, aber weitere 1,7 G zum Löschen zu finden, wird eine große Herausforderung sein. Gibt es Expertentipps für diese Situation? (Entweder in der Kategorie riesiger Ziele, die zum Löschen reif sind, oder im Bereich, den Launcher weniger anspruchsvoll zu bitten.)

PS: Alternativ kann ich die App auf einer stärkeren Maschine neu erstellen und dann einfach eine geeignete Datei auf diese unterdimensionierte kleine VM hochladen? Oder ist das übermäßig arkane schwarze Magie?

Versuchen Sie, den Befehl ./launcher cleanup auszuführen. Dieser Vorgang kann Ihnen helfen, den von Docker belegten Speicherplatz zu bereinigen.

Wenn Sie außerdem sicher sind, dass Sie zuvor der offiziellen Installationsanleitung gefolgt sind, können Sie ./launcher destroy app ausführen, um den vorherigen fehlerhaften Container zu entfernen. Es ist jedoch unerlässlich sicherzustellen, dass Ihre Datenbank und Uploads im Dateisystem des Hosts gespeichert sind und nicht innerhalb des Containers selbst.

Tatsächlich können Sie den Rebuild auf einem separaten Rechner durchführen und anschließend das Docker-Image auf Ihre VM übertragen. Sie müssen jedoch den Befehl rake db:migrate manuell auf Ihrer VM ausführen. Ich bin mir nicht ganz sicher, ob dieser Ansatz andere Probleme verursachen könnte.

1 „Gefällt mir“

Nur auf einen neuen VPS mit mehr Speicherplatz migrieren.

Dauert etwa 30 Minuten, wenn überhaupt.

2 „Gefällt mir“

Ich bin mir nicht zu 100 % sicher, aber ich möchte es versuchen. Wie kann ich den unerlässlichen Schritt der Sicherung meiner Datenbank und Uploads durchführen? Würde es ausreichen, die Dateien im Verzeichnis /var/discourse/shared/standalone an einen sicheren Ort zu kopieren, bevor ich etwas Ernsthaftes tue? (Gibt es einen Hinweis auf einen Standardprozess für die Art von praktischem Wiederherstellungsprojekt, das dies auslösen würde?)

Ich denke, Roberts pragmatische Antwort wäre die beste Wahl für die meisten Leute in einer ähnlichen Situation. Ich gehe einen anderen Weg, weil mein Kontext in mehrfacher Hinsicht einzigartig ist. Davon ist dies das Wichtigste: Meine Installation ist ein kleines Hobbyprojekt, bei dem der Verlust von allem enttäuschend, aber nicht verheerend wäre.

Nochmals vielen Dank.

Wenn sich die Dinge im Verzeichnis shared/standalone befinden, sind Sie auf der sicheren Seite.

Wenn Sie WordPress und Discourse haben, müssen Sie wahrscheinlich auf eine 2 GB/50 GB VM upgraden. Wenn Sie alle Backups gelöscht und eine Launcher-Bereinigung durchgeführt haben, haben Sie wahrscheinlich etwas, das Sie können (ach ja, Sie können auch den apt-Cache löschen, wenn Sie danach googeln).

1 „Gefällt mir“

Könnte dasselbe Problem sein, das wir gerade hatten, oder auch nicht: Wir haben die API von MaxMind verwendet, um die IP-Adressen zu lokalisieren. Die alte Version erforderte den MaxMind-API-Schlüssel in der Datei app.yml. Eine neuere (undokumentierte?) Änderung erfordert den MaxMind-API-Schlüssel UND den Benutzernamen in der Datei app.yml. Wenn der Benutzername fehlt, schlägt der Aufbau des Forums fehl.

2 „Gefällt mir“

Danke, @Frully, aber ich glaube, das ist ein anderes Problem. Hier ist die Fehlermeldung, die mich stoppt:

Status: Downloaded newer image for discourse/base:2.0.20240602-0023
docker.io/discourse/base:2.0.20240602-0023
You have less than 5GB of free space on the disk where /var/lib/docker is located. You will need more space to continue
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        25G   21G  3.5G  86% /

Ich werde mein Fehlersuchabenteuer heute Abend nach der Arbeit fortsetzen.

Freunde, ich werde meine Taktik ändern und @merefield’s Idee verfolgen, mein gesamtes Setup auf einen größeren VPS zu migrieren. Die Übertragung meiner Assets vom defekten Setup in das neue funktionierende wird sicherlich eine Herausforderung sein, aber ich werde ein paar gesunde Methoden ausprobieren und einen neuen Thread starten, falls keine davon funktioniert. Mit Dank an alle, die sich beteiligt haben, denke ich, dass dieser Thread sicher geschlossen werden kann.

4 „Gefällt mir“

Epilog: Der Umzug zu einem neuen Hoster hat mir etwas Nützliches über die Ausführung von Shell-Befehlen direkt im Discourse-Container gelehrt, das nun in einem anderen Thread beschrieben wird. In diesem anderen Thread gibt es auch noch ein paar weitere Informationen zum Sparen von Speicherplatz.

2 „Gefällt mir“