Ein MyBB-Forum zu Discourse migrieren

In diesem Tutorial lernen Sie, wie Sie ein MyBB-Forum mit dem offiziellen MyBB-Importerskript auf die :discourse:-Plattform migrieren.

Was kann migriert werden

  • Kategorien
    • Root-Kategorie =\u003e Root-Kategorie
    • Unterkategorie =\u003e Unterkategorie
    • Root-Forum =\u003e Unterkategorie
    • Unterforum =\u003e Unterkategorie
  • Threads \u0026 Antworten =\u003e Themen \u0026 Beiträge
  • Benutzer
    • Benutzername
    • E-Mail
    • Berechtigungsstatus
    • Beitrittsstatus
  • Weiterleitungen

Unser Plan ist sehr einfach:

  • Einrichten der lokalen DEV-Umgebung.
  • Exportieren der Produktionsdatenbank.
  • Importieren der Produktionsdatenbank in Discourse.
  • Ausführen des MyBB-Importerskripts.

Lassen Sie uns beginnen :slightly_smiling_face:

Einrichten der lokalen DEV-Umgebung

Zunächst müssen Sie eine der folgenden Anleitungen befolgen, um die Discourse-Plattform selbst zu installieren. Konsultieren Sie diese Anleitung, falls Sie Probleme haben.

Installieren Sie den MySQL-Datenbankserver:

MacOS:

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

Überprüfen Sie den Dienststatus:

\n$ brew services list\n

Sie sollten etwas Ähnliches sehen:

\nmysql@5.7 started\n

Andernfalls führen Sie Folgendes aus und versuchen es erneut:

\n$ brew services start mysql@5.7\n

Ubuntu 18.04:

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

Nach Abschluss der MySQL-Installation überprüfen Sie deren Status:

\n$ systemctl status mysql.service\n

Falls er nicht läuft, führen Sie Folgendes aus:

\n$ sudo systemctl start mysql\n

Für Windows können Sie dem offiziellen Installationsleitfaden folgen.

Wir nennen diese Umgebung: Discourse-Server.

Exportieren der Produktionsdatenbank

Exportieren/Sichern Sie die Produktionsdatenbank (vom MyBB-Produktionsserver) durch Ausführen von:

\n$ mysqldump -u BENUTZERNAME -p DATENBANKNAME \u003e mybb_dump.sql\n

  • Kopieren Sie diesen Datenbank-Dump auf den Discourse-Server.

\u003e :bulb: Sie können scp oder rsync zum Kopieren der Datenbank verwenden.

Importieren der Produktionsdatenbank in Discourse

Erstellen Sie auf dem Discourse-Server eine Datenbank:

\n$ mysql -u root\n

\u003e :bulb: Wenn Ihr DB-Benutzer ein Passwort hat, sollten Sie Folgendes verwenden: mysql -u root -p und dann Ihr Passwort eingeben.

\nmysql\u003e CREATE DATABASE mybb;\n

Stellen Sie sicher, dass die Datenbank erfolgreich erstellt wurde, indem Sie Folgendes ausführen:

\nmysql\u003e SHOW DATABASES;\n

Sie sollten etwas Ähnliches sehen:

\n+--------------------+\n| Database |\n+--------------------+\n| information_schema |\n| mysql |\n| performance_schema |\n| mybb |\n| sys |\n+--------------------+\n

Die mybb-DB ist bisher leer. Unser nächster Schritt ist der Import der Produktionsdatenbank darin.

\n$ mysql -u root mybb \u003c mybb_dump.sql\n

Später benötigen wir die Tabellenpräfixe. Lassen Sie uns dies also jetzt holen.
\n$ mysql -u root\nmysql\u003e USE mybb;\nmysql\u003e SHOW TABLES;\n

Sie werden etwas Ähnliches sehen:

\n+--------------------------+\n| Tables_in_mybb |\n+--------------------------+\n| mybb_adminlog |\n| mybb_adminoptions |\n| mybb_adminsessions |\n| mybb_adminviews |\n| mybb_announcements |\n| mybb_attachments |\n| mybb_attachtypes |\n| ...Der Rest der Tabellen....|\n+--------------------------+\n

Unser Tabellenpräfix ist mybb_, wie die Ausgabe zeigt.

Ausführen des MyBB-Importerskripts

  • Installieren Sie zunächst die Importer-Abhängigkeiten. Vom Discourse-Server aus:

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

Als Nächstes sollten Sie das Skript konfigurieren, damit es ordnungsgemäß ausgeführt wird. Kopieren Sie Folgendes in Ihre Shell (ändern Sie die Werte bei Bedarf):

\nexport DB_HOST="localhost"\nexport DB_NAME="mybb"\nexport DB_PW=""\nexport DB_USER="root"\nexport TABLE_PREFIX="mybb_"\n

