Ho un’installazione di 2.5.0.beta4.
Stava per essere aggiornata ma nel processo si è interrotta e il mio sito non si carica più.
Ho tutti i file e il database, ecc. Era tramite un docker su Ubuntu 16.
Quali sono le mie opzioni per risolvere questo problema?
Non ho idea quando si tratta di shell, quindi dovrò chiedere a qualcuno di farlo per me, ma ho bisogno di sapere senza sparare nel buio, cosa dovrei cercare di fare.
Qualsiasi aiuto è apprezzato.
Puoi fornire ulteriori dettagli, il container è in fase di caricamento (docker ps)? Ci sono messaggi di errore/log che potrebbero indicare la causa? Ti stai auto-ospitando o sei su un host di terze parti?
Ciao Mike, grazie per aver risposto, ecco cosa ottengo.
Quando eseguo ./discourse-docto ottengo questo errore:
+ /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.
Stesso errore quando provo a eseguire /launcher rebuild app
docker è l’ultima versione
Vedo anche questo errore nel log del doctor:
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
che tipo di aggiornamento stavi facendo? Controllerei il file app.yml per errori di battitura e poi eseguirei nuovamente una ricostruzione completa.
La tua versione di Docker è troppo vecchia, e questo sta succedendo perché il tuo Ubuntu è troppo vecchio.
Hai un backup? Avvia semplicemente un nuovo VPS su Ubuntu 22 e ripristinalo.
Non ho un backup, solo uno snapshot dal VPS quando funzionava l’ultima volta, ma non si carica dopo il ripristino.
Docker version 23.0.3, build 3e7cbfd
app.yml è OK, convalidato su https://www.yamllint.com
L’errore riguarda questa riga nel 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
C’è un modo per ottenere dati o backup in questa situazione?
I file del database dovrebbero essere accessibili. Sul mio server di produzione si trovano in /var/discourse/shared/standalone/postgres_data, i tuoi potrebbero trovarsi in un posto simile.
Suggerisco di eseguire un backup COMPLETO del sistema su un altro server prima di procedere, in particolare di tutte le directory che si trovano sotto una directory ‘discourse’.
In assenza di un backup attuale (sufficientemente recente), creerei un nuovo server utilizzando una versione più recente di Ubuntu (e quindi di Docker) e quindi copierei tutte le directory sotto gli alberi di discourse su di esso, inclusi tutti i file postgres. (Non ho ancora dovuto farlo su un server discourse, ma amministro database postgres da 20 anni e se i file del database sono intatti ciò aiuta a ricreare/ricostruire le cose.)
È passato un po’ di tempo dall’ultimo aggiornamento di questo sistema? Se la risposta a questa domanda è ‘sì’, potrebbero esserci complicazioni nel tentativo di copiare i file esistenti sotto le directory di discourse su un nuovo server, perché non è davvero il modo giusto per farlo; un backup di discourse contiene molto più dei soli file del database PostgreSQL. (Questo è il motivo per cui cerco di fare un backup anche prima di un piccolo aggiornamento, anche se ammetto di non farlo sempre.)
Il tuo ultimo backup di discourse si trova probabilmente in una directory simile a questa:
/var/discourse/shared/standalone/backups/default
Ciao Mike, grazie per le tue risposte, lo apprezzo molto.
L’aggiornamento è fallito e a un certo punto il rinnovo automatico di SSL si è interrotto, quindi mentre cercavo di fare tutto questo, mi sono ritrovato in questo scenario.
Ci provo, sto cercando di ricostruire l’app ma mi ritrovo con spazio insufficiente, ho 15 GB occupati da discourse per qualche motivo.
Oltre a ricostruire, c’è un modo per avviare discourse con un comando di avvio?
Grazie ancora.
Probabilmente hai più immagini container in giro.
Eseguendo ‘docker images’ le elencherà. Sul mio sistema di produzione, ad esempio, elenca 7 immagini ciascuna di circa 3,5 GB, quindi questo occupa un po’ di spazio, il mio sistema sandbox ne mostra oltre 20. Potresti eliminare alcune di quelle immagini per liberare un po’ di spazio, o copiarle su un server separato se hai spazio disponibile su di essi.
Presumo che ‘docker ps’ non mostri un container in esecuzione.
Hai provato ad avviare un container più vecchio per vedere se questo fa partire il sito? Quindi puoi fare un backup.
Launcher dovrebbe funzionare per questo, penso che serva in gran parte come interfaccia per i comandi docker, ma potrebbe anche svolgere altri compiti necessari per avviare discourse.
Ehi Mike, c’è solo 1 container lì dentro, stranamente. Sono riuscito a liberare spazio eliminando i log, ecc. Ma senza fortuna. C’è un altro problema che non riesco a trovare. Seguirò le tue altre istruzioni per vedere se riesco a farlo funzionare con metodi manuali, ad esempio copiando file e db su una versione successiva.
Quando eseguo docker run ottengo:
docker run discourse
Unable to find image 'discourse:latest' locally
docker: Error response from daemon: pull access denied for discourse, repository does not exist or may require 'docker login': denied: requested access to the resource is denied.
Cosa succede se provi il launcher?
./launcher start app
Restituisce quanto segue:
.....troncato
Impossibile trovare l'immagine 'local_discourse/app:latest' localmente
/usr/bin/docker: Risposta di errore dal daemon:
accesso negato per il pull di local_discourse/app,
il repository non esiste o potrebbe richiedere 'docker login': negato:
l'accesso richiesto alla risorsa è negato.
Cosa si ottiene da ‘docker images’?
Solo uno:
discourse/base 2.0.20230409-0052 08afe7103ce8
Riesco più o meno a riprodurre i messaggi di errore che stai ricevendo manipolando un’immagine più vecchia, ma finora non ho trovato un modo per forzare il caricamento di quell’immagine.
Non sono sicuro di cos’altro potrei suggerire in questo momento.
Ciao Mike, la tua soluzione contrassegnata in precedenza come soluzione ha in qualche modo risolto il problema. Ho copiato tutti i file su un nuovo VPS e ha funzionato dopo alcune modifiche.
Grazie a tutti per l’aiuto.
Sono contento che tu abbia trovato una soluzione, felice di aver aiutato. Assicurati di eseguire regolarmente dei backup. ![]()
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.