このチュートリアルでは、公式の 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
DB ユーザーにパスワードが設定されている場合は、
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
![]()
http://localhost:3000/sidekiq/queuesで Sidekiq の進捗状況を確認できます。
この チュートリアル に従って、Discourse 本番サーバーをセットアップします。
Discourse プラットフォーム(ローカルの Discourse サーバー)のバックアップを作成し、この チュートリアル に従って Discourse 本番サーバーにアップロードします。
![]()
このプロセスについてご質問があれば、喜んでお手伝いします。
楽しい移行を ![]()
