LOGIN ID Password Auto Login Register Now! Lost Password?
XOOPS2BasicManual
About XOOPS
JavaScriptをOnでご覧ください。

9.2 データの移動について

ホスティングサービスを変更する場合など、XOOPSサイトを移動する場合も多いと思います。
「同一サーバ内で深さが変わる場合にどうしたらよいか」とか「ホスティングサービスを変更する場合にどうしたらよいか」等の事例にそった解説はありがちですが、本マニュアルでは、もう少し本質的なデータ移動について解説べます。

まず、データと呼べるものには、3種類あります。

  • データベース内のデータ
  • サイト管理者がFTP等であらかじめ用意したシステムファイル
  • サイトを運営している間に蓄積されたユーザファイル
データベース内のデータの移動

XOOPSはデータベースアプリケーションであり、基本的に、意味のある「データ」は、データベースに取り込まれていきます。問題は「データベース」には、大きく分けて以下の3つの意味があることで、これにより初心者はたいてい混乱をきたします。

  • テーブルの上位概念(テーブルがファイルとすればフォルダにあたるもの)
  • データベースエンジン (MySQLとかPostgreSQLのこと)
  • データを意味づけして集めたもの(概念としてのデータベース)

XOOPSでデータベースという用語を使った場合、大抵は、「テーブルの上位概念」を意味すると思ってください。XOOPSでは、数多くのテーブルを利用しますが、それはすべて一つの上位概念に含まれています。

XOOPSが利用しているテーブルすべてをバックアップ・リストアすることが、ここでの、データベース内データの移動という意味です。通常は、テーブルに 対する一般的な上位概念である「データベース」単位での扱いとなりますが、XOOPSの場合、テーブル名に統一的なprefixをつけることで、一つの データベースの中に、prefixで区別されるいくつものテーブルセットを持つことができますので、prefix毎のテーブルセットとしてバックアップす るのも良いでしょう。

データベース ... (ルートデータの中に複数持てる)
┗ prefix毎のテーブルセット ... (データベースの中に複数持てる)
┗ テーブル ... (同一のprefixを持ったテーブルが数十〜数百個ある)

データのエクスポート(バックアップ)

エキスポートもバックアップも本質的には同じ意味です。後からインポートできるようなエクスポートデータでなければ、バックアップとしての意味もないからです。

まずは、データをダンプします。mysqlコマンドラインが利用できるのであれば、一番お手軽でしょう。シェルから以下のようにします。

# mysqldump --add-drop-table -u (データベースユーザ名) -p (データベース名) >(ダンプ先ファイル名)

php MyAdminにももちろんバックアップ機能はありますし、ProtectorモジュールにもHTTP経由のデータベースダウンロード機能があります。後者には、prefix毎のバックアップ機能があるので、より効率的に利用できます。

データ内容の書き換え

まずは、エクスポート(バックアップ)ファイルの原本を、複数種類のメディアにコピーしておきましょう。

次に、移設先のデータベースにインポートするのですが、その前に、出来ればやっておきたいのが、データ内容のアップデートです。例えば、

http://www.example.com/

で運用していたサイトを、

http://www.example.jp/

に移し替える場合、データ内にある、www.example.comをwww.example.jpへと一括変換しておくと、リンク切れを防ぐことができます。移設前と移設後で、パスの深さが異なる場合も、これと同様の処理を行う必要があるかもしれません。

本来は、データそのものに、そういった絶対記述のURIが含まれないのがベストです。可能な限り、[siteurl]タグを利用するなどして、相対パスでコンテンツを作っておくと、後からの移設も簡単になると思います。

なお、ホスティングサービスの移行が目的で、URIに変更がないケースであれば、この作業はまったく必要ありません。

データ内容のインポート

まずは、インポート先のデータベース内に、テーブルが含まれていないことを確認してください。もちろん含まれていても良いのですが、インポートによって影 響が受けないことを確認する必要があります。XOOPSの場合、全てのテーブルに、同じprefixがついていますので、同じprefixを持つテーブル が存在するかどうかで判断することも可能でしょう。

移設先にデータをインポートする場合、mysqlコマンドラインが利用できれば簡単です。

# mysql -u (データベースユーザ名) -p (データベース名) <(ダンプファイル名)

php MyAdminにも、リストア機能はありますので、必要に応じて利用してください。

バックアップ時に、--add-drop-table オプションを加えてあれば、なんらかの理由でインポートをやり直す時にも、前にインポートしたデータが同時に消されるので、問題なく再インポートできま す。そうでない場合に、再インポートするのであれば、先に同一prefixのテーブル群を一通り消しておく必要があるでしょう。前のデータベースが残って いたら、今度は、--add-drop-tableをつけて、再度エクスポートした方が早いかもしれません。

システムファイル

基本的には、ツリー構造を保ったままダウンロードして、その構造を保ったまま移設先にアップロードするだけです。

Macユーザは、この時にもファイル名長問題が起こりえることを忘れないでください。

ユーザファイル
意外と移設が難しいのが、サイト運営中にファイルとして蓄積されたユーザファイルです。おそらくは、システムファイルをツリー構造ごとダウンロードすると きに、これらもダウンロードされてきますが、どれがユーザファイルで、どれがシステムファイルか、あらかじめ確認しておくのが良いでしょう。
パーミッションの確認

システムファイル・ユーザファイルとも、移設先サーバにアップロード後にパーミッションを確認する必要があります。

特に注意すべきは3点。

cache/
templates_c/
uploads/

このディレクトリが書込許可になっていることを確認してください。

cache/ および templates_c/ 内に存在するファイルについては、index.html や .htaccess を除き、アップロード時に削除しましょう。これらは必要に応じて再生成されますし、旧サーバで生成されたキャッシュでは不都合があるケースもあるからで す。

一方、中身を勝手に削除できないのが、uploads/ディレクトリです。uploadsディレクトリ内のディレクトリやファイルについては、アップロード後にパーミッションを777(ファイルは666)にしなくてはいけないものも多いと思われます。

これは、PHPがどのモードで動いているかに依ります。Apacheモジュール版であれば777(666)への変更が必要、CGI版であれば755(644)のままでOKです。


Previous
9. その他の使い方
Top of contents Next
9.3 デバッグモードの使い方
Back to Page Top
MainMenu
Manuals
Search
XOOPS Official & Dev.
XOOPS Communities