一回折れた人

日々の出来事をつらつらと

ローカル環境にwordpressを構築(DB書き換え)

前回のおさらい

前回vagrantでサーバー上のwordpressをローカルにコピーしました。 トップページの見た目上は、再現できていました。

前回の作業として、下記2点を行いました。 ・サーバー上のミドルウェアなどの環境を再現 ・mysqlの中のwordpressで使っているDBをdumpしてローカルのmysqlに複製

こうするとどうなるか?

f:id:hpptms:20170921233930p:plain

見辛くて申し訳ないのですが、ローカルの記事のリンクも全てサーバー上のブログの方に飛ぶ状態になります。

推測ですが、管理画面→設定→一般の[WordPress アドレス (URL)]か[サイトアドレス (URL)]を参照してリンクを生成していると思われます。

f:id:hpptms:20170921234009p:plain

管理画面に入れれば上記の部分を設定し直したら良さそうです。 ですが、管理画面の飛び先自体もサーバーの方に飛んでしまうので、それはできません・・・。 そんな訳で下記のコマンドを実行しました。

//※ローカル環境でなおかつテーマを編集が目的なので、xginxのrootを下記にしています。
cd /vagrant/data/wp/wordpress/

//一応中身確認
ls

//hpptms.dip.jpが記述されたファイルを探す
find ./ -type f -print | xargs grep 'hpptms.dip.jp'

おびただしい量の文字列が流れてきました(´・ω・)(´・ω・`)(・ω・`)

「find ./ -type f -print | xargs grephoge"」このコマンド自体はディレクトリー階下のファイルの中身を確認するコマンドで間違いないと思います。 業務でも何回か利用しています。※参照元【Linux】複数あるファイルの中から特定の文字列を検索するコマンド 今回の場合は,wordpressのコンフィグファイルなどにURLの情報を記述する場所が無かったのかなと思っています。

参照元参照元を推測して書き換える

かなりリスキーな行為ですが、ローカル環境なので参照元と思われるDBの情報を直接書き換えることにしました。 コマンド、又はphpMyAdminでもいいのですが、久しぶりにheidiSQLを使います。

f:id:hpptms:20170921234057p:plain

phpMyAdminでもいいですが、heidiSQLなら別サーバーも設定さえ残しておけばクリック1つで接続先を変えられるので便利です。 PostgreSQLにも対応しているようですが、個人的な感想としてはpostgreSQL目的で使用するにはイマイチでした。

heidiSQLの設定

参照元VirtualBox Vagrant上のMySQLにHeidiSQLで接続する方法 参照元の記事のままの設定で繋がりました。

f:id:hpptms:20170921234133p:plain

f:id:hpptms:20170921234204p:plain

中のワードプレスのDBを見てURLの参照元っぽいところを探します。

tableの[xxx_options]にかなりそれっぽいのがありました。

f:id:hpptms:20170921234234p:plain

この「siteurl」がリンク生成の時に使われていそう・・・。 最悪ダメだったら戻せせばいいし、変更します。 一応ホスト側のhosts情報も書き換えてあるので、「http://wp/」でも繋がりそうですが、 ここは一応の安全策ということでvagrantのプライベートIPアドレスにします。(ここまで無茶やっといて何ですが)

結果どうなったかというと・・?

f:id:hpptms:20170921234340p:plain

リンク先がローカルのwordpressに書き換わりました。

ひとまずローカルのリンク問題は解決しましたが、管理画面がCSS適応されてなかったり色々とまだ設定を直さないといけない場所があります。 サーバーからローカルへのwordpressのコピーも一苦労ですね。

追記: 管理画面でCSSが表示されない問題については、DBのテーブル「wp_options」のカラム「siteurl」に元々ローカルIPをそのまま入れていました。 ここが問題だったようで公開されている方のブログのDBと見比べてたところ、「http://hoge」と入っていたので、ローカル側もhttpををつけたところ、CSSも反映されるようになりました。