Ho creato uno script di migrazione per importare un database FluxBB in Discourse. Ora spiegherò come eseguire il processo di importazione in un tutorial passo dopo passo.
Ho testato questo script di migrazione con FluxBB v1.5.10 (che è la versione attuale).
Quali dati possono essere importati?
- Utenti (inclusi bio e firme)
- Gruppi
- Categorie
Le autorizzazioni non verranno importate e tutte le categorie saranno pubbliche. Le autorizzazioni corrette devono essere impostate manualmente dopo l’importazione. - Argomenti (incluso lo stato fissato/attaccato)
- Messaggi
- Utenti sospesi
Prima di iniziare la migrazione, configura un ambiente di sviluppo sulla tua macchina (o all’interno di una macchina virtuale). Consulta le guide di installazione per lo sviluppo su OS X o Ubuntu.
Discourse richiede Ruby 3.4+. Per verificare la versione di Ruby installata, esegui il comando seguente:
ruby -v
MySQL
Ora abbiamo bisogno del gem mysql2 per Ruby per connetterci al nostro vecchio database FluxBB. Esegui i comandi seguenti per installare la dipendenza libmysqlclient-dev e il gem mysql2.
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install libmysqlclient-dev
gem install mysql2
(opzionale) Importazione di un dump MySQL su localhost
Per installare il client MySQL e importare un file di dump MySQL (.sql) nella tua macchina di sviluppo, segui le istruzioni sottostanti:
sudo apt-get install mysql-server mysql-client
Crea l’utente MySQL, le autorizzazioni e il database:
mysql -u root -p mysql
mysql> CREATE USER 'fluxbb'@'localhost' IDENTIFIED BY 'fluxbb';
Query OK, 0 rows affected (0.00 sec)
.
mysql> CREATE DATABASE fluxbb;
Query OK, 1 row affected (0.01 sec)
.
mysql> GRANT ALL PRIVILEGES ON fluxbb.* TO 'fluxbb'@'localhost';
Query OK, 0 rows affected (0.00 sec)
.
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
.
mysql> exit
Importa il file di dump del tuo database FluxBB:
mysql -u fluxbb -p fluxbb < myfluxbb.sql
Da BBCode a Markdown
Lo script di importazione gestisce automaticamente la conversione da BBCode a Markdown. Non sono necessari gem aggiuntivi per questo.
Dopo aver installato mysql2, vai al percorso di installazione di Discourse e apri il file Gemfile per modificarlo.
cd ~/discourse
sudo nano Gemfile
Ora inserisci la riga seguente alla fine del file per aggiungere il gem mysql2 a Discourse.
gem 'mysql2'
Prima di eseguire lo script di importazione, incolla queste righe una alla volta nel tuo terminale (usa i tasti freccia per modificare i valori).
export FLUXBB_HOST="localhost"
export FLUXBB_DB="fluxbb"
export FLUXBB_USER="root"
export FLUXBB_PW=""
export FLUXBB_PREFIX=""
Ora è il momento di eseguire lo script di importazione. Esegui il comando seguente per avviare la migrazione.
RAILS_ENV=production bundle exec ruby script/import_scripts/fluxbb.rb
Attendi fino al completamento dell’importazione. Puoi riavviarlo se si blocca o diventa estremamente lento.
Al termine, complimenti! Il tuo database è stato migrato con successo da FluxBB a Discourse ![]()
Avvia la tua istanza di Discourse:
bundle exec rails server
Avvia Sidekiq e lascia che faccia il suo lavoro:
bundle exec sidekiq -q critical,4 -q default,2 -q low
A seconda delle dimensioni del tuo forum, questa operazione potrebbe richiedere molto tempo. Puoi monitorare l’avanzamento all’indirizzo http://localhost:3000/sidekiq.
Ora crea un backup dalla pagina di amministrazione /admin/backups e importalo nel tuo sito Discourse attivo.