Migrar un foro PunBB a Discourse

En este tutorial, aprenderemos a migrar un foro PunBB a la plataforma :discourse: utilizando el script de importación oficial. ¡Comencemos :slight_smile:

Qué se puede migrar

  • Temas y respuestas => temas y publicaciones

  • Categorías y Foros

    • Categoría raíz => categoría raíz
    • Categoría hija => subcategoría
    • Foro raíz => subcategoría
    • Foro hijo => subcategoría
  • Usuarios

    • nombre de usuario
    • nombre
    • correo electrónico
    • sitio web
    • estado de privilegios
    • ubicación
    • fecha de registro
    • estado de administración
    • estado de prohibición

Nuestro plan es muy sencillo, solo necesitamos:

  • Configurar el entorno de desarrollo (DEV ENV) local.

  • Exportar la base de datos de producción.

  • Importar la base de datos de producción a Discourse.

  • Ejecutar el script de importación de PunBB.

¡Comencemos :slightly_smiling_face:

Configurar el entorno de desarrollo (DEV ENV) local

En primer lugar, debes seguir una de las siguientes guías para instalar la plataforma Discourse. Consulta esta guía si tienes algún problema.

Instala el servidor de base de datos MySQL;

MacOS:


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

Verifica el estado del servicio ejecutando:

$ brew services list

Deberías ver algo como:

mysql@5.7 started

De lo contrario, ejecuta lo siguiente y vuelve a verificar el estado:

$ brew services start mysql@5.7

Ubuntu 18.04:

Ejecuta lo siguiente para instalar el servidor MySQL:

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

Después de finalizar la instalación de MySQL, verifica su estado:

$ systemctl status mysql.service

Si no se está ejecutando, ejecuta lo siguiente:

$ sudo systemctl start mysql

Para Windows, puedes seguir la guía de instalación

Ahora, nuestro entorno de desarrollo (DEV ENV) está listo. Lo llamaremos: Servidor Discourse.

Exportar la base de datos de producción

Exporta/respalda la base de datos de producción (desde el servidor de producción de PunBB) ejecutando:

$ mysqldump -u NOMBRE_USUARIO -p NOMBRE_BASE_DATOS > punbb.sql
  • Copia este volcado de base de datos al Servidor Discourse.

:bulb: Puedes usar scp o rsync para copiar la base de datos.

Importar la base de datos de producción a Discourse

En el Servidor Discourse, crea una nueva base de datos vacía. Para ello, necesitamos usar la interfaz de línea de comandos (CLI) de MySQL:

$ mysql -u root

Si tu usuario de base de datos tiene una contraseña, debes ejecutar lo siguiente y luego escribir tu contraseña:

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

Asegúrate de que la base de datos se haya creado correctamente ejecutando:

mysql> SHOW DATABASES;

Deberías ver algo como:

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

Nuestro siguiente paso es importar la base de datos de producción en esta nueva base de datos vacía.

$ mysql -u root punbb < punbb.sql

Ejecutar el script de importación de PunBB

Primero, instalemos las dependencias del importador. Desde el Servidor Discourse:

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

A continuación, debes configurar el script para que funcione correctamente. Abre script/import_scripts/punbb.rb en cualquier editor de tu elección y realiza los cambios. Esencialmente, todo lo que necesitas hacer es proporcionar la información de la base de datos MySQL:

PUNBB_DB = "NOMBRE_BASE_DATOS"
.
.
.
@client = Mysql2::Client.new(
  host: "localhost",
  username: "NOMBRE_USUARIO_MYSQL",
  password: "CONTRASEÑA_MYSQL",
  database: PUNBB_DB
)

Ejecuta el importador con una instancia limpia de Discourse:

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

El importador se conectará a la base de datos MySQL y migrará tu foro PunBB a la base de datos de Discourse.

Después de que el importador termine, inicia el servidor de Discourse ejecutando:

$ bundle exec rails server

A continuación, inicia el procesador de trabajos en segundo plano para procesar los datos migrados:

$ bundle exec sidekiq

:bulb: Puedes monitorear el progreso de Sidekiq en esta URL: http://localhost:3000/sidekiq/queues.

A continuación, prepara tu servidor de producción de Discourse siguiendo este tutorial.

Realiza una copia de seguridad de la plataforma local del Servidor Discourse y súbela a tu servidor de producción de Discourse siguiendo este tutorial.

Si tienes alguna pregunta sobre el proceso, estaré encantado de ayudarte.

¡Feliz migración :grinning:

7 Me gusta