Existem vários truques que podem ajudar ao configurar um servidor de staging.
O que é um servidor de staging?
Um servidor de staging é essencialmente uma cópia de um site de produção. Ele também reside em um servidor e funciona de forma idêntica. Ele é executado dentro de um contêiner Docker, assim como um site Discourse normal.
Ele existe para lhe dar um local para experimentar coisas arriscadas, ou para testar coisas que você não pode facilmente ocultar de seus usuários. É muito útil para testar anúncios usando o Discourse Advertising Plugin (Ads), ou se você quiser fazer algo divertido como uma importação ou fusão de fórum.
Isso contrasta com um servidor de desenvolvimento, que normalmente é executado em um local de fácil acesso (e isolado) para que um desenvolvedor possa mexer no código com segurança.
O que eu preciso?
-
Tudo o que você precisa para uma instalação padrão auto-hospedada
-
Se você configurou backups S3, sua vida será muito mais fácil
- caso contrário, você precisará de uma maneira de mover arquivos grandes para dentro e para fora de um servidor via SSH
Passos
Configure seu servidor como desejar
Normalmente em um servidor Ubuntu virtual hospedado no Digital Ocean, mas você pode usar o que lhe for mais confortável.
Instale o Discourse
Através deste guia (ou talvez via dashboard.literatecomputing.com). Recomendo usar credenciais de e-mail ‘junk’ (você não precisa ou quer que o e-mail funcione).
discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub
Confirme que sua instalação está funcionando:
Estabeleça uma conta de administrador (se necessário)
Configure uma conta de administrador a partir da linha de comando. Isso evita a necessidade de autenticação por e-mail.
./launcher enter app
rake admin:create
Isso não é estritamente necessário, exceto para testar a instalação, pois você pode restaurar a partir do backup pela linha de comando.
Edite app.yml e adicione alguns ajustes
-
Você pode gostar de fazer uma cópia do app.yml original (eu chamo o meu
app.vanilla.yml) para o qual você pode reverter se estragar as coisas -
Na parte inferior da seção
env, adicione estas linhas:## Configurações específicas do servidor de staging DISCOURSE_AUTOMATIC_BACKUPS_ENABLED: false DISCOURSE_LOGIN_REQUIRED: true DISCOURSE_DISABLE_EMAILS: 'yes' DISCOURSE_S3_DISABLE_CLEANUP: true DISCOURSE_ALLOW_RESTORE: true -
Se você tiver backups S3 (ou similar) configurados, adicione estes também (com suas configurações do site principal)
## Configuração S3 DISCOURSE_S3_ACCESS_KEY_ID: 'sua_chave' DISCOURSE_S3_SECRET_ACCESS_KEY: 'seu_segredo' DISCOURSE_BACKUP_LOCATION: 's3' DISCOURSE_S3_BACKUP_BUCKET: 'seu_local_de_backups' DISCOURSE_S3_REGION: 'sua_região_s3' DISCOURSE_S3_DISABLE_CLEANUP: truee se você também estiver fazendo uploads S3:
DISCOURSE_ENABLE_S3_UPLOADS: true DISCOURSE_S3_UPLOAD_BUCKET: 'seu_local_de_uploads' -
Você pode gostar de adicionar os mesmos plugins que você tem em seu site de produção enquanto está lá.
-
Faça uma reconstrução
./launcher rebuild app
Gerenciando o servidor de staging
Agora você tem um servidor de staging conectado aos seus backups S3 (mas não os substituirá), é fácil de restaurar e não pode enviar e-mails para ninguém em nenhuma circunstância. Perfeito!
Você pode restaurar um backup recente para o servidor de staging e começar. Se você não gostar do que tem, simplesmente restaure novamente.
Desligando ou ligando
Se você deixar seu servidor de staging ‘ligado’ por longos períodos, você corre o risco de ele ser indexado pelo Google e seus usuários acidentalmente fazerem login nele. Como suas credenciais são uma cópia do seu site de produção, isso é muito possível.
Uma maneira simples de mitigar essas duas coisas é simplesmente desligar o Discourse:
./launcher stop app
E ligá-lo novamente para que você possa usá-lo:
./launcher restart app
Atualizações
Você terá que garantir que atualiza/reconstrói tanto ele quanto seu site de produção ao mesmo tempo, se quiser garantir que as coisas permaneçam alinhadas do ponto de vista de plugins e código. O mesmo vale para as alterações em app.yml.
Se você não usar S3, terá que mover manualmente os backups entre os servidores. E eles são grandes!
Populando um Servidor de Teste
Se você quer um servidor de staging, então você deve populá-lo com seus dados reais do seu fórum real através de uma Restore. Às vezes, são seus dados específicos que estão causando o problema, e testar seu fórum com outro conjunto de dados pode lhe dar uma falsa sensação de segurança.
Se o que você quer é um servidor de teste para ver como é o Discourse, no entanto, você pode querer verificar as coisas com alguns dados falsos, e se o fizer, você pode fazer isso:
./launcher enter app
ALLOW_DEV_POPULATE=1 bundle install
ALLOW_DEV_POPULATE=1 rake dev:populate
Isso irá popular seu fórum com alguns dados falsos para que você possa ver como as coisas ficam com quaisquer temas e plugins que você desejar. Se você ainda não iniciou seu fórum, isso lhe dará uma ideia de como as coisas provavelmente ficarão.
Gerenciando a Autenticação de Dois Fatores
Embora o nome de usuário/senha da sua conta principal também funcione bem no site de staging, não é tão bom com 2FA. Se você tiver um problema, desative o 2FA:
./launcher enter app
rake users:disable_2fa[<USERNAME>]


