AWS スケーラブルウェブサイト構築(EC2(MySQL)+ELB+VPC)

参考

RDS無料枠

IP CIDR サイダー

VPCの作成をします。
作成したい構成は、以下の通り。
AWSコンソールにログインします。
東京リージョンを選択する。
VPCサービスを表示
VPCの作成画面で上記の構成を設定します。
プレビュー

VPCが作成されました。

EC2インスタンスをパブリックサブネット-1aに作成
EC2サービス画面を表示し、
インスタンスを起動ボタンを押します。
以下の設定をします。
以下はうまく動かないから不要

ELBを作る
まず、セキュリティグループを作成する。
以下の設定をします。

ターゲットグループを作成する。
ロードバランサーにEC2インスタンスを紐付ける
EC2画面の左ペイン
ロードバランシング > ターゲットグループを選択する

ターゲットグループの設定をする

ターゲットグループが作成される。

ロードバランサーを作る。
EC2画面の左ペイン
ロードバランシング > ロードバランサーを選択する

ロードバランサータイプで
Application Load Balancer で作成する。

以下の設定をします。

ロードバランサーが作成されました。

DNS名に記載されたアドレスは後から使います。

EC2にWordPressをインストール
下記を参考

作成したインスタンスにElastic IPアドレスを割り当てました。

EC2にアクセスします。
EC2インスタンス作成時に指定した、
キーペアの秘密鍵のおいてあるローカルの.sshフォルダに移動
アクセス権の変更
chmod 400 aws_ssh02.pem
その後、sshでec2にアクセス
ssh -i "aws_ssh02.pem" ec2-user@ec2-35-73-143-1.ap-northeast-1.compute.amazonaws.com
上記の接続コマンドは、下記の場所で確認できます。

EC2にdockerをインストール

EC2にWordPressをインストール
下記を参考

