Questa guida ti mostrerà come utilizzare NodeBB Importer per migrare un forum NodeBB alla piattaforma Discourse. Se il tuo forum NodeBB utilizza MongoDB come backend, segui questa guida. Non preoccuparti, è un processo semplice. Iniziamo.
Il piano
- Preparazione dell’ambiente di sviluppo.
- Esportazione del database dall’ambiente di produzione.
- Importazione del database di produzione in un’istanza di Discourse.
- Esecuzione dello script di importazione.
Quali dati possono essere migrati?
- Gruppi
- Categorie
- Categoria radice => Categoria radice
- Sottocategoria e sottocategoria di secondo livello => Sottocategoria
- Allegati
- Argomenti e Post
- argomento fissato => argomento fissato
- visualizzazioni dell’argomento
- tutti gli stili verranno migrati correttamente, inclusi menzioni, emoji e allegati.
- Utenti (con i seguenti attributi)
- avatar (immagine del profilo)
- sfondo del profilo
- stato di sospensione
- nome
- nome utente
- biografia
- amministratore
- sito web
- località
- data di registrazione
- gruppo
Preparazione dell’ambiente di sviluppo locale
Configura il tuo ambiente di sviluppo seguendo una di queste guide:
Da ora in poi, ci riferiremo a questo ambiente come server Discourse.
Si prega di utilizzare questa guida se riscontri problemi durante la configurazione di Discourse.
Esportazione del dump del database di produzione (dal server NodeBB):
Arresta il tuo forum. Questo è raccomandato da NodeBB.
$ cd /path_to_nodebb
$ ./nodebb stop
Dovresti anche arrestare Redis:
$ sudo service redis-server stop
$ sudo service redis-server status
# redis-server is not running
Il tuo database del forum è contenuto in un unico file. Questo file viene generato automaticamente periodicamente da Redis. Di solito si trova in /var/lib/redis/dump.rdb. Inoltre, puoi ottenere il percorso dalla CLI di 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 il tuo server Redis richiede una password, usa
AUTH LA_TUA_PASSWORD.
Se per qualche motivo non trovi il tuo file di database nel percorso previsto, puoi generarlo manualmente eseguendo
SAVEall’interno della CLI di Redis.
Ora devi copiare gli allegati del forum:
$ cd /path_to_nodebb_root_folder/
$ tar -czf ./uploads.tar.gz ./public/uploads
Ora che hai il database e gli asset del forum, devi copiarli sul server Discourse.
Importazione del database
Se hai seguito le istruzioni per installare Discourse, dovresti avere il server Redis installato sul server Discourse:
$ redis-server -v
# Redis server v=5.0.2...
Ora devi arrestare il server Redis (importante).
Basato su 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
Ciò che devi fare ora è copiare il database del forum nel percorso locale del database Redis. L’importatore deve connettersi al server Redis e migrare il database NodeBB al database Discourse. Questo passaggio presuppone che tu non abbia dati importanti nel tuo database Redis; altrimenti, dovresti eseguire un backup.
$ redis-cli
127.0.0.1:6379> config get dir
# "/var/lib/redis"
Controlla se ci sono file e prendi nota dell’utente corrente e dei permessi di dump.rdb:
$ ls -la /var/lib/redis
Copia il database NodeBB (sostituisci se ne esiste già uno):
$ cp dump.rdb /var/lib/redis
In seguito, quando provi a connetterti al server Redis, potresti ricevere l’errore Fatal error loading the DB: Permission denied; pertanto, dovresti modificare i permessi di dump.rdb:
# Sostituisci l'utente con quello annotato in precedenza.
$ sudo chown redis:redis /var/lib/redis/dump.rdb
$ sudo chmod 660 /var/lib/redis/dump.rdb
Ora devi estrarre uploads.tar.gz in un percorso a tua scelta:
$ tar xvzf uploads.tar.gz
Esecuzione dello script di importazione
Ora che il database è pronto, siamo pronti per eseguire lo script di importazione. Prima di ciò, dobbiamo modificare alcune configurazioni. Probabilmente dovrai cambiare solo le seguenti due righe.
Questo è il percorso della cartella degli allegati di NodeBB:
ATTACHMENT_DIR = '/percorso_assoluto/uploads'
Questo è il nome del database in Redis. Il valore predefinito è 0:
db: 0
Esegui l’importatore con Discourse pulito:
$ cd ~/discourse
$ bundle exec rake db:drop db:create db:migrate
$ bundle exec ruby script/import_scripts/nodebb/nodebb.rb
L’importatore si connetterà al server Redis e migrerà tutto nel database PostgreSQL di Discourse.
Dopo il completamento dell’importazione, avvia la piattaforma Discourse:
$ bundle exec rails server
Avvia Sidekiq per elaborare i dati migrati:
$ bundle exec sidekiq
Puoi monitorare l’avanzamento all’indirizzo http://localhost:3000/sidekiq/queues.
Esegui un backup di Discourse e caricalo sul tuo server di produzione di Discourse seguendo questa guida.
A questo punto, dovresti aver completato con successo la migrazione completa da NodeBB a Discourse ![]()
Se hai domande, sono felice di aiutarti ![]()