Migrare un forum PunBB a Discourse

In questo tutorial, impareremo come migrare un forum PunBB alla piattaforma :discourse: utilizzando lo script Importer ufficiale. Cominciamo :slight_smile:

Cosa può essere migrato

  • Argomenti e risposte => argomenti e post

  • Categorie e Forum

    • Categoria radice => categoria radice
    • Sottocategoria => sottocategoria
    • Forum radice => sottocategoria
    • Sottoforum => sottocategoria
  • Utenti

    • nome utente
    • nome
    • email
    • sito web
    • stato dei privilegi
    • localitĂ 
    • data di registrazione
    • stato amministrativo
    • stato di bannato

Il nostro piano è molto semplice, tutto ciò che serve:

  • Configurare l’ambiente di sviluppo (DEV ENV) locale.

  • Esportare il database di produzione.

  • Importare il database di produzione in Discourse.

  • Eseguire lo script di importazione PunBB.

Cominciamo :slightly_smiling_face:

Configurare l’ambiente di sviluppo (DEV ENV) locale

Per prima cosa, segui una delle seguenti guide per installare la piattaforma Discourse. Consulta questa guida se incontri problemi.

Installa il server di database MySQL;

MacOS:


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

Controlla lo stato del servizio eseguendo:

$ brew services list

Dovresti vedere qualcosa del genere:

mysql@5.7 started

Altrimenti, esegui il comando seguente e ricontrolla lo stato:

$ brew services start mysql@5.7

Ubuntu 18.04:

Esegui i seguenti comandi per installare il server MySQL:

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

Dopo aver completato l’installazione di MySQL, controlla il suo stato:

$ systemctl status mysql.service

Se non è in esecuzione, esegui il seguente comando:

$ sudo systemctl start mysql

Per Windows, puoi seguire la guida di installazione.

Ora, il nostro ambiente di sviluppo (DEV ENV) è pronto. Lo chiameremo: server Discourse.

Esportare il database di produzione

Esporta/effettua il backup del database di produzione (dal server di produzione PunBB) eseguendo:

$ mysqldump -u NOME_UTENTE -p NOME_DATABASE > punbb.sql
  • Copia questo dump del database sul server Discourse.

:bulb: Puoi usare scp o rsync per copiare il database.

Importare il database di produzione in Discourse

Sul server Discourse, crea un nuovo database vuoto. Per farlo, dobbiamo usare la riga di comando MySQL (CLI):

$ mysql -u root

Se il tuo utente del database ha una password, esegui il comando seguente e inserisci la password:

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

Assicurati che il database sia stato creato con successo eseguendo:

mysql> SHOW DATABASES;

Dovresti vedere qualcosa del genere:

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

Il nostro prossimo passo è importare il database di produzione in questo nuovo database vuoto.

$ mysql -u root punbb < punbb.sql

Eseguire lo script di importazione PunBB

Iniziamo installando le dipendenze dell’importatore. Dal server Discourse:

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

Successivamente, configura lo script per farlo funzionare correttamente. Apri script/import_scripts/punbb.rb con un editor a tua scelta e modifica. Fondamentalmente, tutto ciò che devi fare è fornire le informazioni del database MySQL:

PUNBB_DB = "NOME_DATABASE"
.
.
.
@client = Mysql2::Client.new(
  host: "localhost",
  username: "NOME_UTENTE_MYSQL",
  password: "PASSWORD_MYSQL",
  database: PUNBB_DB
)

Esegui l’importatore con un’istanza pulita di Discourse:

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

L’importatore si connetterà al database MySQL e migrerà il tuo forum PunBB nel database di Discourse.

Dopo che l’importatore ha terminato, avvia il server Discourse eseguendo:

$ bundle exec rails server

Successivamente, avvia il processore dei job in background per elaborare i dati migrati:

$ bundle exec sidekiq

:bulb: Puoi monitorare lo stato di avanzamento di sidekiq a questo URL: http://localhost:3000/sidekiq/queues.

Successivamente, prepara il tuo server di produzione Discourse seguendo questo tutorial.

Esegui un backup della piattaforma server Discourse locale e caricalo sul tuo server di produzione Discourse seguendo questo tutorial.

Se hai domande sul processo, sono felice di aiutarti.

Buona migrazione :grinning:

7 Mi Piace