Este tutorial mostrará como usar o NodeBB Importer para migrar um fórum NodeBB para a plataforma Discourse. Se o seu fórum NodeBB utiliza MongoDB como backend, siga este tutorial. Não se preocupe, é um processo simples. Vamos começar.
O plano
- Preparar o ambiente de desenvolvimento.
- Exportar o banco de dados do ambiente de produção.
- Importar o banco de dados de produção para uma instância do Discourse.
- Executar o script de importação.
Quais dados podem ser migrados?
- Grupos
- Categorias
- Categoria Raiz => Categoria Raiz
- Subcategoria e Sub-Subcategoria => Subcategoria
- Anexos
- Tópicos e Postagens
- tópico fixado => tópico fixado
- visualizações de tópico
- todos os estilos serão migrados perfeitamente, incluindo menções, emojis e anexos.
- Usuários (com os seguintes atributos)
- avatares (foto de perfil)
- fundo do perfil
- status de banimento
- nome
- nome de usuário
- biografia
- administrador
- site
- localização
- status de data de entrada
- grupo
Preparando o Ambiente de Desenvolvimento Local
Configure seu ambiente de desenvolvimento seguindo um destes guias:
A partir de agora, chamarei este ambiente de servidor Discourse.
Por favor, utilize este guia se tiver algum problema ao configurar o Discourse.
Exportando o Dump do Banco de Dados de Produção (do Servidor NodeBB):
Desligue seu fórum. Isso é recomendado pelo NodeBB.
$ cd /path_to_nodebb
$ ./nodebb stop
Você também deve desligar o Redis:
$ sudo service redis-server stop
$ sudo service redis-server status
# redis-server is not running
Seu banco de dados do fórum está todo em um único arquivo. Este arquivo é gerado automaticamente periodicamente pelo Redis. Geralmente, ele está localizado em /var/lib/redis/dump.rdb. Além disso, você pode obter o caminho via CLI do Redis:
$ redis-cli
127.0.0.1:6379> config get dir
# "/var/lib/redis"
127.0.0.1:6379> exit
$ ls -la /var/lib/redis
# -rw-rw-r-- 1 redis redis 2664346 Aug 4 16:24 dump.rdb
Se seu servidor Redis exigir senha, use
AUTH SUA_SENHA.
Se, por algum motivo, você não encontrar seu arquivo de banco de dados no caminho esperado, você pode gerá-lo manualmente executando
SAVEdentro da CLI do Redis.
Agora, você precisa copiar os anexos do fórum:
$ cd /path_to_nodebb_root_folder/
$ tar -czf ./uploads.tar.gz ./public/uploads
Agora que você tem seu banco de dados e os ativos do fórum, você precisa copiá-los para o servidor Discourse.
Importando o Banco de Dados
Se você seguiu as instruções de instalação do Discourse, deve ter o servidor Redis instalado no servidor Discourse:
$ redis-server -v
# Redis server v=5.0.2...
Agora você precisa parar o servidor Redis (importante).
Baseado em Linux:
$ sudo service redis-server stop
$ sudo service redis-server status
# redis-server is not running
Mac OS:
$ brew services stop redis
$ brew services list
# redis stopped
O que você precisa fazer agora é copiar o banco de dados do fórum para o caminho local do banco de dados Redis. O importador precisa se conectar ao servidor Redis e migrar o banco de dados NodeBB para o banco de dados Discourse. Esta etapa assume que você não tenha nada importante no seu banco de dados Redis; caso contrário, você deve realizar um backup.
$ redis-cli
127.0.0.1:6379> config get dir
# "/var/lib/redis"
Verifique se há arquivos e anote o usuário atual e as permissões de dump.rdb:
$ ls -la /var/lib/redis
Copie o banco de dados NodeBB (substitua se já existir um):
$ cp dump.rdb /var/lib/redis
Mais tarde, ao tentar conectar ao servidor Redis, você pode receber o erro Fatal error loading the DB: Permission denied. Portanto, você deve alterar as permissões de dump.rdb:
# Substitua o usuário pelo mesmo que você anotou anteriormente.
$ sudo chown redis:redis /var/lib/redis/dump.rdb
$ sudo chmod 660 /var/lib/redis/dump.rdb
Agora você precisa descompactar o uploads.tar.gz para qualquer caminho de sua escolha:
$ tar xvzf uploads.tar.gz
Executando o Script de Importação
Agora que nosso banco de dados está no lugar, estamos prontos para executar nosso script de importação. Antes disso, precisamos editar algumas configurações. Provavelmente, você só precisa alterar as duas linhas a seguir.
Este é o caminho da pasta de uploads do seu NodeBB:
ATTACHMENT_DIR = '/caminho_absoluto/uploads'
Este é o nome do banco de dados no Redis. O padrão é 0:
db: 0
Execute o importador com um Discourse limpo:
$ cd ~/discourse
$ bundle exec rake db:drop db:create db:migrate
$ bundle exec ruby script/import_scripts/nodebb/nodebb.rb
O importador se conectará ao servidor Redis e migrará tudo para o banco de dados PostgreSQL do Discourse.
Após a conclusão da importação, inicie a plataforma Discourse:
$ bundle exec rails server
Inicie o Sidekiq para processar os dados migrados:
$ bundle exec sidekiq
Você pode monitorar o progresso em http://localhost:3000/sidekiq/queues.
Faça um backup do Discourse e carregue-o em seu servidor de produção do Discourse seguindo este tutorial.
Assim, você deve ter realizado com sucesso uma migração completa do NodeBB para o Discourse ![]()
Por favor, se tiver alguma dúvida, ficarei feliz em ajudar ![]()