Sie haben eine weitere Option, um das Skript zu konfigurieren. Öffnen Sie script/import_scripts/mybb.rb in einem beliebigen Editor Ihrer Wahl und ändern Sie die Werte innerhalb der doppelten Anführungszeichen, um sie Ihren Bedürfnissen anzupassen:

ruby\n DB_HOST ||= ENV['DB_HOST'] || "localhost"\n DB_NAME ||= ENV['DB_NAME'] || "mybb"\n DB_PW ||= ENV['DB_PW'] || ""\n DB_USER ||= ENV['DB_USER'] || "root"\n TABLE_PREFIX ||= ENV['TABLE_PREFIX'] || "mybb_"\n

Führen Sie den Importer mit einer sauberen Discourse-Instanz aus:

\n$ bundle exec rails db:drop\n$ bundle exec rails db:create\n$ bundle exec rails db:migrate\n$ bundle exec ruby script/import_scripts/mybb.rb\n

Der Importer verbindet sich mit dem MySQL-Server und migriert Ihre MyBB-Datenbank in die Discourse-Datenbank.

Nachdem der Importer fertig ist, starten Sie die Discourse-Instanz durch Ausführen von:

\n$ bundle exec rails server\n

Starten Sie als Nächstes Sidekiq (Hintergrund-Job-Verarbeiter), um die migrierten Daten zu verarbeiten:

\n$ bundle exec sidekiq\n

\u003e :bulb: Sie können den Sidekiq-Fortschritt unter http://localhost:3000/sidekiq/queues überwachen.

Richten Sie Ihren Discourse-Produktionsserver ein, indem Sie diesem Tutorial folgen.

Erstellen Sie ein Backup für die Discourse-Plattform (lokaler Discourse-Server) und laden Sie es auf Ihren Discourse-Produktionsserver hoch, indem Sie diesem Tutorial folgen.

:tada:

Wenn Sie Fragen zum Prozess haben, helfe ich gerne weiter.

Viel Erfolg bei der Migration :grinning:

9 „Gefällt mir“

Hallo – das sieht nach einem großartigen Leitfaden aus, aber da ich CPanel und nicht Linux benutze und von einem Shared-Host migriere, habe ich keinen Root- oder SSH-Zugriff auf den ursprünglichen Host. Allerdings habe ich über CPanel Zugriff auf phpMyAdmin, über den ich die MyBB-Datenbank exportieren kann.
Reicht das?
Sind besondere Exporteinstellungen erforderlich? Und in welches Verzeichnis auf meinem DigitalOcean-Droplet sollte diese Datenbank kopiert werden? (Ich verwende FileZilla).

Ja.

Das ist egal, das Home-Verzeichnis funktioniert einwandfrei.

3 „Gefällt mir“

Hallo nochmal – ich komme im Tutorial bis zu diesem Punkt:

bundle install

und bei mir schlägt dies mit folgendem Fehler fehl:

‘Don’t run Bundler as root. Bundler can ask for sudo if it is needed, and
installing your bundle as root will break this application for all non-root
users on this machine.
Your Gemfile has no gem server sources. If you need gems that are not already on
your machine, add a line like this to your Gemfile:
source ‘https://rubygems.org
Could not find gem ‘mysql2’ in any of the gem sources listed in your Gemfile.’

Irgendwelche Vorschläge?

Leider weiß ich nichts über Ruby, Linux oder Gemfiles und arbeite mich daher buchstäblich nur durch die verschiedenen Discourse-CLI-Einrichtungsaufgaben, indem ich die Anweisungen aus den Tutorials kopiere und die Befehle über PuTTY einfüge, ohne wirklich etwas zu verstehen.

Ich verwende Ubuntu und Discourse auf einem DigitalOcean-Droplet, falls das hilft?

Außerdem sehe ich einen späteren Hinweis darauf, Datenbank-Export-Befehle in die ‘Shell’ einzufügen. Ist meine aktuelle PuTTY-Verbindung zum Server aus praktischer Sicht gleichbedeutend mit der ‘Shell’, oder ist eine andere Schnittstelle/Konsole beteiligt?

OK, als teilweise Antwort auf meine eigene Frage deuten zufällige Suchen in Foren darauf hin, dass

$ sudo apt-get install libmysqlclient-dev

anschließend die Installation des mysql2-Gems ermöglicht (was auch immer das ist) – wobei die Warnung ignoriert wird, dies nicht als root auszuführen.

Nachdem ich das überwunden habe und zum nächsten Schritt komme – dem Eingeben von

$ bundle exec rails db:drop

– erhalte ich einen weiteren Fehler:

bundler: failed to load command: rails (/usr/local/bin/rails)
Gem::Exception: can’t find executable rails for gem railties. railties is not currently included in the bundle, perhaps you meant to add it to your Gemfile?

