No se puede construir el contenedor de importación phpBB en Discourse nuevo

He instalado un Discourse completamente nuevo. Todo funciona. Puedo crear la cuenta inicial, recibir correos electrónicos, iniciar sesión, etc.

Necesito importar un foro phpbb3. Tengo la intención de usar la utilidad de importación para poblar mi Discourse con datos históricos, así que seguí las instrucciones en Migrate a phpBB3 forum to Discourse

Ejecuté el comando de copia

cp containers/app.yml containers/import.yml

y edité el archivo para agregar la línea de plantilla. Mi sitio usa LetsEncrypt para el certificado TLS, por lo que las líneas de plantilla SSL y LetsEncrypt no están comentadas; esto es un poco diferente al ejemplo que se muestra en las instrucciones. De todos modos, he probado esto con líneas comentadas y no comentadas, así que no creo que esas líneas sean un factor.

Continué con las instrucciones restantes, finalmente ejecutando el comando de reconstrucción del contenedor. El comando no se completa con éxito.

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

No estoy seguro de cómo abordar este problema. He instalado varias veces en varios lugares. Por lo que he leído, parece que este paso de reconstrucción (que no es la importación real de datos) debería ejecutarse sin problemas. ¿Podría ser un problema con la versión más reciente de Discourse? Ejecuté la importación con éxito de principio a fin hace varios meses como prueba.

Sí.

Necesitarás compartir o entender más de la salida.

1 me gusta

Para crear un punto de partida común, reinstalé mi VPS (Ubuntu 22.04), ejecuté apt update && apt upgrade y luego comencé el proceso de instalación estándar de Discourse.

En caso de que esta información sea relevante, cometí un error al ingresar información durante el primer ./discourse-setup, por lo que emití control-C y luego volví a ejecutar ./discourse-setup. La segunda ejecución de ./discourse-setup descarga una nueva imagen base de Discourse, como se muestra…

root@discourse:/var/discourse# ./discourse-setup 
El archivo de configuración containers/app.yml ya existe!

. . . reconfigurando . . .


Guardando el archivo antiguo como app.yml.2024-07-29-151604.bak
Deteniendo el contenedor existente en 5 segundos o presiona Control-C para cancelar.
Se detectó la arquitectura x86_64.

ADVERTENCIA: Vamos a comenzar a descargar la imagen base de Discourse
Este proceso puede tardar entre unos minutos y una hora, dependiendo de la velocidad de su red
Por favor, sea paciente

2.0.20240708-0023: Descargando discourse/base
76956b537f14: Descarga completa 
c5ffad89ad3c: Descarga completa 
71c31a50a587: Descarga completa 
c1a1234dcb61: Descarga completa 
9980a27afc32: Descarga completa 
4f4fb700ef54: Descarga completa 
304b565c70c9: Descarga completa 
8ad811162d08: Descarga completa 
2c324dce526d: Descarga completa 
52d141c2b1c8: Descarga completa 
4c08fdcd145a: Descarga completa 
1b6035ac25c0: Descarga completa 
9208d0f90623: Descarga completa 
513dccf6f63f: Descarga completa 
e0b141854963: Descarga completa 
4476d7dd9441: Descarga completa 
0fad77941078: Descarga completa 
46c34476ea19: Descarga completa 
ff0b86516349: Descarga completa 
c33170d09c8b: Descarga completa 
ed4a793ffe51: Descarga completa 
3a7b2554e089: Descarga completa 
3ad8a6408839: Descarga completa 
e7c58bcc7f57: Descarga completa 
59b2407fe431: Descarga completa 
315160f4d4f8: Descarga completa 
ad328ba96976: Descarga completa 
825dca2e642e: Descarga completa 
9fbd8c908047: Descarga completa 
b1d30330e969: Descarga completa 
8c76c65bb8e8: Descarga completa 
9279965667b5: Descarga completa 
a0ae3eb4d088: Descarga completa 
819fb509ef8b: Descarga completa 
c962935d47d4: Descarga completa 
63b444b5bd1e: Descarga completa 
7efa1c09faf6: Descarga completa 
46c4327ce462: Descarga completa 
b095ebe7bdf6: Descarga completa 
3aa16a533cab: Descarga completa 
41419e4f1948: Descarga completa 
589837814d9a: Descarga completa 
bd025ad1b844: Descarga completa 
24762ff7528f: Descarga completa 
fe364253c657: Descarga completa 
Digest: sha256:025e9c1f6848c4726544c6ae873d710c62f547b72afb7f537aaa44eb5377cb5c
Estado: Imagen más reciente descargada para discourse/base:2.0.20240708-0023
docker.io/discourse/base:2.0.20240708-0023
¡La aplicación no se inició!
./discourse-doctor puede ayudar a diagnosticar el problema.

Se encontraron 3 GB de memoria y 2 núcleos de CPU físicos
configurando db_shared_buffers = 768MB
configurando UNICORN_WORKERS = 4
parámetros de memoria de containers/app.yml actualizados.

La instalación de Discourse continuó y se completó. Pude crear la cuenta inicial e iniciar sesión.

