Ich habe eine Installation von 2.5.0.beta4.
Sie sollte aktualisiert werden, aber im Prozess ist sie kaputt gegangen und meine Website wird nicht mehr geladen.
Ich habe alle Dateien und die Datenbank usw. Es war über einen Docker auf Ubuntu 16.
Welche Optionen habe ich, um dies zu beheben?
Ich habe keine Ahnung, wenn es um die Shell geht, daher muss ich jemanden damit beauftragen, aber ich muss wissen, ohne im Dunkeln zu tappen, was ich tun sollte.
Jede Hilfe wird geschätzt.
Können Sie weitere Details angeben, wird der Container geladen (docker ps)? Gibt es Fehlermeldungen/Protokolle, die den Weg weisen könnten? Hosten Sie selbst oder auf einem Drittanbieter-Host?
Hallo Mike, danke für deine Antwort, hier ist, was ich bekomme.
Wenn ich ./discourse-docto ausführe, erhalte ich diese Fehlermeldung:
+ /usr/bin/docker run --shm-size=512m -d --restart=always -e LANG=en_US.UTF-8 -e RAILS_ENV=production -e UNICORN_WORKERS=2 -e UNICORN_SIDEKIQS=1 -e RUBY_GLOBAL_METHOD_CACHE_SIZE=131072 -e
RUBY_GC_HEAP_GROWTH_MAX_SLOTS=40000 -e
RUBY_GC_HEAP_INIT_SLOTS=400000 -e
RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR=1.5 -e
DISCOURSE_DB_SOCKET=/var/run/postgresql -e
DISCOURSE_DB_HOST= -e
DISCOURSE_DB_PORT= -e
LETSENCRYPT_DIR=/shared/letsencrypt -e
DISCOURSE_FORCE_HTTPS=true -e
DISCOURSE_HOSTNAME=discuss.domain -e
DISCOURSE_DEVELOPER_EMAILS=info@domain -e
DISCOURSE_SMTP_ADDRESS=mail3.domain -e
DISCOURSE_SMTP_PORT=587 -e
DISCOURSE_SMTP_USER_NAME=xxx@domain -e
DISCOURSE_SMTP_PASSWORD=xxx -e
LETSENCRYPT_ACCOUNT_EMAIL=info@domain -h
Ubuntu-1804-bionic-64-minimal-app -e
DOCKER_HOST_IP=172.17.0.1 --name app -t -p 80:80 -p 443:443 -v /var/discourse/shared/standalone:/shared -v /var/discourse/shared/standalone/log/var-log:/var/log --mac-address 02:8d:5a:f6:a3:11 local_discourse/app /sbin/boot
Unable to find image 'local_discourse/app:latest' locally
docker: Error response from daemon: pull access denied for local_discourse/app, repository does not exist or may require 'docker login': denied: requested access to the resource is denied.
See 'docker run --help'.
Failed to restart the container.
Gleiche Fehlermeldung, wenn ich versuche, /launcher rebuild app auszuführen.
docker ist die neueste Version.
Außerdem sehe ich diese Fehlermeldung im Doctor-Log:
FAILED
--------------------
Pups::ExecError: cd /var/www/discourse & find /var/www/discourse ! -user discourse -exec chown discourse {} + failed with return #<Process::Status: pid 1929 exit 1>
Location of failure: /usr/local/lib/ruby/gems/3.2.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"web", "cmd"=>["gem install bundler --conservative -v $(awk '/BUNDLED WITH/ { getline; gsub(/ /,\\\"\\\"); print $0 }' Gemfile.lock)", "find $home ! -user discourse -exec chown discourse {} \\+"]}
bootstrap failed with exit code 1
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.
f4d0b782e3d1c3deccb5e3d6c186a08ebbaaea22ed37d19a2ff07b7688c83926
Welche Art von Upgrade haben Sie durchgeführt? Ich würde die Datei app.yml auf Tippfehler überprüfen und dann einen vollständigen Neuerstellungsvorgang erneut ausführen.
Ihre Docker-Version ist zu alt, und das liegt daran, dass Ihr Ubuntu zu alt ist.
Haben Sie ein Backup? Starten Sie einfach einen neuen VPS mit Ubuntu 22 und stellen Sie ihn wieder her.
Ich habe keine Sicherung, nur einen Snapshot von der VPS, als sie zuletzt funktionierte, aber das wird nach der Wiederherstellung nicht geladen.
Docker version 23.0.3, build 3e7cbfd
app.yml ist OK, validiert auf https://www.yamllint.com
Fehler bezieht sich auf diese Zeile im Launcher:
cidbootstrap=cids/\"$config\"_bootstrap.cid
local_discourse=local_discourse
image=\"discourse/base:2.0.20230409-0052\"
docker_path=`which docker.io 2\u003e /dev/null || which docker`
git_path=`which git`
local_discourse=local_discourse
Gibt es in dieser Situation eine Möglichkeit, Daten zu erhalten oder ein Backup zu erstellen?
Die Datenbankdateien sollten zugänglich sein. Auf meinem Produktionsserver befinden sie sich unter /var/discourse/shared/standalone/postgres_data, bei Ihnen könnten sie sich an einem ähnlichen Ort befinden.
Ich empfehle, eine VOLLSTÄNDIGE Sicherung des Systems auf einem anderen Server durchzuführen, bevor Sie fortfahren, insbesondere aller Verzeichnisse unter einem ‘discourse’-Verzeichnis.
Wenn keine aktuelle (genug) Sicherung vorhanden ist, würde ich einen neuen Server mit einer aktuelleren Version von Ubuntu (und damit Docker) erstellen und dann alle Verzeichnisse unter den Discourse-Trees dorthin kopieren, einschließlich aller PostgreSQL-Dateien. (Ich musste dies auf einem Discourse-Server noch nicht tun, aber ich verwalte PostgreSQL-Datenbanken seit 20 Jahren, und wenn die Datenbankdateien intakt sind, hilft das bei der Neuerstellung/dem Wiederaufbau von Dingen.)
Ist es schon eine Weile her, seit dieses System aktualisiert wurde? Wenn die Antwort auf diese Frage ‘ja’ lautet, könnte es Komplikationen geben, wenn versucht wird, vorhandene Dateien unter den Discourse-Verzeichnissen auf einen neuen Server zu kopieren, da dies nicht der richtige Weg ist; eine Discourse-Sicherung enthält viel mehr als nur die PostgreSQL-Datenbankdateien. (Deshalb versuche ich, eine Sicherung zu erstellen, bevor ich auch nur ein kleines Upgrade durchführe, obwohl ich zugebe, dass ich es nicht immer tue.)
Ihre neueste Discourse-Sicherung befindet sich wahrscheinlich in einem Verzeichnis, das diesem hier ähnelt:
/var/discourse/shared/standalone/backups/default
Hallo Mike, danke für deine Antworten, das weiß ich sehr zu schätzen.
Das Upgrade ist fehlgeschlagen und irgendwann hat die SSL-Erneuerung automatisch aufgehört, sich zu erneuern. Während ich versuchte, all das zu tun, bin ich in dieses Szenario geraten.
Ich versuche, die App neu zu erstellen, aber ich stoße auf das Problem, dass nicht genügend Speicherplatz vorhanden ist. Aus irgendeinem Grund werden 15 GB von Discourse belegt.
Gibt es außer dem Neuerstellen eine Möglichkeit, Discourse mit einem Startbefehl zu starten?
Danke nochmals.
Sie haben wahrscheinlich mehrere Container-Images herumliegen.
Wenn Sie ‘docker images’ ausführen, werden diese aufgelistet. Auf meinem Produktionssystem werden beispielsweise 7 Images aufgelistet, die jeweils etwa 3,5 GB groß sind, sodass sich das zu einem ziemlichen Speicherplatz summiert. Mein Sandbox-System zeigt über 20 davon an. Sie könnten einige dieser Images löschen, um Speicherplatz freizugeben, oder sie auf einen separaten Server kopieren, wenn Sie dort Speicherplatz zur Verfügung haben.
Ich gehe davon aus, dass ‘docker ps’ keinen laufenden Container anzeigt.
Haben Sie versucht, einen älteren Container zu starten, um zu sehen, ob die Website dadurch hochfährt? Dann können Sie ein Backup erstellen.
Launcher sollte dafür funktionieren, ich denke, er dient größtenteils als Frontend für Docker-Befehle, aber er kann auch andere Aufgaben ausführen, die notwendig sind, um Discourse zum Laufen zu bringen.
Hallo Mike, es ist komischerweise nur 1 Container darin. Ich habe Platz geschaffen, indem ich die Logs usw. gelöscht habe. Aber ohne Erfolg. Es gibt ein weiteres Problem, das ich nicht finden kann. Ich werde einfach deine anderen Anweisungen befolgen, um zu sehen, ob ich es mit manuellen Methoden zum Laufen bekomme, z. B. Dateien und Datenbank auf eine neuere Version kopieren.
Wenn ich docker run ausführe, erhalte ich:
docker run discourse
Image 'discourse:latest' lokal nicht gefunden
docker: Fehlerantwort vom Daemon: Pull-Zugriff für discourse verweigert, Repository existiert nicht oder erfordert 'docker login': Zugriff auf die Ressource verweigert.
Was passiert, wenn Sie es mit dem Launcher versuchen?
./launcher start app
Gibt Folgendes aus:
.....abgeschnitten
Image 'local_discourse/app:latest' lokal nicht gefunden
/usr/bin/docker: Fehlermeldung vom Daemon:
pull access denied for local_discourse/app,
repository does not exist or may require 'docker login': denied:
Zugriff auf die Ressource wird verweigert.
Was erhältst du von ‘docker images’?
Nur einer:
discourse/base 2.0.20230409-0052 08afe7103ce8
Ich kann die Fehlermeldungen, die Sie erhalten, mehr oder weniger reproduzieren, indem ich mit einem älteren Bild spiele, aber bisher habe ich keine Möglichkeit gefunden, das Laden dieses Bildes zu erzwingen.
Ich bin mir nicht sicher, was ich zu diesem Zeitpunkt noch vorschlagen kann.
Hallo Mike, deine Lösung vorhin hat es etwas behoben. Ich habe alle Dateien auf einen neuen VPS kopiert und es hat nach ein paar Änderungen funktioniert. Danke an alle für die Hilfe.
Schön, dass Sie eine Lösung gefunden haben, ich helfe gerne. Denken Sie daran, regelmäßig Sicherungen zu erstellen. ![]()
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.