Migrar um fórum PunBB para Discourse

Neste tutorial, aprenderemos como migrar um fórum PunBB para a plataforma :discourse: usando o script Importador oficial. Vamos começar :slight_smile:

O que pode ser migrado

  • Tópicos e respostas => tópicos e posts

  • Categorias e Fóruns

    • Categoria raiz => categoria raiz
    • Categoria filha => subcategoria
    • Fórum raiz => subcategoria
    • Fórum filho => subcategoria
  • Usuários

    • nome de usuário
    • nome
    • e-mail
    • site
    • status de privilégio
    • localização
    • data de inscrição
    • status de administração
    • status de banido

Nosso plano é muito simples, tudo o que precisamos:

  • Configurar o ambiente de desenvolvimento (DEV ENV) local.

  • Exportar o banco de dados de produção.

  • Importar o banco de dados de produção para o Discourse.

  • Executar o script importador do PunBB.

Vamos começar :slightly_smiling_face:

Configurar o Ambiente de Desenvolvimento (DEV ENV) Local

Primeiro de tudo, você precisa seguir um dos seguintes guias para instalar a plataforma Discourse. Consulte este guia se tiver algum problema.

Instale o servidor de banco de dados MySQL;

MacOS:


$ brew install mysql@5.7
$ echo 'export PATH="/usr/local/opt/mysql@5.7/bin:$PATH"' >> ~/.bash_profile
$ source ~/.bash_profile

Verifique o status do serviço executando:

$ brew services list

Você deve ver algo como:

mysql@5.7 started

Caso contrário, execute o seguinte e verifique novamente o status:

$ brew services start mysql@5.7

Ubuntu 18.04:

Execute o seguinte para instalar o servidor MySQL:

$ sudo apt update
$ sudo apt install mysql-server -y

Após concluir a instalação do MySQL, verifique seu status:

$ systemctl status mysql.service

Se não estiver em execução, execute o seguinte:

$ sudo systemctl start mysql

Para o Windows, você pode seguir o guia de instalação.

Agora, nosso ambiente de desenvolvimento (DEV ENV) está pronto. Vamos chamá-lo de: servidor Discourse.

Exportar o Banco de Dados de Produção

Exporte/respalde o banco de dados de produção (do servidor de produção PunBB) executando:

$ mysqldump -u USER_NAME -p DATABASE_NAME > punbb.sql
  • Copie esse dump do banco de dados para o servidor Discourse.

:bulb: Você pode usar scp ou rsync para copiar o banco de dados.

Importar o Banco de Dados de Produção para o Discourse

No servidor Discourse, crie um novo banco de dados vazio. Para isso, precisamos usar a CLI do MySQL:

$ mysql -u root

Se o usuário do seu banco de dados tiver uma senha, você deve executar o seguinte e digitar sua senha:

mysql -u root -p
mysql> CREATE DATABASE punbb;

Certifique-se de que o banco de dados foi criado com sucesso executando:

mysql> SHOW DATABASES;

Você deve ver algo como:

+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| punbb              |
+--------------------+

Nosso próximo passo é importar o banco de dados de produção para este novo banco de dados vazio.

$ mysql -u root punbb < punbb.sql

Executar o Script Importador do PunBB

Vamos primeiro instalar as dependências do importador. Do servidor Discourse:

$ cd ~/discourse
$ echo "gem 'mysql2', require: false" >> Gemfile
$ bundle install

Em seguida, você deve configurar o script para que ele funcione corretamente. Abra script/import_scripts/punbb.rb em qualquer editor de sua preferência e altere. Essencialmente, tudo o que você precisa fazer é fornecer as informações do banco de dados MySQL:

PUNBB_DB = "DATABASE_NAME"
.
.
.
@client = Mysql2::Client.new(
  host: "localhost",
  username: "MYSQL_USERNAME",
  password: "MYSQL_PASSWORD",
  database: PUNBB_DB
)

Execute o importador com uma instância limpa do Discourse:

$ bundle exec rails db:drop
$ bundle exec rails db:create
$ bundle exec rails db:migrate
$ bundle exec ruby script/import_scripts/punbb.rb

O importador se conectará ao banco de dados MySQL e migrará seu fórum PunBB para o banco de dados Discourse.

Após o importador finalizar, inicie o servidor Discourse executando:

$ bundle exec rails server

Em seguida, inicie o processador de jobs em segundo plano para processar os dados migrados:

$ bundle exec sidekiq

:bulb: Você pode monitorar o progresso do sidekiq neste URL: http://localhost:3000/sidekiq/queues.

Em seguida, prepare seu servidor de produção do Discourse seguindo este tutorial.

Faça um backup da plataforma local do Servidor Discourse e faça o upload para seu servidor de produção do Discourse seguindo este tutorial.

Se você tiver alguma dúvida sobre o processo, ficarei feliz em ajudar.

Boa migração :grinning:

7 curtidas