Dieses Tutorial zeigt Ihnen, wie Sie den NodeBB Importer verwenden, um ein NodeBB-Forum auf die Discourse-Plattform zu migrieren. Wenn Ihr NodeBB-Forum MongoDB als Backend verwendet, folgen Sie diesem Tutorial. Keine Sorge, es ist ein einfacher Prozess. Legen wir los.
Der Plan
- Vorbereitung der Entwicklungsumgebung.
- Exportieren der Datenbank aus der Produktionsumgebung.
- Importieren der Produktions-Datenbank in eine Discourse-Instanz.
- Ausführen des Importerskripts.
Welche Daten können migriert werden?
- Gruppen
- Kategorien
- Root-Kategorie => Root-Kategorie
- Unterkategorie & Unter-Unterkategorie => Unterkategorie
- Anhänge
- Themen & Beiträge
- angepinntes Thema => angepinntes Thema
- Themenaufrufe
- Alle Stile werden zusammen mit Erwähnungen, Emojis und Anhängen einwandfrei migriert.
- Benutzer (mit folgenden Attributen)
- Avatare (Profilbild)
- Profilhintergrund
- Sperrstatus
- Name
- Benutzername
- Bio
- Administrator
- Website
- Standort
- Beitrittsdatum
- Gruppe
Vorbereitung der lokalen Entwicklungsumgebung
Richten Sie Ihre Entwicklungsumgebung ein, indem Sie eine dieser Anleitungen befolgen:
Ab jetzt beziehe ich mich auf diese Umgebung als Discourse-Server.
Bitte verwenden Sie diese Anleitung, wenn Sie Probleme bei der Einrichtung von Discourse haben.
Exportieren des Produktions-Datenbank-Dumps (vom NodeBB-Server):
Fahren Sie Ihr Forum herunter. Dies wird von NodeBB empfohlen.
$ cd /path_to_nodebb
$ ./nodebb stop
Sie sollten auch Redis herunterfahren:
$ sudo service redis-server stop
$ sudo service redis-server status
# redis-server is not running
Ihre Datenbank befindet sich in einer einzigen Datei. Diese Datei wird von Redis automatisch in regelmäßigen Abständen generiert. Normalerweise befindet sich diese Datei in /var/lib/redis/dump.rdb. Sie können den Pfad auch über die Redis-CLI abrufen:
$ 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
Wenn Ihr Redis-Server ein Passwort erfordert, verwenden Sie
AUTH IHR_PASSWORT.
Wenn Sie aus irgendeinem Grund Ihre Datenbankdatei nicht am erwarteten Pfad finden, können Sie sie manuell generieren, indem Sie
SAVEin der Redis-CLI ausführen.
Jetzt müssen Sie die Forum-Anhänge kopieren:
$ cd /path_to_nodebb_root_folder/
$ tar -czf ./uploads.tar.gz ./public/uploads
Da Sie nun Ihre Datenbank und die Forum-Assets haben, müssen Sie sie auf den Discourse-Server kopieren.
Importieren der Datenbank
Wenn Sie die Anweisungen zur Installation von Discourse befolgt haben, sollten Sie auf dem Discourse-Server einen Redis-Server installiert haben:
$ redis-server -v
# Redis server v=5.0.2...
Jetzt müssen Sie den Redis-Server stoppen (wichtig).
Linux-basiert:
$ 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
Was Sie jetzt tun müssen, ist die Datenbank des Forums in den lokalen Redis-Datenbankpfad zu kopieren. Der Importer muss eine Verbindung zum Redis-Server herstellen und die NodeBB-Datenbank in die Discourse-Datenbank migrieren. Dieser Schritt geht davon aus, dass Sie nichts Wichtiges in Ihrer Redis-Datenbank haben; andernfalls sollten Sie ein Backup erstellen.
$ redis-cli
127.0.0.1:6379> config get dir
# "/var/lib/redis"
Prüfen Sie, ob Dateien vorhanden sind, und notieren Sie sich den aktuellen Benutzer und die Berechtigungen von dump.rdb:
$ ls -la /var/lib/redis
Kopieren Sie die NodeBB-Datenbank (ersetzen, falls vorhanden):
$ cp dump.rdb /var/lib/redis
Später, wenn Sie versuchen, eine Verbindung zum Redis-Server herzustellen, können Sie den Fehler Fatal error loading the DB: Permission denied erhalten. Daher sollten Sie die Berechtigungen von dump.rdb ändern:
# Ersetzen Sie den Benutzer durch denselben, den Sie zuvor notiert haben.
$ sudo chown redis:redis /var/lib/redis/dump.rdb
$ sudo chmod 660 /var/lib/redis/dump.rdb
Jetzt müssen Sie uploads.tar.gz in einen beliebigen Pfad Ihrer Wahl entpacken:
$ tar xvzf uploads.tar.gz
Ausführen des Importerskripts
Da unsere Datenbank nun vorhanden ist, können wir unser Importerskript ausführen. Zuvor müssen wir einige Konfigurationen bearbeiten. Wahrscheinlich müssen Sie nur die folgenden zwei Zeilen ändern.
Dies ist der Pfad zu Ihrem NodeBB-Uploads-Ordner:
ATTACHMENT_DIR = '/absolute_path/uploads'
Dies ist der Name der Datenbank in Redis. Der Standardwert ist 0:
db: 0
Führen Sie den Importer mit einer sauberen Discourse-Instanz aus:
$ cd ~/discourse
$ bundle exec rake db:drop db:create db:migrate
$ bundle exec ruby script/import_scripts/nodebb/nodebb.rb
Der Importer stellt eine Verbindung zum Redis-Server her und migriert alles in die Discourse-PostgreSQL-Datenbank.
Nachdem der Importer fertig ist, starten Sie die Discourse-Plattform:
$ bundle exec rails server
Starten Sie Sidekiq, um die migrierten Daten zu verarbeiten:
$ bundle exec sidekiq
Sie können den Fortschritt unter http://localhost:3000/sidekiq/queues überwachen.
Erstellen Sie ein Discourse-Backup und laden Sie es auf Ihren Discourse-Produktionsserver hoch, indem Sie dieses Tutorial befolgen.
Damit sollten Sie eine vollständige Migration von NodeBB zu Discourse erfolgreich durchgeführt haben ![]()
Falls Sie Fragen haben, helfe ich gerne ![]()