Ajuda com conversão de SMF2 e Rake para S3

Procurei, mas não encontrei uma visão geral básica sobre como mover nossos uploads do DigitalOcean para o S3. Configurei com sucesso o S3 para novos uploads e backups há alguns meses. Gostaria de concluir a transferência dos nossos uploads (~1,4 GB) para o S3.

Isso foi uma migração do SMF2 desde o início. Agora temos duas pastas de upload: uma na raiz do SMF2 e outra em /var/discourse. O diretório SMF2 tem 2,8 GB. Imagino que possa haver duas etapas aqui? Preciso realizar etapas separadas para mover os arquivos do diretório SMF2 e do diretório /var/discourse?

Encontrei o comando rake to s3, mas não consegui encontrar um guia além de várias pessoas relatando erros que encontraram e sugestões para corrigi-los. Existe algum guia?

Por favor, leia este artigo; ele deve orientá-lo sobre como configurar a tarefa.

Você deve verificar a parte de configuração da seção hooks e configurar o bucket usando variáveis de ambiente para evitar os problemas que você já leu sobre.

2 curtidas

Isso é ótimo! Obrigado!

A única coisa lá sobre a qual não tenho conhecimento é um CDN. Vejo que podemos usar o Amazon Cloudfront. Estou imaginando que isso não foi configurado ao realizar as etapas anteriores de configuração do S3. Vou procurar um guia sobre como configurá-lo.

Você pode configurar o CloudFront usando seu bucket de uploads como origem e, assim que estiver pronto, configurá-lo como o link do CDN do S3. É só isso que precisa ser feito.

2 curtidas

Obrigado. Segui este vídeo para configurar o Cloudfront:

Estou executando o rake posts:rebake agora. São 84 mil posts, então vai levar algum tempo.

Ops… tentando iniciar novamente…

root@discourse-app:/var/www/discourse# rake posts:rebake
Recriando o markdown dos posts para ‘default’
10027 / 83358 ( 12.0%)/usr/local/bin/rake: linha 2: 959 Morto RAILS_ENV=production sudo -H -E -u discourse bundle exec bin/rake “$@”

Acabou de acontecer novamente… Alguma sugestão?

root@discourse-app:/var/www/discourse# rake posts:rebake
Rebaking post markdown for ‘default’
12901 / 83359 ( 15.5%)/usr/local/bin/rake: line 2: 2569 Killed RAILS_ENV=production sudo -H -E -u discourse bundle exec bin/rake “$@”

Alguns posts agora estão buscando conteúdo do Cloudfront, então pelo menos isso está meio que funcionando.

Parece que isso está acontecendo sem que eu tenha feito um rebake? O Sidekiq está trabalhando duro para baixar imagens com hotlink.

OK, o site foi recriado e as etapas de configuração do S3 foram seguidas.

Tudo deve estar sendo carregado do S3 agora. Então, como posso verificar isso? Posso excluir o diretório de uploads antigo no meu droplet agora para liberar espaço?

Claramente fiz algo errado. Estou usando mais espaço em disco agora do que usava antes.

O upload para o S3 deve ocorrer durante a reconstrução. Você deve conseguir navegar pelos ativos do site nos buckets do S3, e todos os ativos do site devem ser carregados a partir do link do S3 ou CDN fornecido. Se não estiver funcionando, definitivamente há algo errado com a forma como você configurou. Você está recebendo algum erro?

Suspeito que algo possa ter dado errado. Minha reconstrução não demorou o suficiente para que alguns GB de dados fossem enviados durante o processo.

EDIT:
Todas as uploads de vários meses atrás já estavam indo para o S3. O que quero mover são os dados legados anteriores à migração para o S3.

Tenha em mente que os servidores são ordens de grandeza mais rápidos do que sua conexão de banda larga. Não deve levar mais do que alguns minutos para eles fazerem o upload das imagens do seu host para o S3. No entanto, você deve examinar cuidadosamente o log de reconstrução para confirmar se os uploads ocorreram ou não.

Alternativamente, você pode executar ./discourse-doctor para gerar um log para revisão.

Aqui está a saída do script:

A única coisa que notei está em negrito na seção DNS.

