Migrer un forum PunBB vers Discourse

Dans ce tutoriel, nous apprendrons à migrer un forum PunBB vers la plateforme :discourse: en utilisant le script d’importation officiel. Commençons :slight_smile:

Ce qui peut être migré

  • Sujets & réponses => sujets & messages

  • Catégories & Forums

    • Catégorie racine => catégorie racine
    • Sous-catégorie => sous-catégorie
    • Forum racine => sous-catégorie
    • Sous-forum => sous-catégorie
  • Utilisateurs

    • nom d’utilisateur
    • nom
    • e-mail
    • site web
    • statut de privilège
    • localisation
    • date d’inscription
    • statut d’administration
    • statut de bannissement

Notre plan est très simple, tout ce dont nous avons besoin :

  • Configurer l’environnement de développement (DEV ENV) local.

  • Exporter la base de données de production.

  • Importer la base de données de production dans Discourse.

  • Exécuter le script d’importation PunBB.

Commençons :slightly_smiling_face:

Configurer l’environnement de développement (DEV ENV) local

Tout d’abord, vous devez suivre l’un des guides suivants pour installer la plateforme Discourse. Consultez ce guide si vous rencontrez un problème.

Installez le serveur de base de données MySQL ;

MacOS :

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

Vérifiez l’état du service en exécutant :

$ brew services list

Vous devriez voir quelque chose comme :

mysql@5.7 started

Sinon, exécutez la commande suivante et revérifiez l’état :

$ brew services start mysql@5.7

Ubuntu 18.04 :

Exécutez les commandes suivantes pour installer le serveur MySQL :

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

Après avoir terminé l’installation de MySQL, vérifiez son état :

$ systemctl status mysql.service

S’il ne fonctionne pas, exécutez la commande suivante :

$ sudo systemctl start mysql

Pour Windows, vous pouvez suivre le guide d’installation.

Maintenant, notre environnement de développement (DEV ENV) est prêt. Nous l’appellerons : serveur Discourse.

Exporter la base de données de production

Exportez/Sauvegardez la base de données de production (à partir du serveur de production PunBB) en exécutant :

$ mysqldump -u USER_NAME -p DATABASE_NAME > punbb.sql
  • Copiez cette sauvegarde de base de données vers le serveur Discourse.

:bulb: Vous pouvez utiliser scp ou rsync pour copier la base de données.

Importer la base de données de production dans Discourse

Sur le serveur Discourse, créez une nouvelle base de données vide. Pour cela, nous devons utiliser l’interface en ligne de commande (CLI) de MySQL :

$ mysql -u root

Si votre utilisateur de base de données possède un mot de passe, vous devez exécuter la commande suivante puis saisir votre mot de passe :

mysql -u root -p
mysql> CREATE DATABASE punbb;

Assurez-vous que la base de données a été créée avec succès en exécutant :

mysql> SHOW DATABASES;

Vous devriez voir quelque chose comme :

+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| punbb              |
+--------------------+

Notre prochaine étape consiste à importer la base de données de production dans cette nouvelle base de données vide.

$ mysql -u root punbb < punbb.sql

Exécuter le script d’importation PunBB

Instalons d’abord les dépendances de l’importateur. Depuis le serveur Discourse :

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

Ensuite, vous devez configurer le script pour qu’il fonctionne correctement. Ouvrez script/import_scripts/punbb.rb dans l’éditeur de votre choix et modifiez-le. Essentiellement, tout ce que vous devez faire est de fournir les informations de la base de données MySQL :

PUNBB_DB = "DATABASE_NAME"
.
.
.
@client = Mysql2::Client.new(
  host: "localhost",
  username: "MYSQL_USERNAME",
  password: "MYSQL_PASSWORD",
  database: PUNBB_DB
)

Exécutez l’importateur avec une instance Discourse propre :

$ bundle exec rails db:drop
$ bundle exec rails db:create
$ bundle exec rails db:migrate
$ bundle exec ruby script/import_scripts/punbb.rb

L’importateur se connectera à la base de données MySQL et migrera votre forum PunBB vers la base de données Discourse.

Une fois l’importation terminée, démarrez le serveur Discourse en exécutant :

$ bundle exec rails server

Ensuite, démarrez le processeur des tâches en arrière-plan pour traiter les données migrées :

$ bundle exec sidekiq

:bulb: Vous pouvez surveiller la progression de sidekiq à cette URL : http://localhost:3000/sidekiq/queues.

Ensuite, préparez votre serveur de production Discourse en suivant ce tutoriel.

Effectuez une sauvegarde de la plateforme locale Discourse Server et téléversez-la sur votre serveur de production Discourse en suivant ce tutoriel.

Si vous avez des questions sur le processus, je suis heureux de vous aider.

Bonne migration :grinning:

7 « J'aime »