Atualizando Discourse muito antigo Obtém erro Ruby

Estou tentando atualizar uma instalação muito antiga.

Comecei com isto:

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

Então recebo uma falha e, ao rolar para cima no arquivo de log, o único erro é este:

ERROR: Erro ao instalar bundler:
bundler-2.5.3 requer a versão Ruby >= 3.0.0. A versão atual do ruby é 2.7.2.137.

Como faço para obter uma nova instalação do Ruby? O sistema foi originalmente instalado a partir de uma imagem docker no Digital Ocean e não foi atualizado muito, se é que foi, por vários anos.

Está rodando no Ubuntu 18.04

Executei ./discourse-doctor

E houve um estado de “detached head” e depois reconstrução e então o mesmo erro do Ruby.

Estou totalmente perdido agora.

Alguma ajuda sobre como fazer uma atualização funcionar a partir de uma versão antiga?

Sua imagem de contêiner pode estar fixada em uma imagem base do Discourse muito antiga.

Você pode postar sua configuração de contêiner (redigida) aqui?

Não sei como fazer isso, mas a partir da saída do Doutor do Discourse, encontrei isto:
VERSÃO DO DOCKER: Docker version 19.03.1, build 74b1e89

E foi criado há 3 anos.

1 curtida

Dada a idade da máquina host, sua melhor aposta aqui é provavelmente fazer um backup do site, criar um novo servidor, fazer a instalação e, em seguida, restaurar o backup no novo servidor.

Será menos trabalho (e muito mais fácil) do que atualizar o servidor existente.

2 curtidas

Mas como a instalação falhou, não consigo executar o Discourse para fazer um backup. Posso tirar um snapshot do droplet da DigitalOcean e já o fiz, mas isso não é realmente um backup, pelo que entendo.

Você deveria conseguir apenas executar ./launcher start app para reiniciar para o site antigo.

1 curtida

Tentei isso e agora estou recebendo o problema de gateway 502 :sigh:

1 curtida

Eu usaria rsync para copiar o /var/discourse antigo para o novo servidor. Ou talvez apenas containers e shared.

OK, estou tão fora da minha zona de conforto aqui que minha solução é postar um anúncio de “ajuda procurada” pago no Marketplace :grinning:

2 curtidas

Se você tiver um snapshot do droplet com todos os seus dados antes de tentar atualizar o contêiner, você poderá recuperar um backup dele.

Se não, você provavelmente ainda está bem, mas precisará de alguém experiente com o processo para conseguir extrair os dados dele se você não conseguir colocar o contêiner de volta em funcionamento.

No momento, mesmo com o bad gateway, se você conseguir acessar o contêiner, poderá executar um discourse backup e obter seus dados.

4 curtidas