Impossível construir o container de importação phpBB no Discourse novíssimo

Tenho um discourse novíssimo instalado. Tudo funciona. Consigo criar a conta inicial, receber e-mails, fazer login, etc.

Preciso importar um fórum phpbb3. Pretendo usar a utilidade de importação para popular meu Discourse com dados históricos, então segui as instruções em Migrate a phpBB3 forum to Discourse

Executei o comando de cópia

cp containers/app.yml containers/import.yml

e editei o arquivo para adicionar a linha do template. Meu site usa LetsEncrypt para o certificado TLS, então as linhas de template SSL e LetsEncrypt estão descomentadas - isso é um pouco diferente do exemplo mostrado nas instruções. De qualquer forma, tentei isso com as linhas comentadas e descomentadas, então não acho que essas linhas sejam um fator.

Continuei com as instruções restantes, finalmente executando o comando de reconstrução do container. O comando não é concluído com sucesso.

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

Não tenho certeza de como resolver este problema. Instalei várias vezes em vários locais. Pelo que li, parece que esta etapa de reconstrução (que não é a importação real dos dados) deve simplesmente funcionar. Isso pode ser um problema com a versão mais recente do Discourse? Consegui executar a importação com sucesso do início ao fim vários meses atrás como um teste.

Sim.

Você precisará compartilhar ou entender mais da saída.

1 curtida

Para criar um ponto de partida comum, reinstalei meu VPS (Ubuntu 22.04), executei apt update && apt upgrade e, em seguida, iniciei o processo de instalação padrão do Discourse.

Caso esta informação seja relevante, cometi um erro ao digitar as informações durante o primeiro ./discourse-setup, então emiti control-C e executei ./discourse-setup novamente. A segunda execução de ./discourse-setup puxa um novo discourse/base, como mostrado…

root@discourse:/var/discourse# ./discourse-setup 
O arquivo de configuração containers/app.yml já existe!

. . . reconfigurando . . .


Salvando o arquivo antigo como app.yml.2024-07-29-151604.bak
Parando o contêiner existente em 5 segundos ou Control-C para cancelar.
Arquitetura x86_64 detectada.

AVISO: Vamos começar a baixar a imagem base do Discourse
Este processo pode levar de alguns minutos a uma hora, dependendo da sua velocidade de rede
Por favor, seja paciente

2.0.20240708-0023: Puxando de discourse/base
76956b537f14: Puxado com sucesso 
c5ffad89ad3c: Puxado com sucesso 
71c31a50a587: Puxado com sucesso 
c1a1234dcb61: Puxado com sucesso 
9980a27afc32: Puxado com sucesso 
4f4fb700ef54: Puxado com sucesso 
304b565c70c9: Puxado com sucesso 
8ad811162d08: Puxado com sucesso 
2c324dce526d: Puxado com sucesso 
52d141c2b1c8: Puxado com sucesso 
4c08fdcd145a: Puxado com sucesso 
1b6035ac25c0: Puxado com sucesso 
9208d0f90623: Puxado com sucesso 
513dccf6f63f: Puxado com sucesso 
e0b141854963: Puxado com sucesso 
4476d7dd9441: Puxado com sucesso 
0fad77941078: Puxado com sucesso 
46c34476ea19: Puxado com sucesso 
ff0b86516349: Puxado com sucesso 
c33170d09c8b: Puxado com sucesso 
ed4a793ffe51: Puxado com sucesso 
3a7b2554e089: Puxado com sucesso 
3ad8a6408839: Puxado com sucesso 
e7c58bcc7f57: Puxado com sucesso 
59b2407fe431: Puxado com sucesso 
315160f4d4f8: Puxado com sucesso 
ad328ba96976: Puxado com sucesso 
825dca2e642e: Puxado com sucesso 
9fbd8c908047: Puxado com sucesso 
b1d30330e969: Puxado com sucesso 
8c76c65bb8e8: Puxado com sucesso 
9279965667b5: Puxado com sucesso 
a0ae3eb4d088: Puxado com sucesso 
819fb509ef8b: Puxado com sucesso 
c962935d47d4: Puxado com sucesso 
63b444b5bd1e: Puxado com sucesso 
7efa1c09faf6: Puxado com sucesso 
46c4327ce462: Puxado com sucesso 
b095ebe7bdf6: Puxado com sucesso 
3aa16a533cab: Puxado com sucesso 
41419e4f1948: Puxado com sucesso 
589837814d9a: Puxado com sucesso 
bd025ad1b844: Puxado com sucesso 
24762ff7528f: Puxado com sucesso 
fe364253c657: Puxado com sucesso 
Digest: sha256:025e9c1f6848c4726544c6ae873d710c62f547b72afb7f537aaa44eb5377cb5c
Status: Imagem mais recente baixada para discourse/base:2.0.20240708-0023
docker.io/discourse/base:2.0.20240708-0023
o app não foi iniciado!
./discourse-doctor pode ajudar a diagnosticar o problema.

Encontrados 3GB de memória e 2 núcleos de CPU físicos
definindo db_shared_buffers = 768MB
definindo UNICORN_WORKERS = 4
parâmetros de memória de containers/app.yml atualizados.

