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の記事バックアップ機能なんかだと,プラグインや一部のファイルは移行されないので,結構しんどいと思います.

Ruby on RailsによるWEBシステム開発、Android/iPhoneアプリ開発、電子書籍配信のことならお任せください この記事を書いた人と働こう! Ruby on Rails の開発なら実績豊富なBPS

この記事の著者

morimorihoge

高校卒業後,学生をやりながらずっとWebアプリ開発に携わってきました.2010くらいまではPHP/Symfonyプログラマでしたが,それ以降のWeb開発はRailsほぼ一本に宗旨替えしました.開発とは別にサーバ構築・運用も10年以上やってきているので,要件定義から設計・実装・環境構築・運用まで一通り何でもこなせます.開発以外では季節により大学でWebサービス開発やプログラミング関連の非常勤講師もしており,技術の啓蒙・教育にも積極的に関わっています.最近はPM的な仕事が増えていますが,現役開発者としていつでも動ける程度にはコードもサーバも弄る日々を送っています.AWS 認定ソリューションアーキテクト – アソシエイトレベル取りました

morimorihogeの書いた記事

週刊Railsウォッチ

インフラ

BigBinary記事より

ActiveSupport探訪シリーズ