Impossibile costruire il contenitore di importazione phpBB su Discourse appena installato

Ho installato un discourse nuovo di zecca. Tutto funziona. Posso creare l’account iniziale, ricevere email, accedere, ecc.

Devo importare un forum phpbb3. Intendo utilizzare l’utility di importazione per popolare il mio Discourse con dati storici, quindi ho seguito le istruzioni in Migrate a phpBB3 forum to Discourse

Ho eseguito il comando di copia

cp containers/app.yml containers/import.yml

e ho modificato il file per aggiungere la riga del template. Il mio sito utilizza LetsEncrypt per il certificato TLS, quindi le righe dei template SSL e LetsEncrypt sono decommentate - questo è un po’ diverso dall’esempio mostrato nelle istruzioni. Comunque, ho provato questo con righe commentate e decommentate, quindi non penso che quelle righe siano un fattore.

Ho continuato con le restanti istruzioni, eseguendo infine il comando di rebuild del container. Il comando non viene completato con successo.

94:M 23 Jul 2024 20:14:40.761 * Saving the final RDB snapshot before exiting.
94:M 23 Jul 2024 20:14:40.855 * DB saved on disk
94:M 23 Jul 2024 20:14:40.857 # Redis is now ready to exit, bye bye...
2024-07-23 20:14:41.235 UTC [32] LOG: database system is shut down


