Zusammenfassung der (viel längeren als dieser Beitrag
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
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 ![]()
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!
