Usagi Project MyNETS 1.2.0 への移行ガイド

最終更新日: 2008/09/12

目次


0. はじめに

この文書は、OpenPNE 2.4.* から MyNETS 1.2.0 への移行の手順を記載したものです。

現在 2.12.* からのコンバートプログラムを調整しております。リリースまでしばらくお待ちください。

上記をご確認の上、移行を行うようにしてください。

1. 手順

移行は以下のような手順で進めます。

  1. メインテナンスモードへ切り替え
    (config.php[define('OPENPNE_UNDER_MAINTENANCE', true);])
  2. 現在のデータベースをバックアップ
  3. コンバート SQL の実行
  4. コンバートスクリプトの実行
  5. ソースコードの置き換え
  6. 設定ファイルの変更
  7. 携帯メール投稿設定の変更
  8. 運用モードへ切り替え
    (config.php[define('OPENPNE_UNDER_MAINTENANCE', false);])

2. 作業方法

MyNETS 1.2.0 より、「3. アップグレード SQL の実行」および「4. コンバートスクリプトの実行」を自動で行うコンバートツールが含まれています。コンバートツールを利用するには、convert/README.txt を参照ください。

実行が終わったら、または使用しない場合、convert/ディレクトリは削除するか別の名前へ変更するようにしてください。

コンバートツールはまだまだ調整が必要です。特にDBが肥大化しているケースにおいては、メモリ不足などにより正常にPHPが実行できず、画面が途中で停止してしまう可能性があります。ご利用においては、必ず「テストDB」を用意して実行するようにしてください。

2-1-1. コンバート SQL の実行

OpenPNE から移行するには、 をまず実行します。

MySQL のバージョンによって sql ディレクトリの下のディレクトリを選択してください。ご使用の MySQL のバージョンにあったディレクトリ以下のファイルを実行してください。

次にsetup/sql/README_c_image_convert.txt を開いて、注意書きを確認してください。

ここの説明の下にあるSQLをすべて実行することでコンバートが完了します。

2-2. ソースコードの置き換え

サーバ上に MyNETS 1.2.0 のソースファイルを設置します。 詳しくは、「MyNETS セットアップガイド」の「1. ファイルの設置」を参考にしてください。

MyNETS 1.2.0 では、OpenPNE からディレクトリ構成が変更され、public_html が廃止されています。確実にソースコードを入れ替えるようにしてください

2-3. 設定ファイルの変更

MyNETS で追加された設定ファイル(config.php)の設定項目

※config.php は、MyNETS に含まれる config.php.sample を元に変更し作成されることを推奨します。
尚 MyNETS 1.2.0 ではディレクトリの構成が変更となり、public_html が廃止されました。それにより OPENPNE_DIR 直下に conf ディレクトリが用意され、そこへ config.php を保存するようになりました。ご注意ください。

OpenPNEのconfig.phpから内容が変更されているもの

MyNETS独自で設定情報が追加されたもの

/* ここからうさぎちゃん */

// 未ログイン日数を変更(default=3)
//define('LASTLOGIN_DAYS', 7);

// どのDBモジュールを使用するか ('pne','mysql')
define('MYNETS_DB_MODULE', 'mysql');

// CAPTCHA(画像のなかの文字列をメンバーに入力させる認証方式)を使用するかどうか
define('MYNETS_USE_CAPTCHA', true);

//最新日記の表示を一人1件とする場合はtrue,すべて出す場合はfalse
define('DIARY_DISTINCT_LIST',false);

//コミュニティの更新表示を1コミュニティ1件とする場合はtrue,すべて出す場合はfalse
define('COMMU_DISTINCT_LIST',false);

//外部公開日記を行う
define('MYNETS_OPEN_DIARY', true);

//外部公開コミュニティを行う(現在外部コミュページ未実装)
define('MYNETS_OPEN_COMMU', false);

//HOMEのカレンダーを本日起点とする。日曜起点の場合はfalse
define('DISPLAY_SCHEDULE_WEEK', false);

//サイドブロック情報を表示するかしないか
//表示するには define('USE_EXT_DIR', true); に設定する必要あり
define('DISPLAY_SIDE_BLOCK', false);

//サイドブロックをログイン前に表示するかどうか
define('DISPLAY_SIDE_BLOCK_WITHOUT_LOGIN', false);