FAILED
--------------------
Errno::ENOENT: No such file or directory @ rb_sysopen - /etc/service/unicorn/run
Location of failure: /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups/replace_command.rb:11:in `read'
replace failed with the params {"tag"=>"precompile", "filename"=>"/etc/service/unicorn/run", "from"=>"PRECOMPILE_ON_BOOT=1", "to"=>"PRECOMPILE_ON_BOOT=0"}
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.
6f1a0b5cd0cfc8ed542938b7439aeff0a21a0135c58617fa5a05e68fd6fcc70d

Non sono sicuro di come affrontare questo problema. Ho installato più volte in più posti. Da quello che ho letto, sembra che questo passaggio di rebuild (che non è l’effettiva importazione dei dati) dovrebbe semplicemente funzionare. È possibile che sia un problema con l’ultima versione di Discourse? Ho eseguito l’importazione con successo dall’inizio alla fine diversi mesi fa come test.

Sì.

Dovrai condividere o comprendere una maggiore parte dell’output.

1 Mi Piace

Per creare un punto di partenza comune, ho reinstallato il mio VPS (Ubuntu 22.04), eseguito apt update && apt upgrade, quindi ho iniziato il processo di installazione standard di Discourse.

Nel caso queste informazioni fossero rilevanti, ho commesso un errore durante l’inserimento delle informazioni durante il primo ./discourse-setup, quindi ho premuto control-C e poi ho rieseguito ./discourse-setup. La seconda esecuzione di ./discourse-setup scarica una nuova immagine base di Discourse come mostrato…

root@discourse:/var/discourse# ./discourse-setup 
Il file di configurazione containers/app.yml esiste già!

. . . riconfigurazione . . .


Salvataggio del vecchio file come app.yml.2024-07-29-151604.bak
Arresto del container esistente tra 5 secondi o Control-C per annullare.
Rilevata architettura x86_64.

ATTENZIONE: Stiamo per iniziare a scaricare l'immagine base di Discourse
Questo processo potrebbe richiedere da pochi minuti a un'ora, a seconda della velocità della tua rete
Si prega di essere pazienti

2.0.20240708-0023: Pulling from discourse/base
76956b537f14: Pull complete 
c5ffad89ad3c: Pull complete 
71c31a50a587: Pull complete 
c1a1234dcb61: Pull complete 
9980a27afc32: Pull complete 
4f4fb700ef54: Pull complete 
304b565c70c9: Pull complete 
8ad811162d08: Pull complete 
2c324dce526d: Pull complete 
52d141c2b1c8: Pull complete 
4c08fdcd145a: Pull complete 
1b6035ac25c0: Pull complete 
9208d0f90623: Pull complete 
513dccf6f63f: Pull complete 
e0b141854963: Pull complete 
4476d7dd9441: Pull complete 
0fad77941078: Pull complete 
46c34476ea19: Pull complete 
ff0b86516349: Pull complete 
c33170d09c8b: Pull complete 
ed4a793ffe51: Pull complete 
3a7b2554e089: Pull complete 
3ad8a6408839: Pull complete 
e7c58bcc7f57: Pull complete 
59b2407fe431: Pull complete 
315160f4d4f8: Pull complete 
ad328ba96976: Pull complete 
825dca2e642e: Pull complete 
9fbd8c908047: Pull complete 
b1d30330e969: Pull complete 
8c76c65bb8e8: Pull complete 
9279965667b5: Pull complete 
a0ae3eb4d088: Pull complete 
819fb509ef8b: Pull complete 
c962935d47d4: Pull complete 
63b444b5bd1e: Pull complete 
7efa1c09faf6: Pull complete 
46c4327ce462: Pull complete 
b095ebe7bdf6: Pull complete 
3aa16a533cab: Pull complete 
41419e4f1948: Pull complete 
589837814d9a: Pull complete 
bd025ad1b844: Pull complete 
24762ff7528f: Pull complete 
fe364253c657: Pull complete 
Digest: sha256:025e9c1f6848c4726544c6ae873d710c62f547b72afb7f537aaa44eb5377cb5c
Status: Downloaded newer image for discourse/base:2.0.20240708-0023
docker.io/discourse/base:2.0.20240708-0023
l'app non è stata avviata!
./discourse-doctor può aiutare a diagnosticare il problema.

Trovati 3 GB di memoria e 2 core CPU fisici
impostazione db_shared_buffers = 768MB
impostazione UNICORN_WORKERS = 4
parametri di memoria di containers/app.yml aggiornati.

L’installazione di Discourse è proseguita e si è completata. Sono stato in grado di creare l’account iniziale ed effettuare il login.

I, [2024-07-29T15:42:21.624379 #1]  INFO -- : Replacing location @discourse { with location @discourse {
add_header Strict-Transport-Security 'max-age=31536000'; # ricorda il certificato per un anno e connettiti automaticamente a HTTPS per questo dominio in /etc/nginx/conf.d/discourse.conf
I, [2024-07-29T15:42:21.627858 #1]  INFO -- : > echo "Beginning of custom commands"
I, [2024-07-29T15:42:21.634022 #1]  INFO -- : Beginning of custom commands

I, [2024-07-29T15:42:21.637436 #1]  INFO -- : > echo "End of custom commands"
I, [2024-07-29T15:42:21.642766 #1]  INFO -- : End of custom commands

I, [2024-07-29T15:42:21.648034 #1]  INFO -- : Terminating async processes
I, [2024-07-29T15:42:21.649479 #1]  INFO -- : Sending INT to HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/13/bin/postmaster -D /etc/postgresql/13/main pid: 57
2024-07-29 15:42:21.651 UTC [57] LOG:  received fast shutdown request
I, [2024-07-29T15:42:21.652067 #1]  INFO -- : Sending TERM to exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid: 120
120:signal-handler (1722267741) Received SIGTERM scheduling shutdown...
2024-07-29 15:42:21.658 UTC [57] LOG:  aborting any active transactions
120:M 29 Jul 2024 15:42:21.667 # User requested shutdown...
120:M 29 Jul 2024 15:42:21.668 * Saving the final RDB snapshot before exiting.
2024-07-29 15:42:21.682 UTC [57] LOG:  background worker "logical replication launcher" (PID 72) exited with exit code 1
120:M 29 Jul 2024 15:42:21.682 * DB saved on disk
120:M 29 Jul 2024 15:42:21.683 # Redis is now ready to exit, bye bye...
2024-07-29 15:42:21.685 UTC [67] LOG:  shutting down
2024-07-29 15:42:21.806 UTC [57] LOG:  database system is shut down
sha256:6a6d6a8ea3559ad031a84fd48a164686e9440d7e857cb39619c2baba84a4b966
2b8eddd7b72415507d10cc404c40459c19c7ad3e025cb7bb69bcddb3c98b0197

+ /usr/bin/docker run --shm-size=512m -d --restart=always -e LANG=en_US.UTF-8 -e RAILS_ENV=production -e UNICORN_WORKERS=4 -e UNICORN_SIDEKIQS=1 -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 LC_ALL=en_US.UTF-8 -e LANGUAGE=en_US.UTF-8 -e DISCOURSE_HOSTNAME=discourse3.greenbullfrog.com -e DISCOURSE_DEVELOPER_EMAILS=discourse-admin@greenbullfrog.com -e DISCOURSE_SMTP_ADDRESS=box.greenbullfrog.com -e DISCOURSE_SMTP_PORT=587 -e DISCOURSE_SMTP_USER_NAME=discourse@greenbullfrog.com -e DISCOURSE_SMTP_PASSWORD=lAtDyjbyqztzhrG -e DISCOURSE_SMTP_DOMAIN=discourse3.greenbullfrog.com -e DISCOURSE_NOTIFICATION_EMAIL=noreply@discourse3.greenbullfrog.com -e LETSENCRYPT_ACCOUNT_EMAIL=letsencrypt@greenbullfrog.com -h discourse-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:f9:8c:dd:3d:63 local_discourse/app /sbin/boot
a78541042858ed6a4dd739bb7c8243a50a4064f595fdf968c22c8b63afb68979
root@discourse:/var/discourse# 

Successivamente, ho iniziato il processo descritto su Migrate a phpBB3 forum to Discourse.

Ecco l’inizio del mio file import.yml

root@discourse:/var/discourse# head -23 containers/import.yml 
## questo è il template del container Docker Discourse all-in-one, standalone
##
## Dopo aver apportato modifiche a questo file, DEVI ricostruire
## /var/discourse/launcher rebuild app
##
## FAI MOLTA ATTENZIONE QUANDO MODIFICHI!
## I FILE YAML SONO SUPER SUPER SENSIBILI A ERRORI DI SPAZIATURA O ALLINEAMENTO!
## visita http://www.yamllint.com/ per validare questo file se necessario

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  ## Decommenta la riga seguente per abilitare il listener IPv6
  #- "templates/web.ipv6.template.yml"
  - "templates/web.ratelimited.template.yml"
  ## Decommenta queste due righe se desideri aggiungere Lets Encrypt (https)
  - "templates/web.ssl.template.yml"
  - "templates/web.letsencrypt.ssl.template.yml"
  - "templates/import/phpbb3.template.yml"

## quali porte TCP/IP deve esporre questo container?
## Se vuoi che Discourse condivida una porta con un altro webserver come Apache o nginx,
root@discourse:/var/discourse# 

Il problema si verifica quando si esegue il comando */var/discourse/launcher rebuild import*. A causa della lunghezza, non è possibile pubblicare il log di quel comando. Tuttavia, puoi scaricarlo da questo link NextCloud…

@gerhard, questo potrebbe essere ancora nel tuo campo di competenza.

Penso che il problema sia che il template phpbb3 rimuove /etc/service/unicorn e poi il template web tenta di modificare quel file.
La cosa più semplice potrebbe essere eliminare queste righe da web.template.yml

  - replace:
      tag: precompile
      filename: /etc/service/unicorn/run
      from: PRECOMPILE_ON_BOOT=1
      to: "PRECOMPILE_ON_BOOT=0"

Ma vorrai farlo dopo aver creato il container originale e poi fare qualcosa come

git checkout templates/web.template.yml

prima di fare un’altra ricostruzione.

1 Mi Piace

Grazie per queste istruzioni, @pfaffman.

Sfortunatamente ho lasciato in esecuzione la ricompilazione e sono tornato a una sessione SSH disconnessa, quindi non ho catturato tutto l’output della compilazione. La ricompilazione ha creato un’immagine Docker e avviato il container, quindi ero ragionevolmente soddisfatto che fosse terminata normalmente.

Ho inserito i miei dati phpbb3 nelle posizioni corrette per un’importazione locale e ho emesso il comando per iniziare. L’importazione è in corso ma richiederà del tempo per finire. Risponderò domani con un risultato.

1 Mi Piace

L’importazione è stata completata e sembra aver migrato la maggior parte dei dati. Alcuni account utente phpbb hanno apparentemente account email che turbano Discourse. Penso che potrebbe essere uno spazio finale. Cerco di ripulire prima di rieseguire l’intera procedura.

Grazie per l’aiuto. Presumo che ci sarà una correzione per l’utility di importazione che altrimenti non riuscirà a compilare per la versione corrente di Discourse. Sospetto che molte persone non avranno le competenze tecniche per approfondire il problema e si arrenderanno semplicemente di fronte all’errore. Ciò comporterebbe un minor numero di community Discourse e discussioni storiche perse su siti phpbb abbandonati o cancellati.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.