XOOPS Cube Legacy(XCL)で構築したシステムを、丸ごと別のサーバーに移設(移行?)しました。
ドメインはそのまま使用するので、サーバー間のデータの移動だけです。
データベースの扱いにほとんど慣れてなかったので、「大変だろうなー」と思ってはいましたが、思った以上に大変でした。
ので、手順やら注意点やらをまとめておきます。
何も見ずにもう一度やれって言われても、たぶんムリっす。
諸々のバージョンやら
- XOOPS Cube Legacy 2.1.4
- phpMyAdmin 2.11.6[移動元・移動先共]
- MySQL 4.1.10a[移動元]、5.0.22[移動先]
- PHP 4.3.8[移動元]、 5.1.6[異動先]
- MacOSX 10.4.11
- Cyberduck 3.0.3
大まかな手順
- [移動元・移動先]データベース名やユーザ名などの情報を準備。
- [移動元]phpMyAdminでデータをエクスポート。
- [移動元]FTPソフトを使って、「xoops」および「xoops_trust_path」フォルダのデータをダウンロード。
(「xoops_trust_path」はD3モジュールを使用している場合) - [移動先]phpMyAdminでデータをインポート。
- 「xoops」フォルダ内の「mainfile.php」を、移動先のデータベースに合わせて編集。
- 「xoops」フォルダ内の「cache」「templates_c」内のキャッシュファイルを削除。
- [移動先]FTPソフトを使って、「xoops」および「xoops_trust_path」フォルダのデータをアップロード。
- [移動先]FTPソフトを使って、アップロードしたファイルのパーミッションを確認・設定。
[移動元・移動先]データベース名やユーザ名などの情報を準備。
後で調べるのは何かと時間がかかって手間なので、事前に情報を集めておきます。
移動元の情報を入力したりすることはないのですが、現在の設定と比較しながら進めた方が分かりやすい場合もあるので、なるべく用意しておいた方が吉。
最低限必要と思われるのは以下の通り。
()内は、「mainfile.php」で編集する項目(定数?)の名称です(詳細後述)。
- データベース名(XOOPS_DB_NAME)
- ユーザ名(XOOPS_DB_USER)
- パスワード(XOOPS_DB_PASS)
- ホスト名(XOOPS_DB_HOST)
- フルパス(XOOPS_ROOT_PATH、XOOPS_TRUST_PATH)
[移動元]phpMyAdminでデータをエクスポート。
移動元のサーバーからデータベースの中身を丸ごとファイルに保存します。
僕はSQL言語はサッパリなので、ここは大人しくphpMyAdminを使用。
それでもよく分からないので、設定はほとんど触っていません。
具体的な手順としては、以下。
- phpMyAdminにログイン。
- 該当データベースを選択。
- 上部メニューの「エクスポート」をクリック。
- 「DB のダンプ(スキーマ)表示」という枠の中にある「エクスポート」という枠に、存在しているテーブル一覧が表示される。
そこで、前回XOOPSをインストールしたときに設定したprefix(接頭辞)が付いているテーブルを何も考えずに選択(考えたって分からないし)。
もしprefixが分からないときは、mainfile.php内の「XOOPS_DB_PREFIX」に設定した値を参照のこと。 - 「ファイルに保存する」のチェックを入れる。
このチェックが外れたまま実行しても、エスクポートしたデータが長々とウィンドウに表示されるだけ。 - その他の設定はそのままで、「実行する」ボタンをクリック。
ファイルの保存先を決めて「保存」ボタンをクリックすれば、エスクポートしたデータのファイルが出来上がります。
エクスポート自体の処理は、さほど時間はかからず。
出来上がったファイルも2MB弱と、意外に軽量でした。
でもサイトの規模が大きくなれば、すっごい時間がかかったりするんだろうなぁ。
[移動元]FTPソフトを使って、「xoops」および「xoops_trust_path」フォルダのデータをダウンロード。
ここでもあまり深く考えずに、移動元のサーバーにログインしたら「xoops」と「xoops_trust_path」フォルダのデータを丸ごとダウンロードしましょう。
ただ、ソフトの問題なのかファイルやフォルダの数が多すぎるからなのか、一気に済まそうとすると何となく動作が不安定に。
そこで、事前に「xoops」と「xoops_trust_path」フォルダをダウンロード先に作っておいて、念のため小分けにしながらファイルとフォルダをダウンロードしました。
データベースのエクスポートと違って、こちらはえらい時間がかかります。
1MBにつき1分強くらい。合計で1時間は軽く超えてしましました。
しかも余計な負荷をかけたらまた不安定になりそうなので、ダウンロード中に他の作業はできず。
時間に余裕があるときや、休憩の間にやってしまった方が良いでしょうね。
[移動先]phpMyAdminでデータをインポート。
エクスポートの逆ヴァージョン。
phpMyAdminがインストールされていない場合は、事前に準備しておきましょう。
→The phpMyAdmin Project
- phpMyAdminにログイン。
- 該当データベースを選択。
- 上部メニューの「インポート」をクリック。
- 「インポートするファイル」の枠内で、先ほどエクスポートしたファイルを選択。
- その他の設定はそのままで、「実行する」ボタンをクリック。
これもそんなに時間はかからなかったです。
「xoops」フォルダ内の「mainfile.php」を、移動先のデータベースに合わせて編集。
ダウンロードしたファイル類は、基本的にはそのまま移動先のサーバーへアップロードします。
ただ、その前に「mainfile.php」内のデータベースに関する設定は変更する必要があります。
ここで、事前に準備した情報を使うワケですね。
設定を変更する項目は以下の通り。
- XOOPS_ROOT_PATH … 「xoops」フォルダの位置。フルパスで指定。
- XOOPS_TRUST_PATH … 「xoops_trust_path」フォルダの位置。フルパスで指定。
- XOOPS_URL … XOOPSのトップページURL。
- XOOPS_DB_HOST … ホスト名。
- XOOPS_DB_USER … ユーザ名。
- XOOPS_DB_PASS … パスワード。
- XOOPS_DB_NAME … データベース名。
尚、以下の項目は、前回のインストール時に設定したまま残しておきましょう。
データベースとの関連もあるので、変に触ると怖いです。
- XOOPS_DB_PREFIX … データベースのテーブルに付けるprefix(変更不要)。
- XOOPS_SALT … システムで使用する定数らしいです(変更不要)。
今回はドメイン移管前の作業だったため、XOOPS_URLにはとりあえずIPアドレスを入れました。
後で書き替えないといけないですね。
「xoops」フォルダ内の「cache」「templates_c」内のキャッシュファイルを削除。
システムが稼働している間に溜まったキャッシュファイルを、サーバーにアップロードする前に削除しておきます。
旧サーバーで作られたキャッシュが残っていると、不具合が発生することもあるとのこと。
「index.html」や「.htaccess」以外の、キャッシュはすべて削除しておきましょう。
[移動先]FTPソフトを使って、「xoops」および「xoops_trust_path」フォルダのデータをアップロード。
ダウンロードの逆ヴァージョン。
移動先のサーバーにログインして、「xoops」と「xoops_trust_path」フォルダのデータをすべてアップロードします。
ここでも念のため小分けにしました。
ダウンロードのときほどではないですが、それでもやはり時間は相当かかります(数十分程度)。
計画的に進めたいですね。
[移動先]FTPソフトを使って、アップロードしたファイルのパーミッションを確認・設定。
すべてのファイルをアップロードした後、以下のファイルおよびフォルダのパーミッションを確認・設定します。
- mainfile.php … 書き込み不可(444)に
- 「cache」フォルダ … 書き込み可能(777 or 666 ※)に
- 「templates_c」フォルダ … 書き込み可能(777 or 666 ※)に
- 「uploads」フォルダ … 書き込み可能(777 or 666 ※)に
※PHPがApacheモジュール版の場合。CGI版の場合は755 or 644に。
もし違っていれば、変更してください。
作業完了
これで、データの移動と設定が完了しました。
新サーバーのXOOPSインストール先URLにブラウザでアクセスして、表示を確かめてください。
課題・疑問・解決
d3blogに関するWarning
データ移動直後、以下のWaring文が表示されました。
Warning [PHP]: opendir(フルパス/xoops/modules/ページ名/images/caticon) [function.opendir]: failed to open dir: No such file or directory in file class/xoopslists.php line 113
どうやらd3blogモジュールでのみ発生していたため、管理画面から色々と見て回ることに。
すると、「一般設定」の中にそれらしい項目を発見。
「モジュールロゴファイルのパス」と「カテゴリアイコンを置くディレクトリのパス」で絶対パスを指定していたので、その前半部分をXOOPS_ROOT_PATHと同じフルパスに変更しました。
結果、解決!
見事にWarning文は消えてくれました。
multimenuに関するURL設定
サイドメニューのコンテンツ部分はちゃんと「XOOPS_URL」で設定した値(IPアドレス)になっているのに、なぜか「ホーム」だけがドメイン名のまま。
これもいろいろ見て回ったのですが、原因はメニュー管理モジュールの「multimenu」でした。
サブメニューや表示順の管理で大変重宝しているモジュールなのですが、ここで「ホーム」のリンク先をドメイン名にしていたワケですね。
他のコンテンツ部分はmultimenuモジュール独自の書式で設定しているため、自動的に「XOOPS_URL」の値を拾ってきてくれるのですが、「ホーム」だけは直に書き込んでいたのでした。
まぁIPアドレスで運用する期間がなかったら必要のない修正なのですけどね。
これもドメイン移管したらまた変更しないといけないのですが、なんか忘れそうで怖い……。
ドメイン移管後にする作業(備忘メモ)
- 「mainfile.php」の「XOOPS_URL」を、ドメイン名に変更。
- 「multimenu」の「ホーム」のリンク先URLを、ドメイン名に変更。
(追記:08.12.25)
上記2つドメイン名に変更完了。順調に稼働中。一安心。
ただ、「multimenu」の方はドキュメントルートからの相対パスにすれば良かったと今になって気づきました。
他に何も起こらなければいいけどなぁ。