Beim Überprüfen des Verzeichnisses /usr/local/bin/ sehe ich, dass eine Datei namens „rails

Ich kann mit Bestimmtheit sagen, dass das Befolgen dieser Anleitung genau so, wie sie geschrieben ist, für niemanden funktioniert, der die offiziellen Schritte zur Einrichtung einer lokalen Entwicklungsumgebung unter einer WSL2-Installation von Ubuntu 18.04 unter Windows 10 befolgt – bei fast jedem Schritt tritt eine fehlende Abhängigkeit, ein „Connection Refused“-Fehler oder ähnliches auf.

Mit viel Mühe und Online-Recherche bin ich bis zum folgenden Befehl gelangt:

$ bundle exec ruby script/import_scripts/mybb.rb

Dieser Befehl erzeugt jedoch folgende Fehlermeldung:

mysql2/client.rb:90:in `connect’: Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2) (Mysql2::Error::ConnectionError)

Das ist eine Sackgasse – nichts, was ich online gefunden habe, bietet eine funktionierende Lösung dafür.

Wie löse ich dieses Problem und komme zum nächsten Schritt? Jede Hilfe wird sehr geschätzt!

1 „Gefällt mir“

Hallo, wie kann ich eine Datenbank auf meinem DigitalOcean-Droplet hochladen? Ich habe die 1-Click-Installation von DigitalOcean verwendet, um Discourse (Ubuntu) zu installieren.
Auf meinem PC habe ich Windows 10 Home, Buildversion 18362.

Danach habe ich MySQL installiert, aber ich weiß nicht, wie ich die MyBB-Datenbank „physisch

1 „Gefällt mir“

Sie müssen die Datei mit scp oder einem ähnlichen Tool hochladen. Dann etwas wie

  mysql -u user -p password database < filename..sql
3 „Gefällt mir“

Ich stecke fest :frowning:

1 „Gefällt mir“

Dieser Leitfaden sollte aktualisiert werden, um mit dem Import innerhalb einer Docker-Installation kompatibel zu sein, anstatt einen lokalen Entwicklungsmaschine zu verwenden.

5 „Gefällt mir“

Ich freue mich wirklich darauf, dass der Guide in einer Docker-Umgebung läuft :slight_smile:

2 „Gefällt mir“

Ich habe es schließlich mit dem Selbstmachen aufgegeben und einen Entwickler engagiert – wobei ich ihn auf alle großartigen Vorschläge in diesem Forum verwiesen habe (die geholfen haben!). Ich glaube, er hat dies direkt auf meinem live Digital Ocean Droplet umgesetzt, anstatt in einer separaten Entwicklungsumgebung (damit ich die Arbeiten leicht überprüfen konnte, während er arbeitete – die Benutzer waren nicht betroffen, da das Forum noch nicht offiziell live war). Mit anderen Worten: Ich denke, das ist möglich.

Nach einigen Iterationen sind die Ergebnisse jetzt ziemlich gut – alle MyCode- und Sonderzeichenprobleme sind behoben, meine MyBB-Beitragspräfixe wurden als Discourse-Tags übersetzt, und benutzerdefinierte Mehrfachauswahl-Benutzerprofilfelder wurden erfolgreich importiert.

Wenn er bereit ist, werde ich ihn bitten, alle Anpassungen am Standard-Importskript sowie andere hier verwendete Techniken zu teilen.

4 „Gefällt mir“

Falls es jemandem hilft: Der Entwickler @rahilqf, den ich beauftragt habe, hat das Projekt abgeschlossen. Dazu gehörte die Übersetzung benutzerdefinierter MyBB-Felder in benutzerdefinierte Discourse-Felder (was die Installation des multi-select-user-field-Plugins voraussetzt), die Übersetzung von MyBB-Beitragspräfixen in Discourse-Tags sowie das Entfernen fast aller redundanten MyCode-Tags aus MyBB-Beiträgen.

Eine angepasste Version seines Import-Skripts ist hier verfügbar: Angepasstes MyBB-zu-Discourse-Import-Skript.

Außerdem hat er erfolgreich ein Yahoo Groups Mbox-Archiv importiert, und zwar mit dem Standard-Yahoo-Import-Skript. Dabei wurden jedoch Anhänge nicht übertragen. In meinem Fall war das kein großes Problem.

3 „Gefällt mir“

Ich konvertiere Benutzer, Beiträge, Themen usw. aus einer MyBB-Datenbank!

Ich habe mich an diese Anleitung gehalten: Install Discourse on Ubuntu or Debian for Development

Aber http://localhost:3000/ oder http://forum.omaggieconcorsi.com:3000/ funktionieren nicht.

Das Programm konvertiert zwar etwas, aber ich weiß nicht, wo ich die Daten anschließend exportieren kann.
Da ich Discourse weder über http://forum.omaggieconcorsi.com:3000/ noch über http://localhost:3000/ erreichen kann, wie kann ich dann zumindest die Datenbank mit Beiträgen, Benutzern usw. aus dem alten MyBB-Forum exportieren und in eine neue Discourse-Instanz importieren?

Danke!

Hast du diese Anweisungen auf demselben Computer befolgt, auf dem du auch den Webbrowser ausführst?

1 „Gefällt mir“

Ja, immer derselbe Computer

Ok, ich habe diesen Leitfaden auf Ubuntu 18.04 mit einer „echten

1 „Gefällt mir“

Ich versuche, die Datenbank von MyBB nach Discourse zu importieren. Wie @Paul_King bekomme ich das auf meinem DigitalOcean-Server nicht zum Laufen. Ich bekomme ständig alle möglichen Fehler, während ich dieser Anleitung folge.

Ich stecke fest beim Ausführen des Befehls:

$ bundle exec rails db:drop
bundler: Befehl nicht gefunden: rails
Installieren Sie fehlende Gem-Executables mit `bundle install`

Bundle install sagt, dass es abgeschlossen ist:

$ bundle install
Ihre Gemfile listet das Gem mysql2 (>= 0) mehr als einmal auf.
Sie sollten wahrscheinlich nur eines davon behalten.
Obwohl das aktuell kein Problem ist, könnte es später zu Fehlern führen, wenn Sie die Version eines davon ändern.
Verwende bundler 1.16.1
Verwende mysql2 0.4.10
Bundle komplett! 2 Gemfile-Abhängigkeiten, 2 Gems jetzt installiert.
Verwenden Sie `bundle info [gemname]`, um zu sehen, wo ein gebundenes Gem installiert ist.

Der Versuch, Rails manuell zu installieren, führt zu folgendem Ergebnis:

$ gem install rails
Native Erweiterungen werden erstellt. Das kann eine Weile dauern...
FEHLER: Fehler beim Installieren von rails:
        FEHLER: Failed to build gem native extension.

    Aktueller Verzeichnis: /var/lib/gems/2.5.0/gems/racc-1.5.2/ext/racc/cparse
/usr/bin/ruby2.5 -r ./siteconf20210110-8155-1ms05r3.rb extconf.rb
mkmf.rb kann die Header-Dateien für Ruby unter /usr/lib/ruby/include/ruby.h nicht finden

extconf fehlgeschlagen, Exit-Code 1

Die Gem-Dateien bleiben in /var/lib/gems/2.5.0/gems/racc-1.5.2 installiert, zur Überprüfung.
Ergebnisse protokolliert in /var/lib/gems/2.5.0/extensions/x86_64-linux/2.5.0/racc-1.5.2/gem_make.out

Das ist extrem frustrierend.


Ich habe diesen Beitrag offen gelassen und es geschafft, Rails zu installieren. Dann hatte ich eine Million weitere Fehler, die ich auch alle beheben musste. Fehler. Bei. Jedem. Einzelnen. Schritt.

Noch nie habe ich so pure Hass auf Software empfunden. Warum ist Ruby so? Das ist ein Albtraum. Jetzt stecke ich bei diesem Fehler fest:

$ bundle exec rails db:drop
Traceback (most recent call last):
        1: from /usr/local/bin/bundle:23:in `<main>'
