MyBBのインストール

MyBBをインストールしてphpBBからデータをインポートしてみた。

フォーラムのパーミッションが移行できないのはちょっと痛い。移行した場合には、公開前に十分に確認しておく必要あり。それでもbbPressへの移行とくらべたらきっちりデータが移せるので、添付ファイルを使用していたり、ログの量の多い掲示板から移行するならMyBBの方が良いと思う。

前提条件

  • WordPress 3.9.1日本語版
  • MyBB 1.6.13
  • phpBB 3よりデータ移行

インストール手順

  1. 公式サイトのダウンロードページより、最新版のパッケージをダウンロードし、公開用のディレクトリに解凍。
    # fetch -o /tmp/mybb.zip http://www.mybb.com/download/latest
    # cd /usr/local/www/mybb
    # sudo -u www unzip /tmp/mybb.zip
    # sudo rm -rf Documentation
    # sudo mv Upload/* .
    # sudo rmdir Upload
  2. ファイルのパーミションを変更。
    # sudo chmod 666 inc/config.default.php inc/settings.php inc/languages/english/*.php inc/languages/english/admin/*.php
    # sudo chmod 777 cache cache/themes uploads uploads/avatars admin/backups 
  3. MyBB用のデータベースを作成。
    # mysql -u root -p
    Enter password:
    mysql> create database mybbdb;
    mysql> grant all privileges on mybbdb.* to bbadmin identified by 'bbpassword';
    mysql> quit;
    #
  4. Webでアクセスし、インストール画面が表示されたら「Next」をクリック。

    mybb-installer1

    「Send anonymous statistics about your server specifications to the MyBB Group」はチェックしたままで良い。(利用環境の調査のため、PHPやデータベースのバージョンなど環境に関する情報を開発グループに匿名で送信する。協力したくなければチェックをはずしても良い。)

  5. ライセンスが表示されたら内容を確認の上、「Next」をクリック。ライセンスはLGPL。
  6. 環境確認の画面が表示されたら内容を確認の上、「Next」をクリック。

    MyBBインストーラ画面(3)

  7. データベース情報の画面が表示されたら、データベース情報を入力する。

    MyBBインストーラ画面(4)

    データベース情報は、次の内容を入力する。

    • Database Engine: MySQL
    • Database Server Hostname: localhost
    • Database Username: bbadmin ※データベースユーザの名前
    • Database Password: bbpassword ※データベースのパスワード
    • Database Name: mybbdb ※作成しておいたデータベース名
    • Table Prefix: myforum_ ※デフォルトから変更しておく
    • Table Encoding: UTF-8 Unicode
  8. インストーラがテーブルを作成して結果を表示するので、「Next」をクリック。
  9. インストーラがテーブルを初期化して結果を表示するので、「Next」をクリック。
  10. インストーラがデフォルトのテーマとテンプレートをインストールして結果を表示するので、「Next」をクリック。
  11. 掲示板情報を入力する画面が表示されたら、必要に応じて内容を変更して「Next」をクリック。

    mybb-installer5

  12. 掲示板の管理者用のログイン情報を入力する画面が表示されたら、必要項目を入力して「Next」をクリック。

    mybb-installer6

    ここで入力した情報で管理者用のログインが作成される。ユーザ名には日本語も利用可。

  13. 完了画面が出たら、インストール完了。

    mybb-installer7

phpBBからのインポート

  1. 移行ツールダウンロードページから最新版のツールをダウンロードし、MyBBをインストールしたディレクトリ内に展開する。
    # fetch -o /tmp/merge.zip http://www.mybb.com/download/merge-system/latest
    # cd /tmp
    # sudo -u www unzip merge.zip
    # mv merge_1.6.10/merge /usr/local/www/mybb
    # rm -rf merge.zip merge_1.6.10
    
  2. 移行ツールを実行する前に、パスワードを変換してくれるloginconvert.phpプラグインをインストールしておく。
    # cd /usr/local/www/mybb/merge
    # sudo -u www cp logincovert.php ../inc/plugins
  3. MyBBサイトの下のmergeディレクトリにブラウザからアクセスし、「Next」をクリックする。

    MyBBへphpBBからインポート(1)

  4. 環境確認の画面が表示されたら「Next」をクリック。

    MyBBへphpBBからインポート(2)

  5. 移行元のシステム選択画面が表示されたら「phpBB 3」を選択して「Next」をクリック。
    MyBBへphpBBからインポート(3)
    移行システムインストール時にloginconvert.phpをプラグインディレクトリにコピーし忘れていると、次のようにエラーが表示される。このエラーが表示されたら、「Next」をクリックする前にloginconvert.phpをコピーしておく。

    MyBBへphpBBからインポート(4)

  6. 変換画面が表示されたら「Database Configuration」の「Run」をクリック。

    MyBBへphpBBからインポート(5)

  7. phpBBのデータベース情報を設定する画面が表示される。

    MyBBへphpBBからインポート(6)

    次のように指定して「Next」をクリック。変数名で記載したものは、phpBBをインストールしたディレクトリ下のconfig.phpの中の変数として指定された値を記述する。

    • Database Engine: MySQL
    • Database Server Hostname: localhost
    • Database Username: $dbuser
    • Database Password: $dbpassword
    • Database name: $dbname
    • Table Prefix: $table_prefix
    • Table Encoding: UTF8 Unicode
    • Automatically convert messages to UTF8?: no
  8. テーブルには依存関係があるため、全部まとめて一度に変換することができない。「Run」ボタンが有効になったものから順に実行していく。実行すると次のオプション画面が表示される場合があるが、特に必要がなければデフォルト値のまま「Next」をクリックして実行する。

    MyBBへphpBBからインポート(7)

  9. すべて実行すると終了画面が表示される。

    MyBBへphpBBからインポート(8)

    レポートが必要なければそのままブラウザを終了する。通常はレポート不要。

  10. インポートしただけの状態だと、記事数やフォーラム数の統計がデータベースに反映されていない。AdminCPにログインし、「Tool & Maintenance > Recount & Rebuild」のページですべてのデータを更新しておく。

