ERRORE: Stai eseguendo una vecchia versione dell'immagine Discourse

Ciao, questo è il mio primo argomento! Mi chiamo Nelly Eggsy e sto costruendo un sito web utilizzando Ghost e Discourse.

Di solito mi limito a leggere i forum e a scorrere gli argomenti nell’ombra. Se sono bloccata, cerco una risposta nei forum e di solito funziona. Tuttavia, in questo caso sono bloccata e ho bisogno di aiuto.

Dopo aver aggiornato Discourse tramite l’interfaccia di amministrazione, ricevo il seguente messaggio:

Stai eseguendo una versione vecchia dell’immagine di Discourse.
Gli aggiornamenti tramite l’interfaccia web sono disabilitati fino a quando non esegui l’immagine più recente.

Per farlo, accedi al tuo server tramite SSH ed esegui:

    cd /var/discourse
    git pull
    ./launcher rebuild app

Ho seguito la guida su come aggiornare Discourse e l’immagine Docker all’ultima versione utilizzando i comandi da console. Tuttavia, non sono riuscita ad aggiornare correttamente a causa di un errore.

Ecco il messaggio di errore che ottengo quando eseguo il comando ./launcher rebuild app.

> FAILED
> --------------------
> Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake themes:update assets:precompile' failed with return #<Process::Status: pid 671 exit 1>
> Location of failure: /pups/lib/pups/exec_command.rb:112:in `spawn'
> exec failed with the params {"cd"=>"$home", "hook"=>"assets_precompile", "cmd"=>["su discourse -c 'bundle exec rake themes:update assets:precompile'"]}
> 9c3a1b4a72818216aaafa5de742f7d1a325aa61497ea49f5b4f1660c6e503fd0
> ** 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.

Il mio droplet Digital Ocean ha 2 GB di memoria / 50 GB di disco + 50 GB / SFO2 - Discourse su Ubuntu 20.04.

Grazie per il tempo dedicato alla lettura del mio post! Non vedo l’ora di leggere il tuo messaggio.

Benvenuta, @nelly! Ci dispiace che tu stia avendo problemi! Questa è una grande inaspettata. MODIFICA: È un po’ inaspettato.

Hai qualche plugin o tema personalizzato?

Puoi cortesemente scorrere verso l’alto e incollare qui i messaggi di errore effettivi?

Grazie, @pfaffman! Apprezzo la tua risposta. Sì, ho alcuni temi e plugin personalizzati.

Ecco i plugin che ho:

      - git clone https://github.com/discourse/docker_manager.git
      - git clone https://github.com/paviliondev/discourse-custom-wizard.git
      - git clone https://github.com/discourse/discourse-spoiler-alert.git
      - git clone https://github.com/paviliondev/discourse-landing-pages.git
      - git clone https://github.com/discourse/discourse-patreon.git
      - git clone https://github.com/discourse/discourse-reactions.git

Non sono sicuro di come accedere/eliminare i temi personalizzati.

Rafael,

Ecco cosa vedo subito prima dell’errore “failed”:

rake aborted!
NameError: undefined local variable or method `name' for main:Object
/var/www/discourse/lib/tasks/assets.rake:251:in `rescue in block (2 levels) in <main>'
/var/www/discourse/lib/tasks/assets.rake:240:in `block (2 levels) in <main>'