/usr/local/bin/bundle:23:in `load': cannot load such file -- /usr/share/rubygems-integration/all/gems/bundler-1.16.1/exe/bundle (LoadError)

Kann mir jemand helfen?

1 „Gefällt mir“

Nicht hilfreich, aber ich bin auf genau dieselben Hindernisse gestoßen, sowohl beim Versuch, eine lokale Entwicklungsumgebung einzurichten (um eine Discourse-Datenbankdatei/ein Backup zu erstellen), als auch direkt auf meinem Digital Ocean Droplet. Schließlich habe ich mich nach dem Verlust von zig Stunden dazu entschlossen, dass das Leben zu kurz ist, und einen Entwickler von Fiverr engagiert (der zwar Wochen brauchte, um das Problem zu lösen, es aber geschafft hat).
Ich vermute, es gibt einfach keine Anreize dafür, dass jemand den Prozess erleichtert.

Viel Erfolg – und ich hoffe, wenn du es schließlich schaffst, hinterlässt du hier eine Spur von Brotkrumen, der andere folgen können!

1 „Gefällt mir“

Wie hast du Rails installiert? Hast du einen der Entwicklungsguides verwendet (wie z. B. Anfängeranleitung zur Installation von Discourse auf Ubuntu für die Entwicklung)?

Es gibt einige How-to-Dokumente zum Ausführen des Installationsskripts im Produktions-Container (das mache ich normalerweise), sodass du möglicherweise einen davon als Anleitung verwenden kannst.