OpenPne

OpenPne (個人用/会社用sns プログラム)の引っ越し方法

OpenPneは、個人や会社など特定のグループでのコミニュケーションを図るための 手嶋屋さんが開発したレンタルサーバーなどにインストールして使うことのできる sns プログラムです。

最近は、あまり見かけなくなりましたけど出始めたころには fc2(今もやってるのかな?)などフリーブログサービスを行っているところで貸出しもしていました。

フリーサービスのOpenPneは、おいといて、個人ベース、会社ベースで設置したOpenPneは、サーバーをレンタルして使っているとどうしても引っ越しの必要性に迫られます。

データベースの移動(引っ越し)がすごく敷居が高くて(失敗することが多発するから)、私自身もOpenPneの引っ越しを避けて、避けて、避けまくってきましたけど、ここにきて限界。

ですが、最近MySQLの引っ越しになれてきたこともあって、やってみました。結論を言えばめちゃめちゃ簡単。
使うツールを厳選することで楽に作業が行えますので、その作業方法をまとめてみました。

OpenPneの引っ越し方法

OpnePne の引っ越し手順です。
1、スクリプト (OpnePneコア、OpenPne公開部)のバックアップ
2、データベースのバックアップ
3、新しいサーバーへのスクリプトのアップロード
4、新しいサーバーへのデータベースのリカバリー
5、新しいサーバーへリカバリーしたデータベース内のURL変更
6、スクリプト内のURLの変更

以上になります。


OpenPne スクリプト (OpnePneコア、OpenPne公開部)のバックアップ

OpenPne は、コア部分と公開部分とスクリプトグループを2か所に分けて使用するプログラムです。
通常は、OpnePne というフォルダーと実際のsns 公開のフォルダーに設置されています。

一般的には、以下のようになっています。
インストールする場所は指定できるので必ずしもこういった配置ではありません。
どこにあるかを調べるには、公開部分にある config.inc.php を確認してください。

config.inc.php off
<?php
/**
* @copyright 2005-2008 OpenPNE Project
* @license http://www.php.net/license/3_01.txt PHP License 3.01
*/
define('OPENPNE_DIR', realpath('../openpne/')); ←相対位置指定でOpnePneのコアの場所を示している。
require_once OPENPNE_DIR . '/config.php';
?>

2か所にあるスクリプトをFTPでダウンロードします。


OpenPneデータベースのバックアップ

OpenPne のデータベーステーブルのプレフィックス(テーブル名の接頭語)は、ワードプレスのテーブルのように綺麗に整っていません。
これが OpenPne のデータベースの取扱に苦労させられる元凶。

プレフィックスは、以下の4種類。
  • biz_
  • c_
  • mail_
  • portal_

統一されていれば処理もしやすいってもんですが。
いずれにしても、この4つのプレフィックスを持つテーブルをバックアップする必要があります。

MySQLのバックアップ方法はいくつかありますが、基本系は、サーバー備え付けの phpMyAdmin のエクスポートを使います。

