Migration d'un forum myBB vers Discourse en utilisant Kubuntu dans une VM

Résumé du parcours (beaucoup plus long que ce post) :wink: :

NOTE : J’ai utilisé une distribution Kubuntu fonctionnant dans une machine virtuelle pour le processus, veuillez donc garder à l’esprit que cela peut ne pas être la même chose sur différents systèmes d’exploitation ou même distributions.

0. Installation de l’environnement de développement Discourse

En suivant ce post et en exécutant ce script lié dans le post en utilisant

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

comme décrit là-bas, plus le clonage des sources

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

1. Préparation de la base de données MySQL

Obtenez un dump de la base de données mybb d’origine comme décrit en haut du fil :

$ mysqldump -u NOM_UTILISATEUR -p NOM_BASE_DE_DONNEES > mybb_dump.sql

et copiez/déplacez-le dans l’environnement de développement nouvellement configuré.

Installer le serveur MySQL

$ sudo apt-get install mysql-server

L’authentification pour mysql a changé dans les versions plus récentes. Vous devez être root sur l’hôte si vous voulez être root sur mysql ces jours-ci, donc

$ sudo mysql

au lieu de

$mysql -u root

Bien sûr, vous devez d’abord être un “sudoer” (administrateur).

$ 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

<ici vous recevez un avertissement indiquant que la fourniture du mot de passe sur la ligne de commande n'est pas une bonne chose à faire>

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

<ici, vérifiez si toutes les tables sont présentes - voir le post original>

mysql> quit

2. Installation des gems Ruby

En vérifiant le Gemfile dans les sources actuelles, on constate que

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

n’est pas vraiment nécessaire. Il suffit de définir la variable d’environnement IMPORT à 1.
Ce qui est nécessaire, cependant, ce sont les fichiers de développement pour les clients MySQL, ce à quoi sert la première ligne ci-dessous.

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

2. Préparer la base de données Discourse (PostgreSQL)

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

3. Exécuter l’importation réelle

La ligne suivante corrige un appel de méthode longtemps déprécié et actuellement déjà supprimé dans le script d’importation mybb.rb, qui est toujours là au moment de la rédaction et ne changera rien si cela est déjà corrigé.

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

Vérifiez maintenant si Redis est toujours en cours d’exécution. Le script d’installation Rails le démarre mais ne l’active pas en tant que service permanent, il ne survit donc pas aux redémarrages, plantages, etc.

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

Si vous ne voyez rien de tel que la ligne ci-dessus, exécutez

$ redis-server --daemonize yes

qui est exactement la même commande que celle utilisée par le script d’installation Rails ci-dessus lors de la première installation.

Enfin :pray: et

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

Si à ce moment-là le script ne s’arrête pas avec YAE (Yet Another Error), alors il est temps d’ouvrir cette bouteille :champagne:

Quelques éléments restants

  • OK - la seule partie manquante évidente sont les mots de passe des utilisateurs. Apparemment, même si les deux applications stockent des hashs avec des sels, à en juger par la longueur de ces hashs, “mybb” utilise un algorithme de hachage plus ancien. Par conséquent, c’est compréhensible et pas un obstacle majeur. Tout le monde devrait pouvoir réinitialiser son mot de passe la première fois.
  • Certains éléments de bbcode ne sont pas convertis. J’ai par exemple un problème avec les blocs de code, qui ont des balises autour d’eux définissant la police Courier monospaced et autres. Je n’ai plus l’énergie d’essayer d’automatiser davantage cette chose. Si vous parvenez à faire quelque chose à ce sujet, faites-le moi savoir / faites-le nous savoir ici ! :man_bowing:
2 « J'aime »