EC2にsshで接続
/home/ec2-user
必要なパッケージをインストール
sudo dnf install wget php-mysqlnd httpd php-fpm php-mysqli mariadb105-server php-json php php-devel -y
結果
105-server php-json php php-devel -y
Last metadata expiration check: 1:57:04 ago on Mon Jun 26 02:21:55 2023.
Package wget-1.21.3-1.amzn2023.0.3.x86_64 is already installed.
Dependencies resolved.
=============================================================================================
Package Arch Version Repository Size
=============================================================================================
Installing:
httpd x86_64 2.4.56-1.amzn2023 amazonlinux 48 k
mariadb105-server x86_64 3:10.5.18-1.amzn2023.0.1 amazonlinux 10 M
php8.1 x86_64 8.1.16-1.amzn2023.0.1 amazonlinux 14 k
php8.1-devel x86_64 8.1.16-1.amzn2023.0.1 amazonlinux 688 k
php8.1-fpm x86_64 8.1.16-1.amzn2023.0.1 amazonlinux 1.8 M
php8.1-mysqlnd x86_64 8.1.16-1.amzn2023.0.1 amazonlinux 151 k
Installing dependencies:
annobin-docs noarch 10.93-1.amzn2023.0.1 amazonlinux 92 k
annobin-plugin-gcc x86_64 10.93-1.amzn2023.0.1 amazonlinux 887 k
apr x86_64 1.7.2-2.amzn2023.0.2 amazonlinux 129 k
apr-util x86_64 1.6.3-1.amzn2023.0.1 amazonlinux 98 k
autoconf noarch 2.69-36.amzn2023.0.3 amazonlinux 666 k
automake noarch 1.16.5-9.amzn2023.0.3 amazonlinux 677 k
cmake-filesystem x86_64 3.22.2-1.amzn2023.0.4 amazonlinux 16 k
cpp x86_64 11.3.1-4.amzn2023.0.3 amazonlinux 10 M
emacs-filesystem noarch 1:28.2-3.amzn2023.0.6 amazonlinux 9.5 k
gc x86_64 8.0.4-5.amzn2023.0.2 amazonlinux 105 k
gcc x86_64 11.3.1-4.amzn2023.0.3 amazonlinux 32 M
gcc-c++ x86_64 11.3.1-4.amzn2023.0.3 amazonlinux 12 M
generic-logos-httpd noarch 18.0.0-12.amzn2023.0.3 amazonlinux 19 k
glibc-devel x86_64 2.34-52.amzn2023.0.2 amazonlinux 48 k
glibc-headers-x86 noarch 2.34-52.amzn2023.0.2 amazonlinux 448 k
guile22 x86_64 2.2.7-2.amzn2023.0.2 amazonlinux 6.4 M
httpd-core x86_64 2.4.56-1.amzn2023 amazonlinux 1.4 M
httpd-filesystem noarch 2.4.56-1.amzn2023 amazonlinux 15 k
httpd-tools x86_64 2.4.56-1.amzn2023 amazonlinux 82 k
kernel-headers x86_64 6.1.29-50.88.amzn2023 amazonlinux 1.4 M
keyutils-libs-devel x86_64 1.6.3-1.amzn2023 amazonlinux 55 k
krb5-devel x86_64 1.20.1-8.amzn2023.0.2 amazonlinux 136 k
libbrotli x86_64 1.0.9-4.amzn2023.0.2 amazonlinux 315 k
libcom_err-devel x86_64 1.46.5-2.amzn2023.0.2 amazonlinux 17 k
libkadm5 x86_64 1.20.1-8.amzn2023.0.2 amazonlinux 81 k
libmpc x86_64 1.2.1-2.amzn2023.0.2 amazonlinux 62 k
libselinux-devel x86_64 3.4-5.amzn2023.0.2 amazonlinux 115 k
libsepol-devel x86_64 3.4-3.amzn2023.0.3 amazonlinux 42 k
libstdc++-devel x86_64 11.3.1-4.amzn2023.0.3 amazonlinux 2.2 M
libtool x86_64 2.4.7-1.amzn2023.0.3 amazonlinux 596 k
libtool-ltdl x86_64 2.4.7-1.amzn2023.0.3 amazonlinux 38 k
libverto-devel x86_64 0.3.2-1.amzn2023.0.2 amazonlinux 15 k
libxcrypt-devel x86_64 4.4.33-7.amzn2023 amazonlinux 32 k
libxml2-devel x86_64 2.10.4-1.amzn2023.0.1 amazonlinux 500 k
libxslt x86_64 1.1.34-5.amzn2023.0.2 amazonlinux 241 k
m4 x86_64 1.4.19-2.amzn2023.0.2 amazonlinux 296 k
mailcap noarch 2.1.49-3.amzn2023.0.3 amazonlinux 33 k
make x86_64 1:4.3-5.amzn2023.0.2 amazonlinux 534 k
mariadb-connector-c x86_64 3.1.13-1.amzn2023.0.3 amazonlinux 196 k
mariadb-connector-c-config noarch 3.1.13-1.amzn2023.0.3 amazonlinux 9.2 k
mariadb105 x86_64 3:10.5.18-1.amzn2023.0.1 amazonlinux 1.6 M
mariadb105-common x86_64 3:10.5.18-1.amzn2023.0.1 amazonlinux 31 k
mariadb105-errmsg x86_64 3:10.5.18-1.amzn2023.0.1 amazonlinux 215 k
mysql-selinux noarch 1.0.4-2.amzn2023.0.3 amazonlinux 36 k
nginx-filesystem noarch 1:1.24.0-1.amzn2023.0.1 amazonlinux 9.0 k
openssl-devel x86_64 1:3.0.8-1.amzn2023.0.2 amazonlinux 3.0 M
pcre2-devel x86_64 10.40-1.amzn2023.0.2 amazonlinux 474 k
pcre2-utf16 x86_64 10.40-1.amzn2023.0.2 amazonlinux 217 k
pcre2-utf32 x86_64 10.40-1.amzn2023.0.2 amazonlinux 206 k
perl-B x86_64 1.80-477.amzn2023.0.4 amazonlinux 180 k
perl-DBD-MariaDB x86_64 1.22-1.amzn2023.0.4 amazonlinux 153 k
perl-DBI x86_64 1.643-7.amzn2023.0.3 amazonlinux 700 k
perl-Data-Dumper x86_64 2.174-460.amzn2023.0.2 amazonlinux 55 k
perl-File-Compare noarch 1.100.600-477.amzn2023.0.4 amazonlinux 14 k
perl-File-Copy noarch 2.34-477.amzn2023.0.4 amazonlinux 21 k
perl-File-Find noarch 1.37-477.amzn2023.0.4 amazonlinux 26 k
perl-FileHandle noarch 2.03-477.amzn2023.0.4 amazonlinux 16 k
perl-Math-BigInt noarch 1:1.9998.18-458.amzn2023.0.2 amazonlinux 189 k
perl-Math-Complex noarch 1.59-477.amzn2023.0.4 amazonlinux 47 k
perl-Sys-Hostname x86_64 1.23-477.amzn2023.0.4 amazonlinux 18 k
perl-Thread-Queue noarch 3.14-458.amzn2023.0.2 amazonlinux 22 k
perl-base noarch 2.27-477.amzn2023.0.4 amazonlinux 17 k
perl-threads x86_64 1:2.25-458.amzn2023.0.3 amazonlinux 58 k
perl-threads-shared x86_64 1.61-458.amzn2023.0.2 amazonlinux 44 k
php8.1-cli x86_64 8.1.16-1.amzn2023.0.1 amazonlinux 3.5 M
php8.1-common x86_64 8.1.16-1.amzn2023.0.1 amazonlinux 676 k
php8.1-pdo x86_64 8.1.16-1.amzn2023.0.1 amazonlinux 88 k
xz-devel x86_64 5.2.5-9.amzn2023.0.2 amazonlinux 53 k
zlib-devel x86_64 1.2.11-33.amzn2023.0.4 amazonlinux 45 k
Installing weak dependencies:
apr-util-openssl x86_64 1.6.3-1.amzn2023.0.1 amazonlinux 17 k
mariadb105-backup x86_64 3:10.5.18-1.amzn2023.0.1 amazonlinux 6.2 M
mariadb105-cracklib-password-check x86_64 3:10.5.18-1.amzn2023.0.1 amazonlinux 16 k
mariadb105-gssapi-server x86_64 3:10.5.18-1.amzn2023.0.1 amazonlinux 18 k
mariadb105-server-utils x86_64 3:10.5.18-1.amzn2023.0.1 amazonlinux 216 k
mod_http2 x86_64 2.0.11-2.amzn2023 amazonlinux 150 k
mod_lua x86_64 2.4.56-1.amzn2023 amazonlinux 62 k
php8.1-mbstring x86_64 8.1.16-1.amzn2023.0.1 amazonlinux 477 k
php8.1-opcache x86_64 8.1.16-1.amzn2023.0.1 amazonlinux 382 k
php8.1-xml x86_64 8.1.16-1.amzn2023.0.1 amazonlinux 146 k
Transaction Summary
=============================================================================================
Install 85 Packages