phpMyAdmin のログインIDとか忘れた場合は(--メ OpnePneのスクリプトコアにある、config.php に記載されています。
config.php
// DBサーバ設定
$GLOBALS['_OPENPNE_DSN_LIST']['main'] = array(
'dsn' => array(
'phptype' => 'mysql',
'username' => 'データベースユーザーID',
'password' => 'データベースユーザーパスワード',
'hostspec' => 'データベースホスト',
'database' => 'データベース名',
'new_link' => false,
),
);

phpMyAdmin にログインしてデータベースを選択して

エクスポートをクリックします。

可能なオプションを全部表示、ターゲットになるプレフィックスを持つテーブル名をすべて選択します。
※サイズが大きくてエクスポートできなかったり、引っ越し先で読み込めなかったりする場合には、1テーブルづつダウンロード、アップロードしてみてください。

テーブル選択以外は、特に設定せずデフォルトのままで構いません。(余計なことして痛い目を見ないように)

「実行」を押してデータベースのバックアップファイルをダウンロードします。


新しいサーバーへのスクリプトのアップロード

FTPを使用して スクリプトコア、公開部を新しいサーバーへアップロードします。
このとき相対位置関係を変えるとあとで手間がかかりますので、相対位置関係を保ったままでアップロードしてください。
つまり、スクリプトコアの位置が公開部スクリプトの2つ上の階層にあるならば、その2つ上という関係は崩さないように。サーバーの関係でその上はない!ということなら、かえてもかまいませんが、あとで config.inc.php のdefine(‘OPENPNE_DIR’, realpath(‘../openpne/’)); を書き換えてください。


新しいサーバーへのデータベースのリカバリー

新しいサーバーに空のデータベースを作ります。

空のデータベースを選択してから、インポートをクリックします。
※既存のデータベースに追加する形でもかまいませんが、失敗したとき既存のデータに影響が出る可能性があるので(間違って消しちゃったとか)できれば、まっさらなデータベースを準備した方がいいです。


インポートは、特に設定する必要がありません。
ダウンロードしてあるバックアップファイルを「ファイル選択」で選択して「実行」を押します。
※テーブルを1つつづつダウンロードした場合は、1つづつインポートしていきます。
※この時点でエラーが出る場合は、エクスポートからやり直してください。
※それでもだめな場合、データベースの別のバックアップ/リカバリー方法を使用するしかありません。
※様々なバックアップ/リカバリ方法は、後日掲載の予定です。

新しいサーバーへリカバリーしたデータベース内のURL変更

ドメインのサーバーを変えるために引っ越しを行う場合は、同一ドメインとなるのでデータベースの情報設定以外特に作業は必要ありません。(スクリプトコアにある config.php のデータベース設定値を変更する。

データベース内の文字列変換は、置換テストの行えるツール Search-Replace-DB-master が便利です。
Search-Replace-DB-master ダウンロード
サーバーにアップロードして(解凍するのを忘れずに)起動します。
http://アップロード先URL/Search-Replace-DB-master

replace : 引っ越し元のURLを入れます。 ex. http://sns.yuzumaru.co.jp/
with : 引っ越し先の URL を入れます。 ex.http://yuzumaru.org/sns/
name : データベース名を入れます。
user : データベースユーザーIDを入れます。
pass : データベースユーザーパスワードを入れます。
host : データベースのホストもしくはホストアドレスを入れます。 ex.sv1.leo.server

入力ができたら、「update details」をクリックして入力値を反映させます。

「dry run」で置き換えの確認を行います。(見てもたぶんわからないと思うので正常に動いたかを確認する程度)

確認できて、覚悟ができたら、「live run」をクリックしてデータベース内のURLの置き換えを行います。
※このときポップウィンドウがでてびっくりしますけど「やっていんだな?」って確認なので「OK」で進めてください。
置き換え中は、終わるまで放置してください。まちがってブラウザを閉じたりするとデータベースが壊れる可能性があります。
壊れても作業やり直せばいいだけですけどね。

スクリプト内のURLの変更

スクリプト内のURLは、SNS管理者が設定したメニュー下CMなどのURLを除いて、config.php の中身だけになります。
スクリプトコアの config.php を開いて以下の部分を書き換えてアップロードします。
config.php
//// サーバー管理設定 ////
//— 必須設定
// Web上の絶対パス(URL)(最後にスラッシュを付けてください)
define('OPENPNE_URL', '引っ越し先の URL'); // ex.http://yuzumaru.org/sns/
// DBサーバ設定
$GLOBALS['_OPENPNE_DSN_LIST']['main'] = array(
'dsn' => array(
'phptype' => 'mysql',
'username' => 'データベースユーザーID',
'password' => 'データベースユーザーパスワード',
'hostspec' => 'データベースホスト',
'database' => 'データベース名',
'new_link' => false,
),
);
// DB暗号化キー(56バイト以内のASCII文字列)
define('ENCRYPT_KEY', '———–');
// メールサーバードメイン
// 携帯メール投稿の宛先などのドメイン名に使われる
define('MAIL_SERVER_DOMAIN', 'ドメイン'); // ex.yuzumaru.co.jp

動作確認

新しいURLの管理者ページへログインします。
http://引っ越し先URL/?m=admin&a=page_login
管理者ID,パスワードを忘れた場合は、、、知りません(--メ

ざっと確認して文字化けなどが起こっていなければOKです。
文字化けが起こっている場合、かなり厄介です。
引っ越し元のキャラクタセットと新しい方のデータベースのキャラクタセットが一致していない可能性があります。
引っ越し元の phpmyadmin に入ってキャラクタセットを確認し、引っ越し先のデータベースを一度削除して、再作成、その時キャラクタセットを引っ越し元のキャラクタセットと一致させるよう切り替えて作成します。あとは、同じ作業方法です。

また、データベースが欠落していて動かない場合もありますが、引っ越し元でデータベースが既に壊れている可能性があります。その場合、目で壊れているところを確認してとか値を推測してテスト・・・といった作業になりますので、知識がない場合は、泣いてください。

管理者ページにログインできたら、ユーザーログインで動作の確認をしてください。

よほど引っ越し先のサーバーがへなちょこでなければ問題なく動きます。


OpenPneの引っ越しまとめ

作業手順は、いわば引っ越し。
データベース、スクリプトを引っ越し先に移動させて、それぞれに書き込まれているURLを新しいものに書き換えるだけです。

OpenPne の引っ越しで厄介なのは、その構成とプレフィックス。もともとの設計思想?が今一つ理解しがたくかなり敷居が高いですけど、引っ越しにおいて実際に触るところはほとんどありません。

引っ越し元のデータを壊しさえしなければ、失敗しても何度でもトライできますので、やってみる価値は十分にあると思います。

以上、お試しあれ。


スポンサーリンク