久しぶりの WordPress ネタです。
WordPress をサーバーごと引っ越しする場合、大まかな手順としてはこんな感じになると思います:
(1) 引っ越し先サーバーに PHP, MySQL, HTTPD を導入
(2) 引っ越し先サーバーに MySQL 用のデータベースを作成&アクセスユーザーとパスワードを作成
(3) 引っ越し前サーバーの WordPress ディレクトリをまるごと引っ越し先サーバーにコピー
(4) 引っ越し先サーバーの WordPress の設定ファイルを更新
(5) 引っ越し前サーバーから MySQL 用データベースをまるごとエクスポート
(6) 引っ越し後サーバーに (5) のデータをまるごとインポート
(7) データ調整
(1) は引っ越し先サーバーへのミドルウェアのインストールです。Linux 環境であれば yum で簡単にできちゃうと思っています:
この後の手順で WordPress の環境をディレクトリまるごとコピーして引っ越しすることを想定しているので、理想を言えば PHP や MySQL などのバージョンも合わせておければ確実です。逆を言えば、もしうまく動かなかった場合はミドルウェアのバージョン差異を疑ってみてください。ま、よほど昔の環境からの移行、とかでなければ大抵は大丈夫だと思いますが、、、
(2) は引っ越し先サーバー側の MySQL の設定です。DB 名を wp_db、ユーザー名を wp_user、パスワードを wp_pass にするのであればこんな感じ:
(4) は新しい WordPress の設定ファイルの更新です。上記例であれば wordpress/wp-config.php というファイルが設定ファイルなので、これを新しい環境用に(DB接続情報などを)指定します:
ここまでの作業で WordPress 本体の引っ越しは(ほぼ)完了しています。ただ引っ越し先にはデータの中身が全く入っていない状態なので、それを引っ越し前のサーバーから移動させる作業が残っています。(5), (6) がその作業になります。
(5) は引っ越し前サーバーのデータをまとめて取り出す、という作業です。WordPress のデータが入っているデータベースをテーブル設計からまとめてダンプすることになるので、引っ越し前のデータベース名/ユーザー名/パスワードがそれぞれ wp_db / wp_user / wp_pass だったとして、ダンプの出力先ファイルを wp.sql とすると、こんな感じのコマンドを実行することになります。
(6) は (5) で取り出したデータをまとめて (2) で作った引っ越し先のデータベースに入れる、という作業です。(5) で作成した wp.sql を引っ越し先データベースに転送してからこんな感じのコマンドを実行します:
これでデータベースの中身の引っ越しも終わりました。WordPress ディレクトリごとコピーしているのでプラグイン類もそのまま移行されているし、カスタムフィールド等を使っていたとしてもデータベースまるごと移行しているので、そのカスタムデータも含めて移行されているはずです。事実、ここまでの作業でもう引っ越し先の WordPress にアクセスすればデータが参照できる状態になっているはずです。
でも実はここからが本題です。WordPress も、データベースも、どちらも引っ越し前のものを引っ越し後の環境に移動できました。でもこれだけでは足りないのです。それが (7) の作業になります。
実は WordPress は自分自身の動作環境に関わる設定を上記 (4) の設定ファイル以外にデータベース内にも格納しています。その内容は当然引っ越し前のものであり、それをそのまま引っ越し後の環境で使おうとしても正しい設定ではないため、想定外の動作を引き起こす可能性があります。それを調整する作業が必要です。
具体的には、WordPress が(引っ越し前のサーバーで)最初にセットアップした時に収集した情報が、動作のための情報として wp_options テーブル内に格納されています。その情報には「自分自身のURL」が含まれていて、その内容は当然引っ越し前のサーバーの URL になっています。ということは WordPress が自分自身の URL を調べて戻ろうとすると、引っ越し前のサーバーの URL に戻ってしまう、といった動作を起こしてしまいかねないのでした。そういったことが起こらないよう、データベース内の該当データを調整する必要があります。
そのため、最後の (7) の作業としては上記のような引っ越し前サーバーの情報を新しい引っ越し先サーバーの情報に書き換える、ということになります。
具体的な作業としては、引っ越し前サーバーのホスト名が www1.host.co.jp、引っ越し後サーバーのホスト名が www2.host.com だったとすると、引っ越し後の WordPress の wp_options テーブルには(ホスト名が www2.host.com であるにも関わらず)次のような引っ越し前サーバーの情報が格納されているはずです:
これらを新しい引っ越し後サーバーの情報に書き換える必要があります。SQL だとこんな感じでしょうか:
これで WordPress のオプションデータの調整もできました。安心して引っ越し先サーバーで WordPress が使えます。
WordPress をサーバーごと引っ越しする場合、大まかな手順としてはこんな感じになると思います:
(1) 引っ越し先サーバーに PHP, MySQL, HTTPD を導入
(2) 引っ越し先サーバーに MySQL 用のデータベースを作成&アクセスユーザーとパスワードを作成
(3) 引っ越し前サーバーの WordPress ディレクトリをまるごと引っ越し先サーバーにコピー
(4) 引っ越し先サーバーの WordPress の設定ファイルを更新
(5) 引っ越し前サーバーから MySQL 用データベースをまるごとエクスポート
(6) 引っ越し後サーバーに (5) のデータをまるごとインポート
(7) データ調整
(1) は引っ越し先サーバーへのミドルウェアのインストールです。Linux 環境であれば yum で簡単にできちゃうと思っています:
# yum -y install mysql-server php php-mbstring php-mysql httpd
この後の手順で WordPress の環境をディレクトリまるごとコピーして引っ越しすることを想定しているので、理想を言えば PHP や MySQL などのバージョンも合わせておければ確実です。逆を言えば、もしうまく動かなかった場合はミドルウェアのバージョン差異を疑ってみてください。ま、よほど昔の環境からの移行、とかでなければ大抵は大丈夫だと思いますが、、、
(2) は引っ越し先サーバー側の MySQL の設定です。DB 名を wp_db、ユーザー名を wp_user、パスワードを wp_pass にするのであればこんな感じ:
(3) は WordPress そのものをファイルシステムのレベルでコピーしちゃいましょう、ということです。引っ越し元の /var/www/html/wordpress に WordPress が導入されていて、それを引っ越し先の同じディレクトリに移動させるのであればこんな感じでしょうか:# mysql -u root -p(パスワード) > create database wp_db default character set utf8; > grant all privileges on wp_db.* to wp_user@localhost identified by 'wp_pass' with grant option; > quit
(転送元での作業) # cd /var/www/html # zip -r wp.zip wordpress/ (この結果できあがったファイル wp.zip を引っ越し先サーバーの /tmp とかに転送しておく) (転送先での作業) # cd /var/www/html # unzip /tmp/wp.zip
(4) は新しい WordPress の設定ファイルの更新です。上記例であれば wordpress/wp-config.php というファイルが設定ファイルなので、これを新しい環境用に(DB接続情報などを)指定します:
ここまでの作業で WordPress 本体の引っ越しは(ほぼ)完了しています。ただ引っ越し先にはデータの中身が全く入っていない状態なので、それを引っ越し前のサーバーから移動させる作業が残っています。(5), (6) がその作業になります。
(5) は引っ越し前サーバーのデータをまとめて取り出す、という作業です。WordPress のデータが入っているデータベースをテーブル設計からまとめてダンプすることになるので、引っ越し前のデータベース名/ユーザー名/パスワードがそれぞれ wp_db / wp_user / wp_pass だったとして、ダンプの出力先ファイルを wp.sql とすると、こんな感じのコマンドを実行することになります。
# mysqldump -u wp_user -pwp_pass wp_db > wp.sql
(6) は (5) で取り出したデータをまとめて (2) で作った引っ越し先のデータベースに入れる、という作業です。(5) で作成した wp.sql を引っ越し先データベースに転送してからこんな感じのコマンドを実行します:
# mysql -u wp_user -pwp_pass wp_db > source wp.sql
これでデータベースの中身の引っ越しも終わりました。WordPress ディレクトリごとコピーしているのでプラグイン類もそのまま移行されているし、カスタムフィールド等を使っていたとしてもデータベースまるごと移行しているので、そのカスタムデータも含めて移行されているはずです。事実、ここまでの作業でもう引っ越し先の WordPress にアクセスすればデータが参照できる状態になっているはずです。
でも実はここからが本題です。WordPress も、データベースも、どちらも引っ越し前のものを引っ越し後の環境に移動できました。でもこれだけでは足りないのです。それが (7) の作業になります。
実は WordPress は自分自身の動作環境に関わる設定を上記 (4) の設定ファイル以外にデータベース内にも格納しています。その内容は当然引っ越し前のものであり、それをそのまま引っ越し後の環境で使おうとしても正しい設定ではないため、想定外の動作を引き起こす可能性があります。それを調整する作業が必要です。
具体的には、WordPress が(引っ越し前のサーバーで)最初にセットアップした時に収集した情報が、動作のための情報として wp_options テーブル内に格納されています。その情報には「自分自身のURL」が含まれていて、その内容は当然引っ越し前のサーバーの URL になっています。ということは WordPress が自分自身の URL を調べて戻ろうとすると、引っ越し前のサーバーの URL に戻ってしまう、といった動作を起こしてしまいかねないのでした。そういったことが起こらないよう、データベース内の該当データを調整する必要があります。
そのため、最後の (7) の作業としては上記のような引っ越し前サーバーの情報を新しい引っ越し先サーバーの情報に書き換える、ということになります。
具体的な作業としては、引っ越し前サーバーのホスト名が www1.host.co.jp、引っ越し後サーバーのホスト名が www2.host.com だったとすると、引っ越し後の WordPress の wp_options テーブルには(ホスト名が www2.host.com であるにも関わらず)次のような引っ越し前サーバーの情報が格納されているはずです:
# mysql -u wp_user -pwp_pass wp_db > select option_name, optoin_value from wp_options where option_name = 'siteurl' or option_name = 'home';
+-------------+-----------------------------------+
| option_name | option_value |
+-------------+-----------------------------------+
| home | http://www1.host.co.jp/wordpress/ |
| siteurl | http://www1.host.co.jp/wordpress/ |
+-------------+-----------------------------------+
これらを新しい引っ越し後サーバーの情報に書き換える必要があります。SQL だとこんな感じでしょうか:
# mysql -u wp_user -pwp_pass wp_db > update wp_options set option_value = 'http://www2.host.com/wordpress/' where option_name = 'home' or option_name = 'siteurl'; > select option_name, optoin_value from wp_options where option_name = 'siteurl' or option_name = 'home';
+-------------+---------------------------------+
| option_name | option_value |
+-------------+---------------------------------+
| home | http://www2.host.com/wordpress/ |
| siteurl | http://www2.host.com/wordpress/ |
+-------------+---------------------------------+
これで WordPress のオプションデータの調整もできました。安心して引っ越し先サーバーで WordPress が使えます。