FileZiraでキーペア使って、ec2に接続もできる
接続先はElasticIPで取得した固定IPを指定
ec2-xxx-xxx-xxx-xxx.ap-northeast-1.compute.amazonaws.com

wget コマンドを使って、最新の WordPress インストールパッケージをダウンロードします。次のコマンドを実行すると、最新リリースが必ずダウンロードされます。
wget https://wordpress.org/latest.tar.gz

インストールパッケージを解凍します。インストールフォルダは、wordpress という名前のフォルダに解凍されます。
tar -xzf latest.tar.gz

MySQL(MariaDB)のもろもろ設定
データベースおよびウェブサーバーを起動します。
sudo systemctl start mariadb httpd

データベースサーバーに root ユーザーとしてログインします。
mysql -u root -p
事前に、
あたりの設定をしておく。
デフォルトではrootユーザーにパスワードは設定されていないらしいので、
のサイトを使って、安全なパスワードに変更する。

MySQL データベースのユーザーとパスワードを作成します。
WordPress インストールは、これらの値を使って、MySQL データベースと通信を行います。
一意のユーザー名とパスワードを入力して、次のコマンドを入力します。
CREATE USER 'wordpress-user'@'localhost' IDENTIFIED BY 'your_strong_password';

データベースを作成します。wordpress-db など、データベースにはわかりやすい名前を使用します。
CREATE DATABASE `wordpress-db`;
データベースに対して、以前作成した WordPress ユーザーに対する完全な権限を付与します。
GRANT ALL PRIVILEGES ON `wordpress-db`.* TO "wordpress-user"@"localhost";
すべての変更を有効にするため、データベース権限をフラッシュします。
FLUSH PRIVILEGES;
mysql クライアントを終了します。
exit

