WordPressのクローンを作ったときに困った話

独自ドメインで運用中のWordPressを大幅リニューアルするときに、仮サーバで事前に作成・確認したいと思うことがあります。その時にはまった問題の備忘録です。

まずは複製

対象はこのブログ(TryWidely)ではなく、某組織のホームページです(怪しい団体ではありません…)。

VMware上のLinuxマシン(CentOS7)で稼働している環境ですので、ひとまず、環境がどんなに壊れても安心できるように、仮想マシンのクローンを作成。

本稼働中の仮想マシン(192.168.0.80(仮称?というのか…))からクローンを作成した直後は、そのクローンのIPアドレスも192.168.0.80となっていますので、ローカルIPアドレスを192.168.0.81(仮称)に変更します。

これだけで、「https://192.168.0.81」で、現行と同じ内容のサイトが表示されました。

なんだ、楽勝じゃん、と思ったんですが。。

管理画面にログインできない

ダッシュボード(管理画面)にログインするため、

https://192.168.0.81/wp-admin/ でアクセス。

よく見るログイン画面が表示されました。これまた、楽勝、と思ってしまったんですね。

もちろん、クローンということはデータベースも同じものなので、ユーザー名とパスワードは同じ。

で、ログインすると…

https://xxxxxxxx.xxx/wp-admin/ の、稼働中WWWサーバにつながってしまいました。

もちろん、これで編集してしまうと公開中のサイトが書き換わります。

問題の原因を探る

最初に疑ったのが、ルートで設定している .htaccess ファイル。

httpでのアクセスを https に転送するように設定しているので、何らか影響してる?と思ったんですね。記載は、よくある

RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

こんな感じのものです。

HTTP_HOST が影響してる?

確かに、仮想マシンをクローンで作成してますから、サーバー名はドメイン名ですね。

が、サーバー名を変更しても、何をしても改善せず。

解決は、過去の経験から

ここで思い出したのが、過去にWordPressのサーバを移転したときの話。

https://192.168.0.81/wp-admin/ でユーザー名とパスワードを入力するということは、間違いなくデータベースを参照していることになります。

このデータベースに、URLの情報が入っていたはず。

というわけで、phpMyAdminで、WordPress用のデータベースにアクセス。

画像は、club-cavalier.com のサーバ移転のときのもの

wp_option テーブルの、option_id = 1(siteurl)の option_value 。

これを、https://192.168.0.81 と変更して保存。

option_id = 2(home)の option_value も、同じく https://192.168.0.81 に変更して保存。

この変更を行って、再び、https://192.168.0.81/wp-admin/ にアクセス。

ここに、ユーザー名とパスワードを入力してログインすると、

192.168.0.81 のダッシュボード(管理画面)が開きました。

要は、siteurl の値(文字列)に、WordPress(PHP)が /以下のURLを連結して全体のURLを生成しているんですね。

試しに、ブログ記事の一部を加工して更新。https://192.168.0.81 で、その記事が更新できたことが確認できました。

もちろん、https://xxxxxxxx.xxx/ にアクセスして、同じ記事を見ても、変更はされていません。

これで、自由に編集が出来る環境が出来たことになります。

もちろん、ローカルエリア内でしか編集も確認も出来ませんが、やりたいこととしては十分です。

ただし、くれぐれも、公開前にデータベースの siteurl と home を書き戻すことをお忘れなく。