はじめに
AWSの勉強がてらEC2にWordPressを構築しましたが、EIPを紐づけることなくインスタンスを停止してしまいました。そのため、再度インスタンスを開始した際に、IPが変わってしまい、ワードプレス管理画面が開かなくなってしまいました。その際の対処法を記します。
状況
http://[現在のipアドレス]/wp-admin を入力したところ、
http://[過去のipアドレス]/wp-login.php 以下省略
へリダイレクトされてしまいました。
対処法
DBの値を変更
mysqlへ接続し、DBのhostの値を変更します。
mysqlへ接続。
RDSを使用している場合のコマンドは以下のようになります。
mysql -h <RDSのエンドポイント> -u <ユーザー名> -p
mysqlへログイン後以下を実施。
WPのデータベースを指定。
USE <データベース名>;
※データベース名が分からない場合はデータベース一覧で確認
show databases;
wp_optionsテーブルから過去のIPアドレスを含むレコードを取得。
※\Gで出力が縦表示となり見やすくなる。
mysql> select * from wp_options where option_name IN ('siteurl', 'home')\G
*************************** 1. row ***************************
option_id: 3
option_name: home
option_value: http://<旧IPアドレス>
autoload: on
*************************** 2. row ***************************
option_id: 2
option_name: siteurl
option_value: http://<旧IPアドレス>
autoload: on
2 rows in set (0.01 sec)
現在のIPアドレスへ更新。
mysql> UPDATE wp_options SET option_value = 'http://<現IPアドレス>' WHERE option_name IN ('siteurl', 'home');
Query OK, 2 rows affected (0.01 sec)
Rows matched: 2 Changed: 2 Warnings: 0
更新結果を確認。
mysql> select * from wp_options where option_name IN ('siteurl', 'home')\G
*************************** 1. row ***************************
option_id: 3
option_name: home
option_value: http://<現IPアドレス>
autoload: on
*************************** 2. row ***************************
option_id: 2
option_name: siteurl
option_value: http://<現IPアドレス>
autoload: on
2 rows in set (0.00 sec)
トライアンドエラー
以下はIP変更時に試してみたものの、最終的には不要だった方法です。
wp-config.phpにホスト名を指定する
WordPressのルートディレクトリ(今回の場合は/var/www/html)にあるwp-config.phpに以下を追記しました。
define('WP_HOME', 'http://<現IPアドレス>');
define('WP_SITEURL', 'http://<現IPアドレス>');
ログイン画面は表示されたものの、レイアウトは崩れてしまいました。
念の為、sudo service httpd restart
とapacheの再起動を行うも表示は崩れたままでした。
※本記事に掲載のIPアドレスや構成例は、学習目的のものであり、実際の運用環境とは異なります。画像内のIPアドレスも一部マスキングしております。