以上でインポート完了。機能的に類似性が高いおかげで、かなりきれいにインポートされる。インポートできなかったものは、気づいた範囲では次のもの。

  • リンクフォーラムのリンク
  • フォーラムのパーミッション
  • 一部BBcode(数字指定のリストや、その入れ子のリスト)
  • 添付ファイル

uploadsディレクトリに添付ファイルは存在するものの、中身を開くと403 ForbiddenのHTMLファイルとなっている。直リンクさせないためにphpBBの添付ファイル保存ディレクトリのパーミッションが700にしてあ るのが原因。移行ツール実行前にphpBBのuploadsディレクトリのパーミションを755に変更しておけば、おそらく正常にインポート可能。

添付ファイルのインポート

インポート作業を終わった後に添付ファイルのみインポートし直したい場合には、MyBBのトップディレクトリに次の内容で migrate-attachment.php ファイルを作成する。ファイル中の8~18行目は自分の環境に合わせて書き換える。

ただし、このスクリプトはphpBBとMyBBが同じサーバ上にインストールされている場合にしか使えない。異なるサーバ上にインストールされている場合には、スクリプトを自力で改造するか、phpBBのuploadsディレクトリのパーミションを755に変更してから移行ツールを再度実行するしかない。

cf. Merge System Attachment Not Copied (My BB Community Forums)

<?php
/* mybb connect */
define("IN_MYBB", 1);
define("NO_ONLINE", 1);
require("global.php");

// MySQL credentials
$username = "mysql_username";
$password = "mysql_password";
$hostname = "localhost"; 

// phpBB3 database
$phpbb_database = "phpbbdb";
$phpbb_prefix = "myforum_";

// MyBB database
$mybb_database = "mybbdb";
$mybb_prefix = "newforum_";

// Attachments placed directories
$from_folder = "/home/your_folder/phpbb3/files/"; //phpBB3
$to_folder = "/home/your_folder/mybb/uploads/"; //MyBB

$dbh = mysql_connect($hostname, $username, $password) 
 or die("Unable to connect to MySQL");
mysql_set_charset('utf8',$dbh); 

$selected = mysql_select_db($mybb_database,$dbh)
 or die("Could not select database");

$not_found = 0;

$query=$db->query("SELECT * FROM ".$mybb_prefix."attachments");
while($result=$db->fetch_array($query)) {
 $file_phpbb3 = getFileData( $result['filename'] );
 $selected = mysql_select_db($mybb_database,$dbh)
 or die("Could not select database");
 if ( !empty($file_phpbb3) ) {
 echo "MYBB: id: " . $result['aid'] . " name: " .$result['filename'] . "<br/>";
 echo "PHPBB: id: ".$file_phpbb3['attach_id']." physical_filename: ".$file_phpbb3['physical_filename']." <br/>";
 //uncomment this line once you are sure you want to copy files
 //copyFile( $file_phpbb3['physical_filename'], $result['attachname'] );
 } else {
 echo "File id: ".$result['aid']." (".$result['filename'].") was not found in phpbb3<br/>";
 $not_found++;
 }
 echo "<br/>";
}

echo $not_found." files not found in total";

function getFileData( $name ) {
 global $dbh;
 global $phpbb_prefix;
 global $phpbb_database;

 $selected = mysql_select_db($phpbb_database,$dbh) 
 or die("Could not select database");


 $sql = "SELECT attach_id, physical_filename
 FROM ".$phpbb_prefix."attachments
 WHERE real_filename LIKE '".mysql_real_escape_string($name)."'";

 $result = mysql_query($sql);
 if (!$result) {
 return;
 } else {
 $row = mysql_fetch_array($result);
 return $row;
 }
}

function copyFile( $from, $to ) {
 global $from_folder, $to_folder;
 if (!copy($from_folder.$from, $to_folder.$to)) {
 echo "Error copying<br/>";
 } else {
 echo "File copied<br/>";
 }
}
?>

実際に実行して、設定した値に問題がないことを確認した上で、42行目のコメントをはずして実行する。ブラウザからMyBBのトップの下のmigrate-attachments.phpをアクセスすれば実行される。

実行後はmigrate-attachments.phpを忘れずに削除しておく。

BBcodeの修復

MyBBにインポートされたデータを見ると、表示できないBBcodeはリストを閉じるコードが [/list] から勝手に [/list:u] に書き換わっていることに気づいた。これを [/list] に戻してやれば正常に表示できる。

というわけで、mysqlのコマンドラインから一括変換して簡単に修復。

# mysql -u root -p
Enter password:
mysql> use mybbdb;
mysql> update newforum_posts set message=replace(message, "[/list:u]", "[/list]");
mysql> quit;
#

テーマのインストール

ちょっとめんどくさい。

  1. 公式サイトのテーマダウンロードページから、好みのテーマを選んでダウンロード。
  2. ZIPファイルを解凍。
  3. テーマ名\Upload\imagesの下にあるフォルダをMyBBのimagesの下にディレクトリ構成をたもったままコピー。
  4. MyBB のAdmin CPのTemplate&Styles > Import Themeで、Import fromに解凍したテーマの中にある.xmlファイルを指定し、「Ignore Version Compatibility」にチェックして「Import Theme」をクリック。

PCからアップロードする前提の処理になっているのが面倒。サーバ上での操作だけで簡単にインストールできたら良いのに。

タイトルとURLをコピーしました