arcanum_jp’s blog

おっさんの日記

EC2を再起動したらワードプレスに接続できなくなった!

どうも。今更ワードプレスを使い始めたのです。
 

経緯はこちらで書いてますが

arcanum.hatenablog.com
 

自分のサイトのトップページ、ベタにSpringBootの勉強で作ったものを入れている。これから色々と更新したいときにCMSあった方が便利だよねーーっと言う事でJavaベースのフリーなCMSを探していたんだけどいいのがないの。えーーー!仕事で今、Docker使ってワードプレス案件ガシガシやってるし、、、ここは1つ、サイトのトップはワードプレスにするか・・・と言うのが始まりであった。

ロードバランサとEC2を作ってワードプレス入れてみたのですよ!やったー!動く動く!これは今日は宴じゃ!つって課金嫌なのでEC2を停止したのですよ・・・後日EC2を起動してさてWebサーバーもPHP-FPMもMySQLもサービス動いてるから作ったサイトにつなげるか・・・( ^ω^)・・・つながらない・・・こんな感じの画面になる・・

 
f:id:arcanum_jp:20201014123659p:plain
 

こういうときは新規一転また別のEC2を作って・・・作ってみたときはいいがまたEC2再起動で上の画面となる。
 

ロードバランサからEC2へリクエストは飛んでる。ログで確認した・・が表示が変だったりログインリンク押すとつながらない。。なんでだ?
 

・・・ん?ログインリンク押したときのURLがEC2になっている・・・あ、いやこれはロードバランサ経由したとしてもEC2のURLになるのは分かる・・でも、、このURL、、IP違うくね?ご存じの通りAWSのパブリックDNSにはIPが入っているので古いIPじゃね?ってなったの。

 
となり、あぁ、もしかしてワードプレスのDBにホスト名がどこかに入っていてそれが古いんじゃ?とwp_のつくテーブルをselect * from で見てったらwp_optionsというテーブルに古いホスト名が登録されている・・・


  こ れ だ !

 
ググったらまぁ割と一般的な事らしく、、初心者の僕は知らなかったという事でした。多分サイトの移動とかでは一般的な注意事項なんだろうなぁと。

www.agilegroup.co.jp

 
ここから上記のサイトで書いている通りの事を実行した順に書いてきます。(これはリンク先がなくなってしまった場合の事も踏まえています)

 
手順としてはEC2再起動したらWP-CLI経由で先のオプションを変更するというもの。まず、WP-CLIがない場合はインストール。以下のコマンドでインストール
 

curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp

 
きちんとインストールされているか確認します。なんか情報が出ればOK

wp --info


以下のWP-CLIコマンドでURLを変更します。

 wp option update home プロトコルから始まる新しいEC2パブリックDNS名 ※1
 wp option update siteurl プロトコルから始まる新しいEC2パブリックDNS名 ※1

※1 例:https://ec2-xx-xxx-xxx-xx.ap-xxxxxxxx-x.compute.amazonaws.com

ここで注意なのは、ワードプレスがインストールされている場所で実施してください。単に実施するとこんな風にワードプレスのパスを指定しろ!と言われます。あと--allow-rootは忘れずに。

XXXX@ip-xx-x-X-xxx:~# wp option update home http://ec2-xx-xxx-xxx-xx.ap-xxxxxx-1.compute.amazonaws.com --allow-root
Error: This does not seem to be a WordPress installation.
Pass --path=`path/to/wordpress` or run `wp core download`.

左記のサイトではそのあとにwp search-replaceでURLの置換もやっているみたいです。この状態でサイトに接続するとまた先ほどのような変な画面になります。ログインリンクは効くようになっているので一旦ログインしてからサイトにアクセスすると表示が元通りになります。この方法でも大丈夫かな?いったんこれで運用しましょう。