wp-config.phpを設定する。

WordPress ファイルを Apache ドキュメントルートの下にコピー
sudo mkdir /var/www/html/wp-sample01
sudo cp -r wordpress/* /var/www/html/wp-sample01
httpd.confの編集
sudo vim /etc/httpd/conf/httpd.conf

ロードバランサーのDNS名+「/wp-sample01」
にアクセスすると、WordPressのインストール画面が起動していることを確認。
WordPressのインストールをします。
(Elastic IPアドレスはいらないか)

WordPressのソースコードをGithubで管理したいのでgitをインストール
sudo yum update
sudo yum install git
git version

.gitignoreファイルを作って、wp-config.phpは無視するようにする。
その後、
suto git init
git config --global --add safe.directory /var/www/html/wp-sample01
git add -A
git commit
リモートリポジトリにpushする。

その後、ELBが結構課金がかかっていることが判明したので削除する
Elastic Load Balancing
USD 18.08
Asia Pacific (Tokyo)
USD 18.08
Elastic Load Balancing - Application
USD 18.08
$0.008 per used Application load balancer capacity unit-hour (or partial hour)
0.118 LCU-Hrs USD 0.00
$0.0243 per Application LoadBalancer-hour (or partial hour)
744 Hrs

AWSのElastic Load Balancer (ELB)の料金が発生しないようにするためには、基本的にはELBを削除する必要があります²。以下に、ELBを削除する手順を説明します²:
- Amazon EC2 コンソール ( 6 を開きます。
- ナビゲーションペインで、 [ ロードバランサー] を選択します。
- ロードバランサーを選択して [アクション] 、 [ロードバランサーの削除] を選択します。
- 確認を求められたら、「 confirm 」と入力し、 [ 削除] を選択します。
ただし、以下の点に注意してください²:
- ロードバランサーが削除されると、ロードバランサーの課金も停止されます²。
- ロードバランサーを削除しても、登録済みターゲットには影響を与えない点に注意してください²。たとえば、EC2 インスタンスは実行を続け、ターゲットグループに登録されたままです²。
- 削除保護が有効になった場合、ロードバランサーを削除することはできません²。
これらの手順を実行する前に、ELBの削除がアプリケーションのパフォーマンスや可用性にどのように影響するかを評価することが重要です。また、AWSのサポートチームに相談することもお勧めします。これらの情報がお役に立てば幸いです。他に何かご質問がありましたら、お気軽にどうぞ。²
ソース: Bing との会話 2023/11/10
(1) Application Load Balancer の削除 - Elastic Load Balancing. https://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/application/load-balancer-delete.html.
(2) 【AWS】ELBセキュリティポリシー変更してTLS 1.0/1.1 無効化 .... https://bing.com/search?q=AWS+ELBを無効にする方法.
(3) ELB(ALB)の設定・接続・確認 #AWS - Qiita. https://qiita.com/nonZy/items/2952199cb2014668de41.
(4) 【AWS】ELBセキュリティポリシー変更してTLS 1.0/1.1 無効化 .... https://sayjoyblog.com/elb-securitypolicy/.
(5) ELB(ALB)のアクセスログ設定 | Oji-Cloud. https://oji-cloud.net/2019/07/17/post-2451/.
(6) undefined. https://console.aws.amazon.com/ec2/).