//サイドブロックで表示する情報
$GLOBALS['MYNETS_DISABLE_SIDE_VIEW_MODULES'] = array(
    'newdiary'  => true,
    'newtopic' => true,
    'newevent' => true,
    'newreview' => true,        //現在表示設定なし
    'newcommunity' => false,    //現在表示設定なし
    'newmember' => true,
    'onlinemember' => true,
);

//会員が新規登録した際に、管理者へメールを送信するかしないか
define('ADMIN_INVITE_MAIL', false);

// ニュースを表示するか否か
define('DISPLAY_NEWS_BLOCK',true);

// ニュースのもっと見るでGoogleニュースのトピック別ニュースを表示するか否か
define('DISPLAY_GOOGLE_TOPIC',true);

// 認証前、ログインページなどでニュースを表示するか否か
define('DISPLAY_NEWS_BLOCK_WITHOUT_LOGIN',false);

// ニュースフィードのキャッシュの場所
define('NEWS_CACHE_DIR',OPENPNE_RSS_CACHE_DIR);

// ニュースフィードの取得制限時間(秒)
define('NEWS_CACHE_LIMIT',1800);

// ニュースフィードのURLリスト
// RSS1.0/RSS2.0/Atom1.0形式のフィードを返すURLを指定してください。
// キーとURLという形で複数指定することも可能ですが、実際に使用するURLの分だけ処理が重くなります。
// 以下はサンプルのURLです。使用する行の先頭の「//」(コメントアウト)を削除し、使用しない
// 場合には、先頭に「//」を記述して下さい。
$GLOBALS['NEWS_FEED_URL_LIST'] = array(
    'GoogleNews-Popular' => 'http://news.google.com/news?hl=ja&ned=ja&ie=UTF-8&oe=UTF-8&output=atom&topic=po',
//    'goo-Ranking' => 'http://ranking.goo.ne.jp/rss/index.rdf',
);

// ニュース記事のリンク要素から、元記事のURLを取り出す場合の
// URLの正規表現のリスト
// 'pattern'に正規表現を記述し、preg_matchの検索結果の
// $matches[1]にドメイン名、$matches[2]に元記事のURL部分
//  が入る正規表現にする。
// 'urldecode'については、抽出した元記事のURLをURLデコード
// するか否か(true/false)の指定項目。
$GLOBALS['NEWS_EXTRACT_LINK_URL_LIST'] = array(
    'GoogleNews' => array(
                        'pattern'   => '@http://(news\.google\.com)/.*url=([^&]+)@i',
                        'urldecode' => true,
                    ),
    'GooRanking' => array(
                        'pattern'   => '@http://(plus\.goo\.ne\.jp)/rnkredir/redir\.php\?.*to=(http%3A%2F%2F.+)@i',
                        'urldecode' => true,
                    ),
    'Yahoo!News' => array(
                        'pattern'   => '@http://(rd\.yahoo\.co\.jp)/[^\*]+\*(http://.+)@i',
                        'urldecode' => false,
                    ),
    'RSSNavi' => array(
                        'pattern'   => '@http://(www\.rssnavi\.jp)/r/\?.+(?:&|&)u=(http.+)@i',
                        'urldecode' => false,
                    ),
);

// 広告などのURLをニュース記事から除去するための、URLの正規表現のリスト
// デリミタは「/」でも何でも良いが、正規表現であることが条件
$GLOBALS['NEWS_REMOVE_LINK_URL_LIST'] = array(
    '@http://www\.pheedo\.jp/click\.phdo\?a=@i',
    '@http://ck\.jp\.ap\.valuecommerce\.com/.+@i',
);

// 広告などの項目をニュース記事から除去するための、タイトルの正規表現のリスト
// デリミタは「/」でも何でも良いが、正規表現であることが条件
$GLOBALS['NEWS_REMOVE_TITLE_LIST'] = array(
    '/^AD[:|:]/i',
    '/^PR[:|:]/i',
    '/^\(AD\)/i',
    '/^配信日時/',
    '/^ダイジェストニュース:製品情報/',
);

// ニュースを取得する件数
define('NEWS_FEED_MAX',10);

// ニュースのテキスト(概要)を省略する位置(文字数)
// 省略文字も含んだ長さにすること
define('NEWS_DESCRIPTION_LENGTH',200);

// ニュースのテキスト(概要)を省略したことを表す文字列
define('NEWS_DESCRIPTION_ETC','...');

