В этом руководстве мы узнаем, как мигрировать форум MyBB на платформу
, используя официальный скрипт импорта MyBB.
Что можно мигрировать
- Категории
- Корневая категория => корневая категория
- Дочерняя категория => подкатегория
- Корневой форум => подкатегория
- Дочерний форум => подкатегория
- Темы и ответы => темы и сообщения
- Пользователи
- Имя пользователя
- Электронная почта
- Статус привилегий
- Статус регистрации
- Перенаправления
Наш план очень прост:
- Настройка локальной среды разработки (DEV).
- Экспорт базы данных продакшена.
- Импорт базы данных продакшена в Discourse.
- Запуск скрипта импорта MyBB.
Приступим ![]()
Настройка локальной среды разработки (DEV)
Прежде всего, вам нужно следовать одному из этих руководств для установки самой платформы Discourse. Обратитесь к этому руководству, если у вас возникнут проблемы.
Установите сервер базы данных MySQL;
MacOS:
$ brew install mysql@5.7
$ echo 'export PATH="/usr/local/opt/mysql@5.7/bin:$PATH"' >> ~/.bash_profile
$ source ~/.bash_profile
Проверьте статус службы:
$ brew services list
Вы должны увидеть что-то вроде этого:
mysql@5.7 started
В противном случае выполните следующую команду и попробуйте снова:
$ brew services start mysql@5.7
Ubuntu 18.04:
$ sudo apt update
$ sudo apt install mysql-server -y
После завершения установки MySQL проверьте её статус:
$ systemctl status mysql.service
Если она не запущена, выполните следующую команду:
$ sudo systemctl start mysql
Для Windows вы можете следовать официальному руководству по установке.
Мы будем называть эту среду: сервер Discourse.
Экспорт базы данных продакшена
Экспортируйте/сделайте резервную копию базы данных продакшена (с сервера MyBB продакшена), выполнив:
$ mysqldump -u USER_NAME -p DATABASE_NAME > mybb_dump.sql
- Скопируйте этот дамп базы данных на сервер Discourse.
Вы можете использовать
scpилиrsyncдля копирования базы данных.
Импорт базы данных продакшена в Discourse
На сервере Discourse создайте базу данных:
$ mysql -u root
Если у вашего пользователя БД есть пароль, вы должны использовать:
mysql -u root -p, затем ввести пароль.
mysql> CREATE DATABASE mybb;
Убедитесь, что база данных была успешно создана, выполнив:
mysql> SHOW DATABASES;
Вы должны увидеть что-то вроде:
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| mybb |
| sys |
+--------------------+
База данных mybb пока пуста. Наш следующий шаг — импортировать в неё базу данных продакшена.
$ mysql -u root mybb < mybb_dump.sql
Позже нам понадобится префикс таблиц. Поэтому, пока мы здесь, давайте его получим.
$ mysql -u root
mysql> USE mybb;
mysql> SHOW TABLES;
Вы увидите что-то вроде этого:
+--------------------------+
| Tables_in_mybb |
+--------------------------+
| mybb_adminlog |
| mybb_adminoptions |
| mybb_adminsessions |
| mybb_adminviews |
| mybb_announcements |
| mybb_attachments |
| mybb_attachtypes |
| ...Остальные таблицы....|
+--------------------------+
Наш префикс таблиц — mybb_, как показывает вывод.
Запуск скрипта импорта MyBB
- Сначала установим зависимости импортера. На сервере Discourse:
$ cd ~/discourse
$ echo "gem 'mysql2', require: false" >> Gemfile
$ bundle install
Далее вы должны настроить скрипт для корректной работы. Скопируйте и вставьте следующее в ваш терминал (измените значения при необходимости):
export DB_HOST="localhost"
export DB_NAME="mybb"
export DB_PW=""
export DB_USER="root"
export TABLE_PREFIX="mybb_"
У вас есть другой вариант настройки скрипта. Откройте script/import_scripts/mybb.rb в любом удобном редакторе и измените значения внутри двойных кавычек в соответствии с вашими потребностями:
DB_HOST ||= ENV['DB_HOST'] || "localhost"
DB_NAME ||= ENV['DB_NAME'] || "mybb"
DB_PW ||= ENV['DB_PW'] || ""
DB_USER ||= ENV['DB_USER'] || "root"
TABLE_PREFIX ||= ENV['TABLE_PREFIX'] || "mybb_"
Запустите импортер с чистой копией Discourse:
$ bundle exec rails db:drop
$ bundle exec rails db:create
$ bundle exec rails db:migrate
$ bundle exec ruby script/import_scripts/mybb.rb
Импортер подключится к серверу MySQL и мигрирует вашу базу данных MyBB в базу данных Discourse.
После завершения работы импортера запустите экземпляр Discourse, выполнив:
$ bundle exec rails server
Далее запустите Sidekiq (процессор фоновых задач) для обработки мигрированных данных:
$ bundle exec sidekiq
Вы можете отслеживать прогресс работы Sidekiq по адресу
http://localhost:3000/sidekiq/queues.
Настройте ваш продакшен-сервер Discourse, следуя этому руководству.
Сделайте резервную копию платформы Discourse (локальный сервер Discourse) и загрузите её на ваш продакшен-сервер Discourse, следуя этому руководству.
![]()
Если у вас возникнут вопросы по процессу, я с радостью помогу.
Удачной миграции ![]()