I, [2024-07-29T15:42:21.624379 #1]  INFO -- : Reemplazando ubicación @discourse { con ubicación @discourse {
add_header Strict-Transport-Security 'max-age=31536000'; # recordar el certificado por un año y conectarse automáticamente a HTTPS para este dominio en /etc/nginx/conf.d/discourse.conf
I, [2024-07-29T15:42:21.627858 #1]  INFO -- : > echo "Comienzo de comandos personalizados"
I, [2024-07-29T15:42:21.634022 #1]  INFO -- : Comienzo de comandos personalizados

I, [2024-07-29T15:42:21.637436 #1]  INFO -- : > echo "Fin de comandos personalizados"
I, [2024-07-29T15:42:21.642766 #1]  INFO -- : Fin de comandos personalizados

I, [2024-07-29T15:42:21.648034 #1]  INFO -- : Terminando procesos asíncronos
I, [2024-07-29T15:42:21.649479 #1]  INFO -- : Enviando INT a 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:  recibida solicitud de apagado rápido
I, [2024-07-29T15:42:21.652067 #1]  INFO -- : Enviando TERM a exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid: 120
120:signal-handler (1722267741) Recibiendo SIGTERM, programando apagado...
2024-07-29 15:42:21.658 UTC [57] LOG:  abortando transacciones activas
120:M 29 Jul 2024 15:42:21.667 # Solicitud de apagado del usuario...
120:M 29 Jul 2024 15:42:21.668 * Guardando la instantánea final de RDB antes de salir.
2024-07-29 15:42:21.682 UTC [57] LOG:  el proceso secundario "logical replication launcher" (PID 72) salió con código de salida 1
120:M 29 Jul 2024 15:42:21.682 * DB guardado en disco
120:M 29 Jul 2024 15:42:21.683 # Redis está ahora listo para salir, adiós...
2024-07-29 15:42:21.685 UTC [67] LOG:  apagando
2024-07-29 15:42:21.806 UTC [57] LOG:  el sistema de bases de datos está apagado
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# 

A continuación, comencé el proceso descrito en Migrate a phpBB3 forum to Discourse.

Aquí está la parte superior de mi archivo import.yml…

root@discourse:/var/discourse# head -23 containers/import.yml 
## esta es la plantilla del contenedor Docker de Discourse independiente todo en uno
##
## Después de realizar cambios en este archivo, DEBE reconstruir
## /var/discourse/launcher rebuild app
##
## ¡TENGA MUCHO CUIDADO AL EDITAR!
## ¡LOS ARCHIVOS YAML SON SÚPER SÚPER SENSIBLES A ERRORES DE ESPACIO O ALINEACIÓN!
## visite http://www.yamllint.com/ para validar este archivo según sea necesario


plantillas:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  ## Descomente la siguiente línea para habilitar el oyente IPv6
  #- "templates/web.ipv6.template.yml"
  - "templates/web.ratelimited.template.yml"
  ## Descomente estas dos líneas si desea agregar Lets Encrypt (https)
  - "templates/web.ssl.template.yml"
  - "templates/web.letsencrypt.ssl.template.yml"
  - "templates/import/phpbb3.template.yml"

## ¿qué puertos TCP/IP debe exponer este contenedor?
## Si desea que Discourse comparta un puerto con otro servidor web como Apache o nginx,
root@discourse:/var/discourse# 

El problema ocurre al ejecutar el comando */var/discourse/launcher rebuild import*. Debido a la longitud, no es posible publicar el registro de ese comando. Sin embargo, puede descargarlo desde este enlace de NextCloud…

@gerhard, esto todavía podría estar en tu área de especialización.

Creo que el problema es que la plantilla phpbb3 elimina /etc/service/unicorn y luego la plantilla web intenta cambiar ese archivo.
Lo más fácil podría ser eliminar estas líneas de web.template.yml

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

Pero querrás hacerlo después de construir el contenedor original y luego hacer algo como

git checkout templates/web.template.yml

antes de hacer otra reconstrucción.

1 me gusta

Gracias por esas instrucciones, @pfaffman.

Desafortunadamente, dejé la reconstrucción en ejecución y regresé a una sesión SSH desconectada, por lo que no capturé toda la salida de la compilación. La reconstrucción creó una imagen de docker y la inició, así que quedé razonablemente satisfecho de que había terminado normalmente.

Puse mis datos de phpbb3 en las ubicaciones correctas para una importación local y emití el comando para comenzar. La importación está en progreso ahora, pero tomará algún tiempo terminar. Responderé mañana con un resultado.

1 me gusta

La importación se completó y parece haber migrado la mayor parte de los datos. Algunas cuentas de usuario de phpbb aparentemente tienen cuentas de correo electrónico que molestan a Discourse. Creo que podría ser un espacio al final. Intento limpiar antes de volver a ejecutar todo el procedimiento.

Gracias por la ayuda. Supongo que habrá una solución para la utilidad de importación que, de lo contrario, no se compilará para la versión actual de Discourse. Sospecho que muchas personas no tendrán las habilidades técnicas para investigar el problema y simplemente se rendirán al encontrar el error. Eso resultaría en menos comunidades de Discourse y discusiones históricas perdidas en sitios phpbb abandonados o eliminados.

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