// Proxyサーバの設定(ENABLE_PROXY以外は小文字)
// ENABLE_PROXY ... Proxyを使用するか否か(true/false)
// proxy_host   ... Proxyサーバのホスト名またはIPアドレス
// proxy_port   ... Proxyサーバのポート番号(80番や8080、8888など)
// proxy_user   ... Proxyサーバを利用する際のユーザ名(通常不要)
// proxy_pass   ... Proxyサーバを利用する際のパスワード(通常不要)
$GLOBALS['NEWS_PROXY_CONFIG'] = array(
    'ENABLE_PROXY'  => false,
    'proxy_host' => 'localhost',
    'proxy_port' => 8080,
    'proxy_user' => '',
    'proxy_pass' => '',
);

// 複数のニュースを結合してキャッシュする(true)か否(false)か
// ニュースの保存に時間がかかるようになるが、読み出しは速くなる。
define('NEWS_CACHE_MERGE',true);

// キャッシュがNEWS_CACHE_LIMITより古い場合に収集する(true)か否(false)か
// falseの場合は常にキャッシュから読み込む。(キャッシュがない場合だけ収集)
// false指定の場合は、cronなどでキャッシュを更新しないと意味がないので注意。
define('NEWS_COLLECT_FEED',true);

// shima3BBCode入力支援モジュールを入力に使用する(true)か否(false)か
// 使用するには define('USE_EXT_DIR', true); に設定する必要あり
define('BBCODE_USE_FOR_INPUT', true);

// shima3BBCode入力支援モジュールでscript.aculo.usを使用する(true)か否(false)か
define('BBCODE_USE_SCRIPTACULOUS', true);

// Fesly開発のBBCode入力支援モジュールを入力に使用する(true)か否(false)か
// 使用するには define('USE_EXT_DIR', true); に設定する必要あり
define('BBCODE_USE_FOR_INPUT_FESLY', true);

// ホームで表示するインフォメーションの件数
define('ADMIN_INFO_NUM',3);

// 携帯でのオートログインを有効にするか
define('USAGI_MOBILE_AUTO_LOGIN', false);

// iPhoneを携帯として接続させるかどうか(現在未実装)
define('IPHONE_IS_MOBILE', false);

//海外サーバを利用した場合の日本時間の設定
//利用する場合はコメントをはずしてください。
//putenv("TZ=Asia/Tokyo");

//キャッチオールが使えないサーバーの場合の
//POPアカウントでの処理
define('USE_POP_MAIL', false);
define('POP_SERVER_DOMAIN', 'exsmple.com');
define('POP_SERVER_USER', 'pop username');
define('POP_SERVER_PASS', 'pop password');

//メッセージの本文を受信させるかどうかの設定
define('MESSAGE_BODY_RECIVE', true);

//招待制可能なSNSの場合のみ有効
//QRコードによるコミュニティ経由新規登録を行うか
define('MYNETS_QRENTRY_COMMU', true);
//QRコードによる招待登録を行うか(現在未実装)
define('MYNETS_QRENTRY_MEMBER', false);

//システムでHOOKSを使うかどうか
define('ENABLE_HOOKS', FALSE);

//今日のひとこと・クイックコミュニケーションの名前
define('QUICK_SERVICE_NAME', '一言メッセージをどうぞ!');

* 設置ディレクトリおよび設置スキンのパーミッションを 777 に変更します。
* MyNETS ではスキン画像を DB ではなくディレクトリに保存し、画面表示のレスポンスを向上させる対策を取っています。そのため画像を skin ディレクトリ以下に保存しなければなりません。
新しく自分で作成したスキン画像等をご利用になる場合は「MyNETS セットアップガイド」をお読みになり、ディレクトリ構成をご確認ください。

