Restaurando o fórum em um novo servidor

Para os vários serviços de produção que executo (sites WordPress, etc.), gosto de manter um segundo site, um “espelho”, além do site de produção. Por exemplo, posso ter www.meudominio.com e também espelho.meudominio.com. Este último é criado clonando o site de produção e, em seguida, desativando alguns processos que não precisam ser executados.

Gostaria de fazer o mesmo com meu fórum. Pelo que entendi, a função de restauração é “tudo em um”: restaura não apenas os dados (tópicos, etc.), mas também toda a configuração. Isso me deixa com dois problemas que gostaria de entender melhor.

  1. Uso SSO do WordPress. Após a conclusão da restauração, quero que o site Discourse em espelho-fórum.meudominio.com aponte para espelho.meudominio.com como fonte de login. Como modificaria o site do fórum espelhado (o que é um dilema, pois, após a restauração e o login, o site espelhado provavelmente apontaria para o site de produção)?

  2. Quero ter 100% de certeza de que nenhum e-mail será enviado pelo site do fórum espelhado. Novamente, se eu restaurar no site do fórum espelhado, assumo que todas as tarefas agendadas do site de produção (envio de e-mails de resumo aos usuários, etc.) serão agendadas, certo? Como posso evitar isso? Existe um local central para desativar TODOS os e-mails daquele servidor?

Como posso abordar isso?

Obrigado.

Dê uma olhada em Syncing Production to Staging

especialmente Isso parece uma boa abordagem

Aqui está um script que usamos para manter um site de staging espelhado no site de produção.

#!/bin/bash
echo "cd /var/www/discourse"
cd /var/www/discourse

echo "/usr/local/bin/rake site_settings:export > /var/www/discourse/settings.yml"
/usr/local/bin/rake site_settings:export >  /var/www/discourse/settings.yml

echo "cd /var/www/discourse/public/backups/default"
cd /var/www/discourse/public/backups/default

echo "/usr/local/bin/discourse restore " $(ls -r | head -1)
/usr/local/bin/discourse restore $(ls -r | head -1)

echo "cd /var/www/discourse"
cd /var/www/discourse

echo "/usr/local/bin/rake site_settings:import <  /var/www/discourse/settings.yml"
/usr/local/bin/rake site_settings:import <  /var/www/discourse/settings.yml

Ele é chamado a partir do Docker.

Exemplo de chamada de um script de fora da instância do Discourse:

echo 'cd /var/www/discourse; RUBY_ENV=production rails r /var/www/discourse/script/import_scripts/wordpress-with-sabai-export.rb /var/www/discourse/script/import_scripts/wordpress-discourse-id-map.json' | docker exec -i $(docker ps | grep app | awk '{print $1}') /bin/bash

Defina a configuração “desativar e-mail” do site espelhado como “sim”

https://{fully-qualiified-domain-name}/admin/site_settings/category/email?filter=disable%20email

Sim, desative os e-mails nas configurações do seu site. Ou você pode configurar os e-mails apenas para a equipe, o que às vezes é útil.

Ótimo trabalho, pessoal. Isso parece me dar tudo o que preciso. Obrigado.