いまの環境は Amazon Linux なので、これを Amazon Linux2にしたい

AWSでWordPress環境を構築する:Amazon Linux2・・・Session Manager
https://note.com/hiroki_hachisuka/n/nc1d5342c3a9b

AmazonLinux2 Nginx+PHP-fpm環境構築メモ
https://qiita.com/dora1341/items/777e8781bb7ddd03cb4d

nginxのデフォルト(nginx.conf)に書いてあることがある

$ edit /etc/nginx/nginx.conf

location = / {
access_log off;
return 204;
break;
}

nginxがリクエストを処理できなかった場合、つまり、ドメインごとの.confを用意し忘れた場合などは、デフォルト(nginx.conf)が呼び出されて、結果、204を返す。

AWS EC2のロードバランサーのターゲットのヘルスチェックも、ここを通るので、204を返していると、unhealthになってしまう。ここは、200を返すべき。

ディレクトリのみの一覧を取得する
-maxdepth:階層指定

$ find /etc/ -type d
$ find /etc/ -maxdepth 1 -type d

ファイルのみの一覧を取得する

$ find /etc/ -type f

EC2インスタンスにSSHできないときって、今回は何の手違いか、.sshディレクトリごと削除しちゃって。
あーあ、自分は nginxユーザーのホームは /home/nginx だと思ってたんだけど、/var/www/vhosts だったんだ。
誰がこんなクソみたいな設定したんだ! オレだ!
authorized_keys がないと、SSHでログインできないじゃないか。

やること:
SSHできないEC2インスタンス(INS-A)からボリューム(VOL-A)を取り出し、別のEC2インスタンス(INS-B)からボリューム内のファイルの問題となっているファイルを修正する。

インスタンス(INS-A)を停止し、ボリューム(VOL-A)をデタッチする

「EC2 -> インスタンス」から、インスタンス(INS-A)を選択して停止

停止したインスタンス(INS-A)の「ルートデバイス」を選択
「EBS ID」をクリックすれば対象のボリューム(VOL-A)へ

「EC2 -> ボリューム」から、対象のボリューム(VOL-A)を選んで「アクション -> ボリュームのデタッチ」

これで、インスタンス(INS-A)からボリューム(VOL-A)が取り除かれた。
別のインスタンス(INS-B)に取り外したボリューム(VOL-A)をアタッチ。

「EC2 -> ボリューム」から、先程取り除いたボリューム(VOL-A)を選択
「アクション -> ボリュームのアタッチ」

空きドライブに割り当てる(デフォルトでは「/dev/sdf」)

これでボリューム(VOL-A)が別のECインスタンス(INS-B)にアタッチされた。
別のEC2インスタンス(INS-B)にログイン。

# df -h
# lsblk
# mkdir /mnt/vol01
# mount /dev/xvdf1 /mnt/vol01
# df -h

作業が終わったらアンマウント。

# umount /mnt/vol01

インスタンス(INS-B)からボリューム(VOL-A)をデタッチ
インスタンス(INS-A)にボリューム(VOL-A)をアタッチ(/dev/xvda)して起動

「EC2 -> ボリューム」からボリューム(VOL-A)を選択
「アクション -> ボリュームのアタッチ」を選択
デバイスの値を最初と同じ「/dev/xvda」にしてから「アタッチ」

DNSをいじらずに環境を整える(新しいサーバのIPを例えば、13.14.62.99とする)
Windowsの hosts を書き加える

edit C:\Windows\System32\drivers\etc\hosts
13.14.62.99 afa1986.jp
13.14.62.99 www.afa1986.jp

新しいサーバの /etc/hosts も書き加える

# e /etc/hosts
13.14.62.99 afa1986.jp
13.14.62.99 www.afa1986.jp

AWSの Route 53 で DNS レコードを作成する

example.com A ALIAS dualstack.elb.amazonaws.com.
example.com MX 10 sv999.xserver.jp.
example.com NS ns-649.awsdns-17.net. ns-1676.awsdns-17.co.uk.
example.com SOA ns-649.awsdns-17.net. awsdns-hostmaster.amazon.com.
example.com TXT “v=spf1 +a:sv999.xserver.jp +a:example.com +mx ~all”
mag.example.com A 15.11.15.11
mail.example.com A 15.11.15.11
www.example.com A ALIAS dualstack.elb.amazonaws.com.

AWSの Certificate Manager で SSL証明書を発行する

証明書のリクエスト > パブリック証明書のリクエスト
*.example.com
example.com (別名として*のないのも登録しておく)

E メールの検証 (DNSの切り替えがまだで、DNS認証が使えないから)

AWSの EC2 のロードバランサーに SSL証明書を登録する

ロードバランサー > リスナー > HTTPS : 443 > 証明書の表示/編集 > ✙
example.com 追加

新しいサーバに WordPress をインストールする(要AMIMOTO)

# wp-setup example.com

ブラウザから example.com を開く

Instance ID を入力する

サイトのタイトル
ユーザー名
パスワード
メールアドレス

WordPressの管理画面にて

WordPress 5.4.2 が利用可能です! 今すぐ更新してください。
ダッシュボード > 更新 > テーマ
ダッシュボード > 更新 > プラグインの更新

プラグイン > 新規追加 > Classic Editor

旧サイトから新サイトにファイルをコピーする

/wp-content/themes/example/ テーマ
/wp-content/uploads/     画像
/wp-content/plugins/     プラグイン(active_pluginsを参考に必要なものだけ)

新サイト(できたてのWordPress)のダンプを取る
-c はカラム名を出力。
–skip-extended-insertは1行1insert文にするおまじない。
そうしないと、1つのINSERT文に詰めるだけ詰められて置換とかがやりづらい。
example.com の場合、[database-name]は、example_com となる。

# mysqldump -u root -p[password] -h localhost -c –skip-extended-insert [database-name] > [outfile-name.sql];

同じようにして旧サイト(現在のサイト)のダンプを取る

# mysqldump -u root -p[password] -h localhost -c –skip-extended-insert [database-name] > [outfile-name.sql];

旧サイトがマルチサイトだったときの作業(古い!)

wp_2_options というような修飾子が付くので、数字を取る
http://example.com/wp-content/uploads/sites/2/ を /wp-content/uploads/ にする

wp_2_optionsの中の上書き項目
‘blogname’
‘blogdescription’
‘permalink_structure’
‘active_plugins’    これを書き換えるときはプラグインがphp7に対応しているか要注意
‘template’
‘stylesheet’
‘sidebars_widgets’
‘aioseop_options’
‘allowedthemes’

php7でエラーになるプラグイン

Slider Revolution revslider 最新版に入れ替えると直る
exec-php            変数にクラスの参照代入(=&)しているところをパッチ

設定の見直し

投稿設定
ディスカッション
パーマリンク設定

OKになったら、hostsを戻す

edit C:\Windows\System32\drivers\etc\hosts
#13.14.62.99 afa1986.jp
#13.14.62.99 www.afa1986.jp

新しいサーバの /etc/hosts も戻す

# e /etc/hosts
#13.14.62.99 afa1986.jp
#13.14.62.99 www.afa1986.jp

自分の環境(Windows)のクリア
Chrome

chrome://net-internals/#dns

ファイル名を指定して実行…Cmd

ipconfig /flushdns
nslookup example.com 1.1.1.1

ルーター(PR-S300NE)

詳細設定 > DNS設定
IPv6 IPoE通信優先機能 優先しない

これが一番効いた。DNSクエリを「IPv6 IPoE」が優先的に処理してしまうので、いつまで経ってもDNSが切り替わらなかった。