> root@discourse:/var/discourse# ./discourse-doctor
> DISCOURSE DOCTOR Thu May 14 11:35:17 UTC 2020
> OS: Linux discourse 4.15.0-99-generic #100-Ubuntu SMP Wed Apr 22 20:32:56 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
> 
> 
> Arquivo containers/app.yml encontrado
> 
> ==================== CONFIGURAÇÕES YML ====================
> DISCOURSE_HOSTNAME=
> SMTP_ADDRESS=
> DEVELOPER_EMAILS=
> SMTP_PASSWORD=
> SMTP_PORT=
> SMTP_USER_NAME=
> LETSENCRYPT_ACCOUNT_EMAIL=
> 
> ==================== INFORMAÇÕES DO DOCKER ====================
> VERSÃO DO DOCKER: Docker version 18.09.6, build 481bc77
> 
> PROCESSOS DO DOCKER (docker ps -a)
> 
> CONTAINER ID        IMAGE                 COMMAND             CREATED             STATUS              PORTS                                      NAMES
> db900fc77ebe        local_discourse/app   "/sbin/boot"        15 hours ago        Up 15 hours         0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   app
> 
> db900fc77ebe        local_discourse/app   "/sbin/boot"        15 hours ago        Up 15 hours         0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   app
> 
> O contêiner Discourse app está em execução
> 
> 
> ==================== PLUGINS ====================
>             exec: {cd: $home/plugins, cmd: ['git clone https://github.com/discourse/docker_manager.git', 'git clone https://github.com/procourse/procourse-static-pages.git', 'git clone https://github.com/discourse/discourse-bbcode.git', 'git clone https://github.com/discourse/discourse-adplugin.git']}
> 
> Nenhum plugin não oficial detectado.
> 
> Veja https://github.com/discourse/discourse/blob/master/lib/plugin/metadata.rb para a lista oficial.
> 
> ========================================
> Versão do Discourse em : NÃO ENCONTRADA
> Versão do Discourse em localhost: Discourse 2.5.0.beta4
**> ==================== PROBLEMA DE DNS ====================**
**> Este servidor reporta Discourse 2.5.0.beta4, mas reporta NÃO ENCONTRADA.**
**> Isso sugere que você tem um problema de DNS ou que um proxy intermediário é o culpado.**
**> Se você está usando Cloudflare ou uma CDN, pode estar configurado incorretamente.**
> 
> 
> ==================== INFORMAÇÕES DE MEMÓRIA ====================
> RAM (MB): 1008
> 
>               total        used        free      shared  buff/cache   available
> Mem:            985         636          69         121         279          88
> Swap:          2047         775        1272
> 
> ==================== VERIFICAÇÃO DE ESPAÇO EM DISCO ====================
> ---------- Espaço em Disco do SO ----------
> Filesystem      Size  Used Avail Use% Mounted on
> /dev/vda1        25G   20G  4.8G  81% /
> 
> ---------- Espaço em Disco do Contêiner ----------
> Filesystem      Size  Used Avail Use% Mounted on
> overlay          25G   20G  4.8G  81% /
> /dev/vda1        25G   20G  4.8G  81% /shared
> /dev/vda1        25G   20G  4.8G  81% /var/log
> 
> ==================== INFORMAÇÕES DO DISCO ====================
> Disk /dev/vda: 25 GiB, 26843545600 bytes, 52428800 sectors
> Units: sectors of 1 * 512 = 512 bytes
> Sector size (logical/physical): 512 bytes / 512 bytes
> I/O size (minimum/optimal): 512 bytes / 512 bytes
> Disklabel type: gpt
> Disk identifier: 02CBFCD2-7495-4A08-A11B-28E7D3872FAA
> 
> Device      Start      End  Sectors  Size Type
> /dev/vda1  227328 52428766 52201439 24.9G Linux filesystem
> /dev/vda14   2048    10239     8192    4M BIOS boot
> /dev/vda15  10240   227327   217088  106M Microsoft basic data
> 
> As entradas da tabela de partições não estão na ordem do disco.
> 
> ==================== FIM DAS INFORMAÇÕES DO DISCO ====================
> 
> ==================== TESTE DE E-MAIL ====================
> Para um teste robusto, obtenha um endereço em http://www.mail-tester.com/
> Ou apenas envie uma mensagem de teste para você mesmo.
> Endereço de e-mail para o teste de e-mail? ('n' para pular) []: n
> Teste de e-mail pulado.
> Substituindo: SMTP_PASSWORD
> Substituindo: LETSENCRYPT_ACCOUNT_EMAIL
> Substituindo: DEVELOPER_EMAILS
> Substituindo: DISCOURSE_DB_PASSWORD
> Substituindo: Enviando e-mail para
> 
> ==================== CONCLUÍDO! ====================
> Gostaria de disponibilizar uma versão publicamente acessível deste arquivo? (Y/n)n
> root@discourse:/var/discourse#

Aqui está a seção do app.yml:

> 
>     DISCOURSE_USE_S3: true
>     DISCOURSE_S3_REGION: us-east-1
>     DISCOURSE_S3_ACCESS_KEY_ID: <MY KEY>
>     DISCOURSE_S3_SECRET_ACCESS_KEY: <MY SECRET KEY>
>     DISCOURSE_S3_CDN_URL: 'https://d2hneyr8lp58j4.cloudfront.net'
>     DISCOURSE_S3_BUCKET: brcuploads
>     DISCOURSE_S3_BACKUP_BUCKET: bcruploads-backups
>     DISCOURSE_BACKUP_LOCATION: s3

Isso está me dizendo que configurei o DNS no DigitalOcean errado? Adicionei o CNAME do Cloudfront.

Uau, isso não foi útil. Você escolheu n para

você pode gerar uma versão publicamente acessível? Você pode compartilhar o link por mensagem direta; talvez eu possa verificar se a migração para o S3 funcionou ou falhou por algum motivo.

Vou te mandar a URL por mensagem direta.

1 curtida