いよいよWordPressのデータを移行します。ここが一番苦労したのですが、どうも統一的なやり方がないのかもしれません(といっても、ディレクトリの階層構造とApacheがアクセスしてくる位置だけ気をつければ大丈夫な気がしますが)。ここでは自分がやった方法をメモしておきます。ただ、なんだかんだ言っても、結局は概ねここに書いてある方法なんですけどね・・・。
1.元サイトからのコンテンツのデータベース以外のデータ(画像など)吸い上げ
ftpなどで対象のWordPressのデータベース以外のコンテンツを吸い上げます。phpのコードもまとめて吸い上げてしまいます。
この時、WordPressがインストールされているディレクトリ(wp-config.phpがあるディレクトリ)の一つ上のディレクトリから吸い上げます。「.htaccess」や「index.php」などが必要な感じだからです。
できればシェルを使って非表示のファイルなども漏れなく吸い上げたかったのですが、残念ながら元サイトではシェルは使えないので、gFTPで吸い上げました。
2.元サイトのデータベースからコンテンツ本体(テキストデータ)を吸い上げます
phpMyAdminを使って、データベースから対象となる接頭辞のついたデータをエクスポートします。エクスポートの方法はこちらを参照。この時、テキストで吸い上げます。(ただ、戻すときに8Mを越えるとどうやって戻すのか分かりません。テーブルをわければいいのかな?)
ホスト名が変更になる場合には、吸い上げたデータをテキストエディタ(gedit)で開いて、ホスト名を全置換しておきます。
3.新サイトのデータベースにコンテンツ本体を送り込みます。
インポートするファイルの最大サイズを大きくするため、先に /etc/php.ini を編集し、
upload_max_filesize = 2M
を2Mから8Mに変更します(8Mが最大のようです)。その上で、新サイトのphpMyAdminでエクスポートしたデータをインポートします。
4.元サイトから吸い上げておいた補助データを戻します
対応するディレクトリの位置関係に気をつけながら補助データを新サイトに戻してやります。この時 wp-config.php だけは上書きしないでそのまま使います。移行時はパーミッションが変化しないよう気をつけます。
転送が終わったら、
# chown -R apache:apache (対象ディレクトリ)
でオーナーを適切に変更しておきます。
5.httpd.confを編集します
/etc/httpd/conf/httpd.confを編集します。
1) rewrite_module を有効にします。
有効にしないと .htaccessが機能せず、トップページ以外は404になるようです。
2) VirtualHostの設定をディレクトリ構成に合わせます。
自分の場合は、public_html直下に index.php が存在していて、wordpressのディレクトリを require() する構成になっていました。したがって、ホスト名でアクセスしてきた場合にはこの index.php を読みに行かせるように VirtualHost の設定を行います。
3)コンテンツを置いてあるディレクトリに対して AllowOverride All となっていることを確認します。
6.DNSの設定を適切に修正します
ホスト名を変えないで移行する場合にはIPアドレスを修正して、しばらく(数時間?)待ちます。
・・・・というわけで、なんとか移行してみました。
ここ最近、あれこれ実験していたので不安定だったかもしれません。