A instalação do Discourse continuou e foi concluída. Consegui criar a conta inicial e fazer o login.

I, [2024-07-29T15:42:21.624379 #1]  INFO -- : Substituindo localização @discourse { por localização @discourse {
add_header Strict-Transport-Security 'max-age=31536000'; # lembre-se do certificado por um ano e conecte-se automaticamente ao HTTPS para este domínio em /etc/nginx/conf.d/discourse.conf
I, [2024-07-29T15:42:21.627858 #1]  INFO -- : > echo "Início dos comandos personalizados"
I, [2024-07-29T15:42:21.634022 #1]  INFO -- : Início dos comandos personalizados

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

I, [2024-07-29T15:42:21.648034 #1]  INFO -- : Terminando processos assíncronos
I, [2024-07-29T15:42:21.649479 #1]  INFO -- : Enviando INT para 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:  solicitação de desligamento rápido recebida
I, [2024-07-29T15:42:21.652067 #1]  INFO -- : Enviando TERM para exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid: 120
120:signal-handler (1722267741) SIGTERM recebido, agendando desligamento...
2024-07-29 15:42:21.658 UTC [57] LOG:  abortando quaisquer transações ativas
120:M 29 Jul 2024 15:42:21.667 # Usuário solicitou desligamento...
120:M 29 Jul 2024 15:42:21.668 * Salvando o snapshot final do RDB antes de sair.
2024-07-29 15:42:21.682 UTC [57] LOG:  trabalhador em segundo plano "logical replication launcher" (PID 72) saiu com código de saída 1
120:M 29 Jul 2024 15:42:21.682 * DB salvo em disco
120:M 29 Jul 2024 15:42:21.683 # Redis está pronto para sair, até mais...
2024-07-29 15:42:21.685 UTC [67] LOG:  desligando
2024-07-29 15:42:21.806 UTC [57] LOG:  sistema de banco de dados está desligado
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# 

Em seguida, iniciei o processo descrito em Migrate a phpBB3 forum to Discourse.

Aqui está o início do meu arquivo import.yml

root@discourse:/var/discourse# head -23 containers/import.yml 
## este é o template do contêiner Docker Discourse tudo-em-um, standalone
##
## Após fazer alterações neste arquivo, você DEVE reconstruir
## /var/discourse/launcher rebuild app
##
## TENHA MUITO CUIDADO AO EDITAR!
## ARQUIVOS YAML SÃO SUPER SUPER SENSÍVEIS A ERROS DE ESPAÇAMENTO OU ALINHAMENTO!
## visite http://www.yamllint.com/ para validar este arquivo conforme necessário

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  ## Descomente a próxima linha para habilitar o listener IPv6
  #- "templates/web.ipv6.template.yml"
  - "templates/web.ratelimited.template.yml"
  ## Descomente estas duas linhas se desejar adicionar Lets Encrypt (https)
  - "templates/web.ssl.template.yml"
  - "templates/web.letsencrypt.ssl.template.yml"
  - "templates/import/phpbb3.template.yml"

## quais portas TCP/IP este contêiner deve expor?
## Se você quiser que o Discourse compartilhe uma porta com outro servidor web como Apache ou nginx,
root@discourse:/var/discourse# 

O problema ocorre ao executar o comando */var/discourse/launcher rebuild import*. Devido ao comprimento, não é possível postar o log desse comando. No entanto, você pode baixá-lo deste link do NextCloud…

@gerhard, isso ainda pode ser do seu domínio.

Acho que o problema é que o template do phpbb3 remove /etc/service/unicorn e então o template da web tenta alterar esse arquivo.
A coisa mais fácil pode ser excluir essas linhas de web.template.yml

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

Mas você vai querer fazer isso depois de construir o container original e então fazer algo como

git checkout templates/web.template.yml

antes de fazer outra reconstrução.

1 curtida

Obrigado por essas instruções, @pfaffman.

Infelizmente, deixei a reconstrução em execução e retornei a uma sessão SSH desconectada, então não capturei toda a saída da compilação. A reconstrução criou uma imagem docker e iniciou o contêiner, então fiquei razoavelmente satisfeito que ela terminou normalmente.

Coloquei meus dados phpbb3 nos locais corretos para uma importação local e emiti o comando para começar. A importação está em andamento agora, mas levará algum tempo para terminar. Responderei amanhã com um resultado.

1 curtida

A importação foi concluída e parece ter migrado a maior parte dos dados. Algumas contas de usuário do phpBB aparentemente têm contas de e-mail que incomodam o Discourse. Acho que pode ser um espaço em branco no final. Vou tentar limpar antes de executar o procedimento inteiro novamente.

Obrigado pela ajuda. Presumo que haverá uma correção para a utilidade de importação, que, de outra forma, falhará na compilação para a versão atual do Discourse. Suspeito que muitas pessoas não terão as habilidades técnicas para investigar o problema e simplesmente desistirão ao encontrar o erro. Isso resultaria em menos comunidades Discourse e discussões históricas perdidas em sites phpBB abandonados ou excluídos.

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