Migration eines myBB-Forums nach Discourse unter Verwendung von Kubuntu in einer VM

Zusammenfassung der (viel längeren als dieser Beitrag :wink: Reise:

HINWEIS: Ich habe für den Prozess eine Kubuntu-Distribution in einer virtuellen Maschine verwendet. Bitte beachten Sie, dass dies auf anderen Betriebssystemen oder sogar Distributionen möglicherweise nicht dasselbe ist.

0. Discourse-Entwicklungsumgebung installieren

Folgen Sie diesem Beitrag und führen Sie dieses Skript aus, das in dem Beitrag verlinkt ist, mit

`bash <(wget -qO- https://raw.githubusercontent.com/discourse/install-rails/master/linux)`

wie dort beschrieben, plus das Klonen der Quellen

git clone https://github.com/discourse/discourse.git ~/discourse

1. MySQL-Datenbank vorbereiten

Holen Sie sich einen Dump der ursprünglichen mybb-Datenbank, wie oben im Thread beschrieben:

$ mysqldump -u BENUTZERNAME -p DATENBANKNAME > mybb_dump.sql

und kopieren/verschieben Sie ihn in die neu eingerichtete Entwicklungsumgebung.

MySQL-Server installieren

$ sudo apt-get install mysql-server

Die Authentifizierung für MySQL hat sich in neueren Versionen geändert. Sie müssen Root auf dem Host sein, wenn Sie heutzutage Root in MySQL sein wollen, also

$ sudo mysql

anstelle von

$mysql -u root

Natürlich müssen Sie zuerst ein „sudoer“ (Administrator) sein.

$ sudo mysql
mysql> CREATE DATABASE mybb;
mysql> SHOW DATABASES;
mysql> CREATE USER 'nonrootuser'@'localhost' IDENTIFIED BY 'password';
mysql> GRANT ALL PRIVILEGES ON mybb.* TO 'nonrootuser'@'localhost';
mysql> quit
$ mysql -unonrootuser -ppassword mybb < mybb_dump.sql

<hier erhalten Sie eine Warnung, dass die Angabe des Passworts in der Befehlszeile keine gute Idee ist>

$ sudo mysql
mysql> USE mybb;
mysql> SHOW TABLES;

<hier überprüfen Sie, ob alle Tabellen vorhanden sind - siehe Originalbeitrag>

mysql> quit

2. Ruby-Gems installieren

Wenn Sie die Gemfile in den aktuellen Quellen überprüfen, stellen Sie fest, dass

$ echo "gem 'mysql2', require: false" >> Gemfile

nicht wirklich benötigt wird. Es reicht aus, die Umgebungsvariable IMPORT auf 1 zu setzen.
Was jedoch benötigt wird, sind die Entwicklungsdateien für MySQL-Clients, worum es bei der ersten Zeile unten geht.

$ sudo apt-get install libmysqlclient-dev
$ cd ~/discourse
$ IMPORT=1 bundle install

2. Discourse (PostgreSQL-Datenbank) vorbereiten

$ bundle exec rails db:drop
$ bundle exec rails db:create
$ bundle exec rails db:migrate
$ export DB_PW="password"
$ export DB_USER="nonrootuser"

3. Den eigentlichen Import ausführen

Die nächste Zeile behebt einen lange veralteten und derzeit bereits entfernten Methodenaufruf im mybb.rb-Importskript, der zum Zeitpunkt des Schreibens noch vorhanden ist und nichts ändert, wenn er bereits behoben wurde.

$ sed -i.original 's/File.exists?/File.exist?/' script/import_scripts/mybb.rb

Überprüfen Sie nun, ob Redis noch läuft. Das Rails-Installationsskript startet es, aktiviert es aber nicht als permanenten Dienst, sodass es Neustarts, Abstürze usw. nicht überlebt.

$ ps -aux |grep redis
silverdr    2808  0.3  0.3  89972 14512 ?        Ssl  05:25   2:04 redis-server *:6379
[….]

Wenn Sie nichts Ähnliches wie die obige Zeile sehen, führen Sie aus

$ redis-server --daemonize yes

was genau der Befehl ist, den das obige Rails-Installationsskript bei der ersten Installation verwendet hat.

Endlich :pray: und

$ IMPORT=1 bundle exec ruby script/import_scripts/mybb.rb

Wenn das Skript zu diesem Zeitpunkt nicht mit YAE (Yet Another Error) stoppt, ist es Zeit, die Flasche zu öffnen :champagne:

Ein paar Dinge bleiben

  • OK - das einzig offensichtliche fehlende Teil sind die Passwörter der Benutzer. Anscheinend, obwohl beide Anwendungen Hashes und Salts speichern, verwendet “mybb” aufgrund der Länge dieser Hashes einen älteren Hashing-Algorithmus. Daher ist dies verständlich und kein Showstopper. Jeder sollte sein Passwort beim ersten Mal zurücksetzen können.
  • Einige bbcode-Sachen werden nicht konvertiert. Ich habe zum Beispiel Probleme mit Codeblöcken, die einige Tags um sich herum haben, die die monospaced Courier-Schriftart und dergleichen einstellen. Ich habe keine Ausdauer mehr, um diese Sache weiter zu automatisieren. Wenn es Ihnen gelingt, etwas dagegen zu tun, lassen Sie es mich/uns hier wissen! :man_bowing:
2 „Gefällt mir“