Ce tutoriel vous montrera comment utiliser le NodeBB Importer pour migrer un forum NodeBB vers la plateforme Discourse. Si votre forum NodeBB utilise MongoDB comme backend, suivez ce tutoriel. Ne vous inquiétez pas, c’est un processus simple. Commençons.
Le plan
- Préparation de l’environnement de développement.
- Export de la base de données depuis l’environnement de production.
- Import de la base de données de production dans une instance Discourse.
- Exécution du script d’importation.
Quelles données peuvent être migrées ?
- Groupes
- Catégories
- Catégorie racine => Catégorie racine
- Sous-catégorie et sous-sous-catégorie => Sous-catégorie
- Pièces jointes
- Sujets et Messages
- Sujet épinglé => Sujet épinglé
- Vues des sujets
- Tous les styles seront migrés correctement, y compris les mentions, les émojis et les pièces jointes.
- Utilisateurs (avec les attributs suivants)
- Avatars (photo de profil)
- Arrière-plan du profil
- Statut de bannissement
- Nom
- Nom d’utilisateur
- Adresse e-mail
- Biographie
- Administrateur
- Site web
- Localisation
- Statut d’adhésion
- Groupe
Préparation de l’environnement de développement local
Configurez votre environnement de développement en suivant l’un de ces guides :
Désormais, je ferai référence à cet environnement comme le serveur Discourse.
Veuillez utiliser ce guide si vous rencontrez des problèmes lors de la configuration de Discourse.
Exportation du dump de la base de données de production (depuis le serveur NodeBB) :
Arrêtez votre forum. Cela est recommandé par NodeBB.
$ cd /path_to_nodebb
$ ./nodebb stop
Vous devez également arrêter Redis :
$ sudo service redis-server stop
$ sudo service redis-server status
# redis-server n'est pas en cours d'exécution
Votre base de données de forum est contenue dans un seul fichier. Ce fichier est généré automatiquement périodiquement par Redis. Généralement, ce fichier se trouve dans /var/lib/redis/dump.rdb. Vous pouvez également obtenir le chemin via l’interface CLI de Redis :
$ redis-cli
127.0.0.1:6379> config get dir
# "/var/lib/redis"
127.0.0.1:6379> exit
$ ls -la /var/lib/redis
# -rw-rw-r-- 1 redis redis 2664346 Aug 4 16:24 dump.rdb
Si votre serveur Redis nécessite un mot de passe, utilisez
AUTH VOTRE_MOT_DE_PASSE.
Si pour une raison quelconque vous ne trouvez pas votre fichier de base de données au chemin attendu, vous pouvez le générer manuellement en exécutant
SAVEdans l’interface CLI de Redis.
Maintenant, vous devez copier les pièces jointes du forum :
$ cd /path_to_nodebb_root_folder/
$ tar -czf ./uploads.tar.gz ./public/uploads
Maintenant que vous avez votre base de données et les ressources du forum, vous devez les copier vers le serveur Discourse.
Importation de la base de données
Si vous avez suivi les instructions d’installation de Discourse, vous devriez avoir un serveur Redis installé sur le serveur Discourse :
$ redis-server -v
# Redis server v=5.0.2...
Vous devez maintenant arrêter le serveur Redis (important).
Basé sur Linux :
$ sudo service redis-server stop
$ sudo service redis-server status
# redis-server n'est pas en cours d'exécution
Mac OS :
$ brew services stop redis
$ brew services list
# redis arrêté
Ce que vous devez faire maintenant est de copier la base de données du forum vers le chemin local de la base de données Redis. L’importateur doit se connecter au serveur Redis et migrer la base de données NodeBB vers la base de données Discourse. Cette étape suppose que vous n’avez rien d’important dans votre base de données Redis, sinon vous devriez effectuer une sauvegarde.
$ redis-cli
127.0.0.1:6379> config get dir
# "/var/lib/redis"
Vérifiez s’il y a des fichiers et notez l’utilisateur actuel et les permissions de dump.rdb :
$ ls -la /var/lib/redis
Copiez la base de données NodeBB (remplacez s’il y en a une) :
$ cp dump.rdb /var/lib/redis
Plus tard, lors de la tentative de connexion au serveur Redis, vous pourriez obtenir Fatal error loading the DB: Permission denied, vous devez donc modifier les permissions de dump.rdb :
# Remplacez l'utilisateur par le même que celui noté précédemment.
$ sudo chown redis:redis /var/lib/redis/dump.rdb
$ sudo chmod 660 /var/lib/redis/dump.rdb
Vous devez maintenant décompresser uploads.tar.gz vers n’importe quel chemin de votre choix :
$ tar xvzf uploads.tar.gz
Exécution du script d’importation
Maintenant que notre base de données est en place, nous sommes prêts à exécuter notre script d’importation. Avant cela, nous devons modifier certaines configurations. Vous devez probablement changer uniquement les deux lignes suivantes.
Voici le chemin de votre dossier uploads NodeBB :
ATTACHMENT_DIR = '/absolute_path/uploads'
Voici le nom de la base de données dans Redis. La valeur par défaut est 0 :
db: 0
Exécutez l’importateur avec Discourse propre :
$ cd ~/discourse
$ bundle exec rake db:drop db:create db:migrate
$ bundle exec ruby script/import_scripts/nodebb/nodebb.rb
L’importateur se connectera au serveur Redis et migrera tout vers la base de données PostgreSQL de Discourse.
Une fois l’importation terminée, démarrez la plateforme Discourse :
$ bundle exec rails server
Démarrez Sidekiq pour traiter les données migrées :
$ bundle exec sidekiq
Vous pouvez surveiller la progression à l’adresse http://localhost:3000/sidekiq/queues.
Effectuez une sauvegarde de Discourse et téléversez-la sur votre serveur de production Discourse en suivant ce tutoriel.
Ainsi, vous devriez avoir réussi à effectuer une migration complète de NodeBB vers Discourse ![]()
Si vous avez des questions, je suis heureux de vous aider ![]()