# Migrer un forum PunBB vers Discourse

**URL:** https://meta.discourse.org/t/migrate-a-punbb-forum-to-discourse/134167
**Category:** Sysadmins
**Tags:** how-to
**Created:** [Novembre 22, 2019, 2:05 UTC](https://meta.discourse.org/t/migrate-a-punbb-forum-to-discourse/134167 "2019-11-22T14:05:33Z")
**Posts on this page:** 1
**Page:** 1

<div class="post-metadata">

### Author: ![enigmaty](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/enigmaty/32/65626_2.png) [@enigmaty](https://meta.discourse.org/u/enigmaty)
#### Post date: [Novembre 22, 2019, 2:05 UTC](https://meta.discourse.org/t/migrate-a-punbb-forum-to-discourse/134167/1 "2019-11-22T14:05:33Z")

</div>

Dans ce tutoriel, nous apprendrons à migrer un forum PunBB vers la plateforme :discourse: en utilisant le [script d’importation officiel](https://github.com/discourse/discourse/blob/master/script/import_scripts/punbb.rb). Commençons 🙂

### Ce qui peut être migré

- Sujets & réponses =\> sujets & messages

- Catégories & Forums

- Utilisateurs

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 🙂

### 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](https://github.com/discourse/discourse/blob/master/docs/TROUBLESHOOTING.md) si vous rencontrez un problème.

- [Mac OS](https://meta.discourse.org/t/beginners-guide-to-install-discourse-on-mac-os-x-for-development/15772)
- [Ubuntu](https://meta.discourse.org/t/beginners-guide-to-install-discourse-on-ubuntu-for-development/14727)
- [Windows 10](https://meta.discourse.org/t/beginners-guide-to-install-discourse-on-windows-10-for-development/75149)

Installez le serveur de base de données MySQL ;

**MacOS** :

```plaintext
$ 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 :

```plaintext
$ brew services list

```

Vous devriez voir quelque chose comme :

```plaintext
mysql@5.7 started

```

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

```plaintext
$ brew services start mysql@5.7

```

**Ubuntu 18.04** :

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

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

```

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

```plaintext
$ systemctl status mysql.service

```

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

```plaintext
$ sudo systemctl start mysql

```

Pour **Windows** , vous pouvez suivre le [guide d’installation](https://dev.mysql.com/doc/refman/5.7/en/windows-installation.html).

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 :

```plaintext
$ mysqldump -u USER_NAME -p DATABASE_NAME > punbb.sql

```

- Copiez cette sauvegarde de base de données vers le _serveur Discourse_.

> 💡 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 :

```plaintext
$ 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 :

```plaintext
mysql -u root -p

```

```plaintext
mysql> CREATE DATABASE punbb;

```

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

```plaintext
mysql> SHOW DATABASES;

```

Vous devriez voir quelque chose comme :

```plaintext
+--------------------+
| 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.

```plaintext
$ 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_ :

```plaintext
$ 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 :

```ruby
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 :

```plaintext
$ 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 :

```plaintext
$ bundle exec rails server

```

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

```plaintext
$ bundle exec sidekiq

```

> 💡 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](https://github.com/discourse/discourse/blob/master/docs/INSTALL-cloud.md).

Effectuez une sauvegarde de la plateforme locale _Discourse Server_ et téléversez-la sur votre serveur de production Discourse en suivant ce [tutoriel](https://meta.discourse.org/t/move-your-discourse-instance-to-a-different-server/15721).

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

Bonne migration 😀
