かわたま.net

Enjoy Creative! かわたまのwebメモ

【AWS】網元で構築したwordpressをDNS切り替えしたらアクセスできなくなってしまった時の対処法

2014 October 25

Tag:

AWSでインスタンス起動〜wordoressインストールまでを数クリックでできるamimoto。
小さいインスタンスでも最大限にパフォーマンスを出せるように最適にチューニングされているため、マシン環境などに疎い私にとってはとっても便利なサービスです!

amimotoのインスタンス起動時には、通常のEC2インスタンスと同様に、外部からアクセスするためにpublic DNSが割り当てられます。このpublic DNSはEC2インスタンスをストップし、再度スタートすると別のpublic DNSが割り当てられてしまうため、停止→起動しても接続先が変わらないようにしておきたい場合は、事前に固定IP(Public IPかElastic IP)を割り当てておく必要があります。

今回起こったこと

今回私は、amimotoでインスタンスを起動後、固定IPを当てる前(publicDNSの状態)にwordpressをインストールし、
その後で固定IP(EIP)に切り替えたところ、データベースの中に記憶されたPublic DNSのまま各種リンクが生成される状態になってしまい、ブラウザから管理画面、サイト共にアクセスできなくなってしまいました。。。T T

・amimotoでインスタンス起動
・publicDNSの状態でwordpressインストール
・wordpressインストール後にEIPに切り替え
・管理画面、サイト共に新しいEIPでアクセスできなくなった
・元のpublicDNSでもアクセスできない
・ターミナルから、新しいEIPでssh接続はできる

新しいIPでサーバーにssh接続はできるのにブラウザからはアクセスできない。
色々調べてみると、データベースの中に記憶された古いIPアドレスを全て新しいIPアドレスに書き換える必要があるようです。
webcre-archive.com/さんの記事を参考に、解決できたのでその手順です。

データベースの中身の特定の文字列を一括置換する手順

ファイルをダウンロード

データベースの中身の特定の文字列を一括置換してくれるファイルを下記サイトからダウンロードします。

aws

https://interconnectit.com/
から
PROBLEMS? TRY V 2.1.0 STABLE
をクリック、ダウンロードしたzipファイルを解凍します。
→searchreplacedb2.phpになります。

aws

ファイルをアップロード

searchreplacedb2.phpをWordPressインストールディレクトリ(amimotoで作成した場合、/var/www/vhosts/i-hoge/以下)にアップロードします。

$ scp -i 認証鍵のパス ダウンロード先/searchreplacedb2.php ec2-user@IP:/var/www/vhosts/i-hoge

と思ったらPermission deniedになってしまいました。。。
このフォルダのパーミッションを変更するのはなんだか怖いので、searchreplacedb2.phpという同じ名前のファイルを作成して、ダウンロードしてきたファイルの中身をコピー/ペーストしました。
$ sudo vim searchreplacedb2.php
:set pasteでインサートしてペースト
:wq

できた!

searchreplacedb2.phpにアクセス

ブラウザから IP(もしくはドメイン)/searchreplacedb2.php にアクセスします。

スクリーンショット 2014-10-25 19.12.36

submitボタンをクリック。

次にデータベースの情報を聞かれます。
データベースの情報はwp-config.phpから確認できます。
$ cat wp-config.php

確認した情報をそれぞれ入力します。入力できたら
「Submit DB details」ボタンをクリック。

スクリーンショット 2014-10-25 19.15.36

次に置換を適用させたい。tableを聞かれます。今回はそのまま(デフォルトで全選択されているはず)「Continue」。
切り替え前のIP、新しいIPを入力して「Submit Search string」

スクリーンショット 2014-10-25 19.17.09

aws

これでデータベースの中身が全て書き換えられます。
ブラウザから新しいIPに問題なくアクセスできるようになりました。

問題なく表示されるのを確認できたら、searchreplacedb2.phpは削除します。
サイトにアクセスできなくなってとっても焦りましたが、なんとか解決できました◎