Caused by:
OpenURI::HTTPError: 401 Error: Invalid license key
/var/www/discourse/lib/file_helper.rb:63:in `block in download'
/var/www/discourse/lib/final_destination.rb:422:in `block (3 levels) in safe_get'
/var/www/discourse/lib/final_destination.rb:421:in `catch'
/var/www/discourse/lib/final_destination.rb:421:in `block (2 levels) in safe_get'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rack-mini-profiler-2.3.2/lib/patches/net_patches.rb:19:in `block in request_with_mini_profiler'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rack-mini-profiler-2.3.2/lib/mini_profiler/profiling_methods.rb:46:in `step'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rack-mini-profiler-2.3.2/lib/patches/net_patches.rb:18:in `request_with_mini_profiler'
/var/www/discourse/lib/final_destination.rb:393:in `block in safe_get'
/var/www/discourse/lib/final_destination.rb:437:in `block in safe_session'
/var/www/discourse/lib/final_destination.rb:434:in `safe_session'
/var/www/discourse/lib/final_destination.rb:385:in `safe_get'
/var/www/discourse/lib/final_destination.rb:134:in `get'
/var/www/discourse/lib/file_helper.rb:55:in `download'
/var/www/discourse/lib/discourse_ip_info.rb:39:in `mmdb_download'
/var/www/discourse/lib/tasks/assets.rake:242:in `block (3 levels) in <main>'
/var/www/discourse/lib/tasks/assets.rake:241:in `each'
/var/www/discourse/lib/tasks/assets.rake:241:in `block (2 levels) in <main>'
Tasks: TOP => assets:precompile
(See full trace by running task with --trace)
I, [2021-05-02T20:17:42.823237 #1]  INFO -- : Downloading MaxMindDB...
Compressing Javascript and Generating Source Maps

Spero che questo possa aiutare. Grazie in anticipo!

Penso che dovrai scorrere un po’ più in alto. Quel messaggio sulla chiave di licenza è per MaxMind, e non credo sia quello il problema.

Jay,

Ecco l’output. Ne ho tagliato molto, così il forum mi permette di pubblicarlo.

2021-05-03 00:32:20.635 UTC [63] postgres@postgres ERROR:  database "discourse" already exists
2021-05-03 00:32:20.635 UTC [63] postgres@postgres STATEMENT:  CREATE DATABASE discourse;
createdb: error: database creation failed: ERROR:  database "discourse" already exists
I, [2021-05-03T00:32:20.639714 #1]  INFO -- : 
I, [2021-05-03T00:32:20.640335 #1]  INFO -- : > su postgres -c 'psql discourse -c "create user discourse;"' || true
2021-05-03 00:32:20.760 UTC [74] postgres@discourse ERROR:  role "discourse" already exists
2021-05-03 00:32:20.760 UTC [74] postgres@discourse STATEMENT:  create user discourse;
ERROR:  role "discourse" already exists

I, [2021-05-03T00:32:21.634456 #1]  INFO -- : File > /etc/service/redis/run  chmod: +x  chown: 
I, [2021-05-03T00:32:21.640838 #1]  INFO -- : File > /etc/service/redis/log/run  chmod: +x  chown: 
I, [2021-05-03T00:32:21.646998 #1]  INFO -- : File > /etc/runit/3.d/10-redis  chmod: +x  chown: 
I, [2021-05-03T00:32:21.648588 #1]  INFO -- : Sostituzione di "daemonize yes" con "" in /etc/redis/redis.conf
I, [2021-05-03T00:32:21.650175 #1]  INFO -- : Sostituzione di (?-mix:^pidfile.*$) con "" in /etc/redis/redis.conf
I, [2021-05-03T00:32:21.651303 #1]  INFO -- : > install -d -m 0755 -o redis -g redis /shared/redis_data
I, [2021-05-03T00:32:21.656597 #1]  INFO -- : 
I, [2021-05-03T00:32:21.657900 #1]  INFO -- : Sostituzione di (?-mix:^logfile.*$) con logfile "" in /etc/redis/redis.conf
I, [2021-05-03T00:32:21.659157 #1]  INFO -- : Sostituzione di (?-mix:^bind .*$) con "" in /etc/redis/redis.conf
I, [2021-05-03T00:32:21.660353 #1]  INFO -- : Sostituzione di (?-mix:^dir .*$) con dir /shared/redis_data in /etc/redis/redis.conf
I, [2021-05-03T00:32:21.661652 #1]  INFO -- : Sostituzione di (?-mix:^protected-mode yes) con protected-mode no in /etc/redis/redis.conf
I, [2021-05-03T00:32:21.662825 #1]  INFO -- : Sostituzione di # io-threads 4 con io-threads $redis_io_threads in /etc/redis/redis.conf
I, [2021-05-03T00:32:21.663908 #1]  INFO -- : > echo redis installed
I, [2021-05-03T00:32:21.668192 #1]  INFO -- : redis installed
I, [2021-05-03T00:32:21.669144 #1]  INFO -- : > cat /etc/redis/redis.conf | grep logfile
I, [2021-05-03T00:32:21.679111 #1]  INFO -- : logfile ""
I, [2021-05-03T00:32:21.680077 #1]  INFO -- : > exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf
I, [2021-05-03T00:32:21.683045 #1]  INFO -- : > sleep 10
167:C 03 May 2021 00:32:21.698 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
167:C 03 May 2021 00:32:21.698 # Redis version=6.2.1, bits=64, commit=00000000, modified=0, pid=167, just started
167:C 03 May 2021 00:32:21.699 # Configuration loaded
167:M 03 May 2021 00:32:21.700 * monotonic clock: POSIX clock_gettime
167:M 03 May 2021 00:32:21.702 * Running mode=standalone, port=6379.
167:M 03 May 2021 00:32:21.702 # Server initialized
167:M 03 May 2021 00:32:21.703 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
I, [2021-05-03T00:32:41.096190 #1]  INFO -- : > cd /var/www/discourse && bash -c "touch -a           /shared/log/rails/{production,production_errors,unicorn.stdout,unicorn.stderr,sidekiq}.log"
terser '/var/www/discourse/public/assets/_vendor-892d5a1f7dfb58e3f80950989c67133fd6062344153d17e67db8ba3d126c7a1a.js' -m -c -o '/var/www/discourse/public/assets/vendor-892d5a1f7dfb58e3f80950989c67133fd6062344153d17e67db8ba3d126c7a1a.js' --source-map "base='/var/www/discourse/public/assets',root='/assets',url='/assets/vendor-892d5a1f7dfb58e3f80950989c67133fd6062344153d17e67db8ba3d126c7a1a.js.map'"
****************************************************************************************************
#<Thread:0x000055a7feb17780 /var/www/discourse/lib/tasks/assets.rake:239 run> terminated with exception (report_on_exception is true):
/var/www/discourse/lib/tasks/assets.rake:251:in `rescue in block (2 levels) in <main>': undefined local variable or method `name' for main:Object (NameError)
	from /var/www/discourse/lib/tasks/assets.rake:240:in `block (2 levels) in <main>'
/var/www/discourse/lib/file_helper.rb:63:in `block in download': 401 Error: Invalid license key (OpenURI::HTTPError)

Spero ti sia utile!

Il tuo file app.yml contiene una riga per la chiave di licenza MaxMind? Prova a rimuoverla e a ricompilare.

Grazie! Sembra che abbia funzionato, in un certo senso. Quando visito la homepage del forum, vengo reindirizzato alla pagina “Congratulazioni, hai installato Discourse!”. Ecco le mie domande:

Devo reinstallare il forum? Il mio contenuto esistente rimarrà intatto o è stato tutto cancellato?

Sembra che tutto sia stato eliminato, ma è probabile che sia ancora lì. È stato questo il tuo primo aggiornamento dopo un po’ di tempo? Il tuo PostgreSQL è stato aggiornato? La mia ipotesi migliore è che qualcosa sia andato storto durante l’aggiornamento di PostgreSQL e che tu debba rinominare postgres_old e ricominciare da capo. Ci sono alcuni dettagli in Aggiornamento PostgreSQL 13.

Jay, mi è appena venuto in mente che avevo provato a spostare i caricamenti e i backup su DigitalOcean Block Storage. Pochi istanti fa ho riprovato a farlo e ho ricevuto il messaggio di errore “Oops” visitando la homepage:

Oops
Il software che alimenta questo forum di discussione ha incontrato un problema imprevisto. Ci scusiamo per l’inconveniente.

Le informazioni dettagliate sull’errore sono state registrate e è stata generata una notifica automatica. La esamineremo.

Non è necessaria alcuna ulteriore azione. Tuttavia, se l’errore persiste, puoi fornire ulteriori dettagli, inclusi i passaggi per riprodurre l’errore, pubblicando un argomento nella categoria feedback del sito.

Ecco i comandi che ho eseguito:

mv /var/discourse/shared/standalone/postgres_data /var/postgres_data_discourse
mv /var/discourse/shared /mnt/discourse-sfo2-01

In app.yml ho aggiunto quanto segue:

## Il contenitore Docker è senza stato; tutti i dati sono archiviati in /shared
volumes:
  - volume:
      host: /mnt/discourse-sfo2-01/shared/standalone
      guest: /shared
  - volume:
      host: /mnt/discourse-sfo2-01/shared/standalone/log/var-log
      guest: /var/log
  - volume:
      host: /var/postgres_data_discourse
      guest: /shared/postgres_data

Tutti i comandi sono stati eseguiti con ./launcher rebuild app senza problemi.

Mi scuso con tutti. Avevo dimenticato di aver fatto questo. Sono certo che sia probabilmente la causa dei problemi.

Anche per me ha funzionato dopo un fallimento della ricostruzione: qual è il problema qui? Grazie!