Tech Racho エンジニアの「?」を「!」に。
  • インフラ

WordPressをサーバ移行するときにドメインを変更する方法

morimorihogeです.

ひょんなことからWordPressのドメインを移行することになったので,ホイホイ,お安いご用でっせ,とちゃちゃっとやろうとしたのですが一筋縄ではいかなかったのでメモ.WordPress 3.5対応です.3.5.1では試してないですが,きっと動くんじゃないかと思います.自己責任で.

世の中に出回っている普通のPHPアプリケーションだと,大体はソースコードと添付ファイルがアップロードされているディレクトリをパーミッションごとコピーして,利用しているDBのdumpを新しいサーバに持っていけば移行できるのですが,WordPressではこの際にドメインが変更されるとうまく動きません(えー.以下の手順で移行することで,既存のデータを保ったまままるっと移行することができます.

移行元サーバでの作業

移行元サーバでやる作業は,

  • WordPressディレクトリ以下丸ごとのバックアップ
  • WordPressデータベースのバックアップ

の二つです.WordPressディレクトリのバックアップを行う際は,WinSCPCyberduckの用なSCPツールを使っても良いですが,GUIなツールはたまにパーミッションを変更してしまうことがある(という偏見を僕が持っている)ので,sshログインシェルが使えるのなら,tarコマンドでバックアップしましょう.WordPressの全ファイルにアクセスできるユーザで実行する必要があるので,とりあえずrootでやるのが手っ取り早いです.

# sshログイン(省略)
$ sudo su -
# パスワード入力(省略)
$$ cd [WordPressのインストールディレクトリ]
$$ tar zcf ~/wordpress_backup.tgz ./

あとは適当にできたtarファイルを取得して下さい.MySQLバックアップもPhpMyAdminみたいなものを使いたくなければ,

# sshログイン(省略)
$ mysqldump -u [MySQLユーザ名] -p [DB名] > wordpress_db.dump

とかで作れます.ここで作ったバックアップデータ2つは移行が完全に完了するまで消さないで下さい!後戻りできなくなります.

移行先サーバでの作業

普通のインストール手順と同じ様に,PHPやらMySQLのインストールをします(その辺は省略).
その後,WordPressの移行先ディレクトリにバックアップしたtarファイルを解凍します.

# sshログイン(省略)
$ sudo su -
# パスワード入力(省略)
$$ mkdir -p [WordPressのインストールディレクトリ]
$$ cd [WordPressのインストールディレクトリ]
$$ tar zxf ~/wordpress_backup.tgz
# ※ ディストリビューション変更などでapacheユーザIDが変更された場合のみ
# 以下はUbuntu 12.04LTSの場合(apacheがwww-dataユーザで動作する)
$$ chown -R www-data:www-data ./

次に,MySQL DBのデータをバックアップから復元します.

# sshログイン(省略)
$ mysql -u [MySQLユーザ名] -p [DB名] < wordpress_db.dump

ドメインの移行作業(移行先サーバ)

このままでは冒頭に書いたとおり,DB内のデータが旧ドメインのままなので,データの更新を行います.

WordPress-Domain-Changerのページから「wp-change-domain.php」をコピーし,41行目にある「DDWPDC_PASSWORD」の値を書き換えます(必須).

その後,編集したwp-change-domain.phpを移行先サーバのWordPressルートディレクトリ(wp-config.phpと同じ階層)に置きます.

ここまでできたら「移行先ドメイン/wp-change-domain.php」にアクセスします.すると,パスワードを聞かれるのでDDWPDC_PASSWORDに設定した文字列を入力します.

するとログインして以下の画面が出るので,必要情報を入力して「Change Domain!」を押す.

これでDBの更新自体は完了するので,新しいドメインのWordPressにアクセスしてみて動作確認をし,問題が無ければwp-change-domain.phpを削除して完了です.

この方法でとりあえずうまくいきましたが,プラグインの組み合わせによってはうまく行かないこともあると思うので,その際はまた別の方法を探す必要があると思います.ただ,WordPressの記事バックアップ機能なんかだと,プラグインや一部のファイルは移行されないので,結構しんどいと思います.


CONTACT

TechRachoでは、パートナーシップをご検討いただける方からの
ご連絡をお待ちしております。ぜひお気軽にご意見・ご相談ください。