$ chmod -R 777 OPENPNE_DIR/skin/*/img/

2-4. 携帯メール投稿アドレス設定の変更

MyNETS では、携帯機能強化とともに、メール投稿で扱える機能が大幅に強化されています。

項目新形式旧形式
新規登録 / ログインURL取得 get@MAIL_SERVER_DOMAIN 同左
プロフィール画像変更 pXXX-YYY@MAIL_SERVER_DOMAIN pXXX@MAIL_SERVER_DOMAIN
コミュニティトピックのメール投稿 tXXX-YYY@MAIL_SERVER_DOMAIN tXXX@MAIL_SERVER_DOMAIN
コミュニティトピックのメール作成 eXXX-YYY@MAIL_SERVER_DOMAIN eXXX@MAIL_SERVER_DOMAIN
コミュニティトピックのメール修正 etXXX-YYY@MAIL_SERVER_DOMAIN etXXX@MAIL_SERVER_DOMAIN
日記メール投稿 bXXX-YYY@MAIL_SERVER_DOMAIN blog@MAIL_SERVER_DOMAIN
日記コメントメール投稿 cXXX-YYY@MAIL_SERVER_DOMAIN cXXX@MAIL_SERVER_DOMAIN
日記画像の修正メール投稿 dpicXXX-XXX-YYY@MAIL_SERVER_DOMAIN dpicXXX-XXX@MAIL_SERVER_DOMAIN
コミュニティの管理者の携帯での画像変更投稿 copicXXX-XXX-YYY@MAIL_SERVER_DOMAIN copicXXX-XXX@MAIL_SERVER_DOMAIN
空メールによる携帯アドレス設定 mbentry@MAIL_SERVER_DOMAIN 同左
QRコードによるコミュニティ経由新規登録用アドレス(1.2.0Nigtyで追加) qrcXXX-XXX@MAIL_SERVER_DOMAIN 同左
QRコードによるメンバー紹介新規登録用アドレス(1.2.0で追加;機能未実装) qrm-XXX@MAIL_SERVER_DOMAIN 同左

※上記が MyNETS での携帯メール投稿用のメールアドレスです。運営していた OpenPNE の設定に追加してください。

以上でアップグレード作業は完了です。

3. MyNETS で削除された設定項目

4. MyNETS 1.2.0 と OpenPNE 2.10系までのテーブルの差異

  1. 伝言板用のテーブルが追加されています。(テーブル追加)
  2. 日記のコメント集計方法が変更になり、日記テーブルに数がリアルにカウントされます。(カラム追加)
  3. 足跡集計方法が変更になり、足跡テーブルを常に集計せず、リアルに会員テーブルに数がカウントされます。(カラム追加)
  4. 日記閲覧用のテーブルが追加されています。(テーブル追加)
  5. 日記タグ用のテーブルが追加されています。(テーブル追加)
  6. ランキング集計データ保存テーブルが追加されています。(テーブル追加)
    ※これは現在まだ未稼働で今後変更になる可能性があります。
  7. 足跡テーブルに携帯か PC からの接続の情報が保存されるようになり、足跡一覧を見たときに携帯接続が PC 接続が判別できるようになりました。(カラム追加)
  8. PC 及び携帯用のテンプレートファイルを用意することで、設定画面からメンバーが画面変更を行うことが出来るようになりました。その設定保存のため、c_member にカラムを追加、またテンプレートファイルの内容を保存する c_display_view テーブルが追加されました。
  9. 退会者の管理用テーブルが追加されています。(テーブル追加)
  10. 携帯の画面切り替えを管理するためのテーブルが追加されています。(テーブル追加)
  11. 管理画面からのお知らせを管理するテーブルが追加されました。
  12. バージョンを管理するためのテーブルが追加されました(コンバートツールで利用)。
  13. サイト管理者への問い合わせ、迷惑ユーザーの通報を管理するテーブルが追加されました。
  14. 今日の一言を管理するテーブルが追加されました。
  15. メンバーの画像投稿数、容量、日記の投稿件数などを管理するテーブルが追加されました(現在調整中、機能未実装)。
  16. アクセス数を別途管理するテーブルが追加されました(現在調整中、機能未実装)。
  17. 画像テーブルを分割するためのカテゴリー別のテーブルが追加されました(現在調整中、機能未実装)。

その他、インデックスの更新や、パフォーマンス調整のためのカラムを追加、変更しております。

絶対に独自でカラムを削除したりテーブルを削除しないようにしてください。


以上の内容を確認しながらコンバートしてください。


OpenPNE は株式会社手嶋屋の開発しているオープンソースソフトウェアの名称です。
MyNETS は、ネットを使って多くの開発者が共同で開発している Usagi Project のオープンソースソフトウェアの名称です。
プロジェクト管理者、開発者、開発協力者の情報はプロジェクトホームページをご覧ください。
Usagi Project | SourceForge.jp Usagi Project