В этом руководстве мы узнаем, как мигрировать форум PunBB на платформу
с помощью официального скрипта импорта. Давайте начнём ![]()
Что можно мигрировать
-
Темы и ответы => темы и сообщения
-
Категории и форумы
- Корневая категория => корневая категория
- Дочерняя категория => подкатегория
- Корневой форум => подкатегория
- Дочерний форум => подкатегория
-
Пользователи
- Имя пользователя
- Имя
- Электронная почта
- Веб-сайт
- Статус привилегий
- Местоположение
- Дата регистрации
- Статус администратора
- Статус блокировки
Наш план очень прост, нам нужно только:
-
Настроить локальную среду разработки (DEV ENV).
-
Экспортировать базу данных продакшн-сервера.
-
Импортировать базу данных продакшн-сервера в Discourse.
-
Запустить скрипт импорта PunBB.
Давайте начнём ![]()
Настройка локальной среды разработки (DEV ENV)
Прежде всего, вам нужно следовать одному из следующих руководств для установки платформы 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:
Выполните следующие команды для установки сервера MySQL:
$ sudo apt update
$ sudo apt install mysql-server -y
После завершения установки MySQL проверьте её статус:
$ systemctl status mysql.service
Если служба не запущена, выполните следующую команду:
$ sudo systemctl start mysql
Для Windows вы можете следовать руководству по установке
Теперь наша среда разработки готова. Мы будем называть её: сервер Discourse.
Экспорт базы данных продакшн-сервера
Экспортируйте/сделайте резервную копию базы данных продакшн-сервера (с продакшн-сервера PunBB), выполнив:
$ mysqldump -u USER_NAME -p DATABASE_NAME > punbb.sql
- Скопируйте этот дамп базы данных на сервер Discourse.
Вы можете использовать
scpилиrsyncдля копирования базы данных.
Импорт базы данных продакшн-сервера в Discourse
На сервере Discourse создайте новую пустую базу данных. Для этого нам нужно использовать CLI MySQL:
$ mysql -u root
Если у вашего пользователя БД есть пароль, выполните следующую команду, а затем введите пароль:
mysql -u root -p
mysql> CREATE DATABASE punbb;
Убедитесь, что база данных успешно создана, выполнив:
mysql> SHOW DATABASES;
Вы должны увидеть что-то вроде:
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| punbb |
+--------------------+
Наш следующий шаг — импортировать базу данных продакшн-сервера в эту новую пустую базу данных.
$ mysql -u root punbb < punbb.sql
Запуск скрипта импорта PunBB
Сначала установим зависимости импортера. На сервере Discourse:
$ cd ~/discourse
$ echo "gem 'mysql2', require: false" >> Gemfile
$ bundle install
Далее нужно настроить скрипт для корректной работы. Откройте script/import_scripts/punbb.rb в любом редакторе по вашему выбору и измените. По сути, всё, что вам нужно сделать, — это предоставить информацию о базе данных MySQL:
PUNBB_DB = "DATABASE_NAME"
.
.
.
@client = Mysql2::Client.new(
host: "localhost",
username: "MYSQL_USERNAME",
password: "MYSQL_PASSWORD",
database: PUNBB_DB
)
Запустите импортер с чистой версией Discourse:
$ bundle exec rails db:drop
$ bundle exec rails db:create
$ bundle exec rails db:migrate
$ bundle exec ruby script/import_scripts/punbb.rb
Импортер подключится к базе данных MySQL и мигрирует ваш форум PunBB в базу данных Discourse.
После завершения работы импортера запустите сервер Discourse, выполнив:
$ bundle exec rails server
Далее запустите процессор фоновых задач для обработки мигрированных данных:
$ bundle exec sidekiq
Вы можете отслеживать прогресс sidekiq по этому URL:
http://localhost:3000/sidekiq/queues.
Далее подготовьте ваш продакшн-сервер Discourse, следуя этому руководству.
Сделайте резервную копию локальной платформы сервера Discourse и загрузите её на ваш продакшн-сервер Discourse, следуя этому руководству.
Если у вас возникнут вопросы по процессу, я с радостью помогу.
Удачной миграции ![]()