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用のデータベースにアクセス。
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 を書き戻すことをお忘れなく。