この記事でわかること
▪️AWSの東京リージョンでVPCを構築し、パブリックサブネットにEC2インスタンスを
作成した上で、Apache HTTP Serverをインストールする手順を解説します。
▪️プライベートサブネットの作成から、WebサーバーとDBサーバー間の通信設定まで
を対象とし、DBサーバーの構築やNAT設定の詳細についても説明します。
前提条件
▪️使用PC:Mac
▪️リージョン:東京
▪️ターミナルソフトを使用
ご注意
画像は設定手順をイメージしやすくするための参考です。
細部の仕様や正確性についてはAWS公式ドキュメントをご確認ください。
また、一部個人情報などを削除しています。
手順の流れ
以下は、この記事で解説する手順です。
項番1_プライベートサブネットの作成
↓
項番2_踏み台サーバーを経由してプライベートサブネット内のEC2にSSH接続する
↓
項番3_NATゲートウェイ設定
↓
項番4_DBサーバーにMariaDBをインストール
↓
項番5_WordPress用のデータベース作成
↓
項番6_WebサーバーにWordPressをインストールする
項番1_プライベートサブネットの作成
手順1_プライベートサブネットの作成
▪️AWSコンソールの「サブネット」から「サブネットを作成」を選択します。
▫️手順1_で作成したVPCを選択します。
▫️「サブネット名」を入力します。(一意に区別がつく名前)
▫️「アベイラビリティーゾーン」を入力します。
※パブリックサブネットと同じにします。
▫️「CIDRブロック」に10.0.1.0/24を入力します。
▫️「サブネットを作成」を押下して、プライベートサブネットを作成します。
手順2_プライベートサブネットにEC2を作成する
▪️AWSマネージメントコンソールで「EC2」を選択します。
▪️画面左側の「インスタンス」から「インスタンスを起動」を選択します。
▫️「インスタンス名」を入力します。(一意に区別がつく名前)
▫️AMI:Amazon Linux 2023
▫️インスタンスタイプ:t2.micro
▫️キーペアは既存のキーペアを選択、または新規作成します。
▫️ VPCとサブネットを項番2_手順1・2で作成したものに設定します。
▫️「パブリックIP自動割り当て」を無効化にします。
▫️「プライマリIP」を10.0.2.10に設定します。
▪️セキュリティグループを作成し以下を許可します。
▫️SSH(ポート:22)(踏み台サーバーとして利用)
▫️MySQL/Aurora(ポート:3306)
※後の項番で、MariaDBをインストールする為です。
▫️カスタムICPM-IPv4
※後の項番で、ping疎通実施の為です。
▫️「ソースタイプ」: 「任意の場所(0.0.0.0/0)」に設定します。
手順3_接続確認(Pingによる疎通テスト)
▪️Webサーバー(踏み台)からDBサーバーにPingを実行
ping 10.0.2.10
▫️疎通が確認できると以下のような結果が表示
64 bytes from 10.0.2.10: icmp_seq=1 ttl=255 time=0.326 ms
項番2_踏み台サーバーを経由してプライベートサブネット内のEC2にSSH接続する
手順1_ネットワーク構成の確認
プライベートサブネット内のEC2は直接インターネットに接続できないため、
パブリックサブネットに配置したWebサーバーを踏み台にしてアクセスするのが一般的な手法です。
▪️踏み台サーバー(Webサーバー)
▫️サブネット: パブリックサブネット(10.0.1.0/24)
▫️プライマリIP: 10.0.1.10
▫️パブリックIP: xxx.xxx.xxx.xxx
▫️セキュリティグループ:
SSH(22番ポート):任意のIP(0.0.0.0/0)
HTTP(80番ポート):任意のIP(0.0.0.0/0)
▪️DBサーバー
▫️サブネット: プライベートサブネット(10.0.2.0/24)
▫️プライマリIP: 10.0.2.10
▫️パブリックIP: なし
▫️セキュリティグループ:
SSH(22番ポート):WebサーバーのプライベートIP(10.0.1.10)のみ許可
MySQL(3306番ポート):WebサーバーのIPを許可
カスタムICPM-IPv4:ping疎通実施の為です。
手順2_踏み台サーバーへSSH接続
▪️秘密鍵の転送
ローカル環境からDBサーバーにSSH接続するためには、
踏み台サーバー上にSSH鍵を配置する必要があります。
MacやLinux環境では、以下のSCPコマンドで秘密鍵をWebサーバーに転送します。
ローカル上のMacで以下のコマンドを実行します。
scp -i my-key.pem my-key.pem ec2-user@パブリックアドレス:~/
▪️転送後、踏み台サーバー(Webサーバー)にログインします。
ssh -i my-key.pem ec2-user@パブリックアドレス
▪️秘密鍵のパーミッション変更
転送した秘密鍵のパーミッションを変更し、自分だけが読み取れる状態にします。
chmod 400 my-key.pem
手順3_踏み台サーバー経由でDBサーバーにSSH接続
▪️踏み台サーバーからプライベートサブネット内のDBサーバーへSSH接続を実施します。
ssh -i my-key.pem ec2-user@10.0.2.10
▪️DBサーバーへのログインが成功すれば、以下のようなプロンプトが表示されます。
[ec2-user@ip-10-0-2-10 ~]$
▪️作業が完了したら、exit コマンドでDBサーバーからログアウトし、
踏み台サーバーの作業に戻ることができます。
exit
項番3_NATゲートウェイ設定
手順1_NATゲートウェイを構築する
▪️AWSマネージメントコンソールで「VPC」を選択します。
▪️画面左側の「NATゲートウェイ」を選択します。
▫️「NATゲートウェイを作成」 を押下します。
▫️「NATゲートウェイ名」を入力します。(一意に区別がつく名前)
▫️「サブネット」の項目で「パブリックサブネット」を選択します。
▫️「Elastic IPを割り当て」 ボタンを押下し、新しいElastic IPを取得します。
※補足
Elastic IPは固定のパブリックIPアドレスです。これにより、NATゲートウェイを
介してプライベートサブネット内のインスタンスが安定した外部通信を行えます。
手順2_ルートテーブルを設定
▪️NATゲートウェイの作成後、プライベートサブネットからインターネットに接続できるよう、
ルートテーブルを変更します。
▪️「ルートテーブル」を選択し、プライベートサブネットに適用されている
ルートテーブルを確認ルートを編集し、以下の設定を追加します。
▫️送信先: 0.0.0.0/0
▫️ターゲット: nat-xxx~

手順3_接続確認
▪️NATゲートウェイの設定が完了したら、
プライベートサブネット内のインスタンスからインターネットに接続できるか
確認します。
▪️プライベートサブネット内のEC2にSSHログイン
以下のコマンドを実行し、外部との通信を確認
ping 8.8.8.8
▫️以下のようなレスポンスがあれば成功です。
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=117 time=12.3 ms
手順4_NATゲートウェイの削除及びElastic IPの解放
この手順は後の項番_手順が完了し、NATゲートウェイ及びElastic IPを
使用しなってから行なって下さい。
NATゲートウェイは使用時間やデータ転送量に応じて課金されます。
不要になったNATゲートウェイは削除することで、課金を止められます。
又、Elastic IPも解放 しないと、その分の料金が発生し続けるため注意が必要です。
▪️NATゲートウェイは時間単位とデータ転送量に応じて課金されます。
▫️必要なときだけ起動
NATゲートウェイを常時起動すると、使っていない時間も課金されます。
例、定期的なアップデート時にのみNATゲートウェイを有効化し、
利用が終わったら削除することでコストを削減できます。
▫️データ転送を最小限にする
アップデートやインストールの際には、プライベートサブネット内で
キャッシュを活用し、同じデータを何度もダウンロードしないようにすることで、
データ転送料を抑えられます。
▪️画面左側の「NATゲートウェイ」を選択します。
▫️「削除したいNATゲートウェイ」を選択します。
▫️画面右上の「アクション」→ 「NATゲートウェイを削除」を選択します。
▫️確認画面で 削除 を押下します。
▪️画面左側の「Elastic IP」を選択します。
▫️「解放したいElastic IP」を選択します。
▫️画面右上の「アクション」→ 「Elastic IPを解放」を選択します。
▫️確認画面で 解放 を押下します。
項番4_DBサーバーにMariaDBをインストール
手順1_Webサーバーを踏み台にしてDBサーバーにログイン
▪️DBサーバーはプライベートサブネット内に配置されているため、
直接インターネットからアクセスすることはできません。
まず、踏み台となるWebサーバーにSSH接続し、
その後DBサーバーへSSHでログインします。
踏み台サーバー上で実行
ssh -i my-key.pem ec2-user@10.0.2.10
▪️DBサーバーにログインしたら、以下のコマンドを実行してMariaDBをインストールします。
sudo dnf -y install mariadb105-server
NATゲートウェイ経由でインターネットに接続し、パッケージがダウンロードされ、
MariaDBがインストールされるはずです。
手順2_MariaDBの起動と初期設定
▪️インストールが完了したら、MariaDBを起動し、セキュリティ設定を行います。
以下のコマンドをDBサーバー上で実行してMariaDBを起動します。
sudo systemctl start mariadb
▪️続いて、起動時に自動でMariaDBが立ち上がるように設定します。
sudo systemctl enable mariadb
▪️セキュリティを強化するために、初期設定スクリプトを実行します。
sudo mysql_secure_installation
▪️このコマンドを実行すると、いくつかの質問が表示されるため、
以下の手順に従って入力してください。
▫️現在のrootパスワードを求められたら、そのままEnterを押す。
▫️Unixソケット認証を有効にするか聞かれるので、Yを入力しEnter。
▫️rootパスワードを変更するか聞かれるので、Yを入力し、新しいパスワードを設定。
▫️匿名ユーザーを削除するか聞かれるので、Yを入力。
▫️リモートからのrootログインを無効にするか聞かれるので、Yを入力。
▫️テストデータベースを削除するか聞かれるので、Yを入力。
▫️すべての設定を適用するか聞かれるので、Yを入力。
項番5_WordPress用のデータベース作成
手順1_WordPress用のデータベース作成
▪️以下のコマンドをDBサーバー上で実行し、MariaDBにログインします。
(MariaDBのコマンドラインに入ります)
mysql -u root -p
enter password: パスワードを入力
▪️次のSQLを実行し、データベース名を設定します。
▫️データベース名:wordpress
CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8 COLLATE
utf8_general_ci;
▪️WordPress用ユーザーの作成
WordPressがデータベースにアクセスする為、以下を設定します。
▫️ユーザー名:wordpress
▫️パスワード:wordpresspasswd
GRANT ALL ON wordpress.* TO 'wordpress'@'%' IDENTIFIED BY 'wordpresspasswd';
▪️上記の権限を反映させる為、以下のコマンドを実行します。
FLUSH PRIVILEGES;
▪️作成されたユーザーが正しく登録されているか確認するには、
以下のコマンドを実行します。
SELECT user, host FROM mysql.user;
▪️以下のような出力が表示されれば、設定は完了です。
+-------------+-----------+
| User | Host |
+-------------+-----------+
| wordpress | % |
| mariadb.sys | localhost |
| mysql | localhost |
| root | localhost |
+-------------+-----------+
▪️設定が完了したら、exit で、mysqlコマンドを終了して下さい。
exit
項番6_WebサーバーにWordPressをインストールする
手順1_PHPのインストール
▪️WordPressを動作させるために、PHPをインストールします。
最新のWordPressではPHP 7.4以上が推奨されているため、
ここでは PHP 8.1 をインストールします。
Webサーバー上で実行
sudo dnf -y install php8.1
▪️WordPressの実行に必要なPHPのライブラリ(mbstring、mysqli)もインストールします。
Webサーバー上で実行
sudo dnf -y install php8.1-mbstring php-mysqli
手順2_MariaDBのインストールと接続確認
▪️WordPressのデータを保存するために、MariaDBを使用します。
WebサーバーにMariaDBのクライアントをインストールし、DBサーバーへの接続を確認します。
▪️MariaDBクライアントのインストール
Webサーバー上で実行
sudo dnf -y install mariadb105-server
▪️DBサーバーへの接続確認
Webサーバー上で実行
mysql -h 10.0.2.10 -u wordpress -p
ここで、「10.0.2.10」はDBサーバーのIPアドレスです。
-u wordpress はWordPress用のデータベースユーザー、
-p はパスワード入力を意味します。
手順3_WordPressのダウンロード
▪️公式サイトからWordPressをダウンロードします。
Webサーバー上で実行
cd ~
wget https://ja.wordpress.org/latest-ja.tar.gz
▪️ダウンロードしたファイルを解凍します。
Webサーバー上で実行
tar zxvf latest-ja.tar.gz
解凍後、wordpress ディレクトリが作成されます。
手順4_WordPressをApacheの公開ディレクトリに配置
▪️WordPressをWebサーバー(Apache)の公開ディレクトリ
/var/www/html/ にコピーします。
Webサーバー上で実行
sudo cp -r wordpress/* /var/www/html/
▪️コピーしたファイルの所有権をApacheに変更します。
Webサーバー上で実行
sudo chown apache:apache /var/www/html -R
手順5_Apacheの起動
▪️Apacheを起動し、変更を適用します。
Webサーバー上で実行
sudo systemctl start httpd
▪️すでに起動している場合は、以下のコマンドで再起動してください。
Webサーバー上で実行
sudo systemctl restart httpd
手順6_WordPressの初期設定
▪️ブラウザでWebサーバーの パブリックDNS または
パブリックIPアドレス にアクセスすると、WordPressの初期設定画面が表示されます。
Webサーバー上で実行
http://ec2-43-207-94-243.ap-northeast-1.compute.amazonaws.com
▪️初期設定の手順:「さあ、始めましょう!」を押下します。
▫️データベース名: wordpress
▫️ユーザー名: wordpress
▫️パスワード: wordpresspasswd
▫️データベースのホスト名: 10.0.2.10
▫️テーブル接頭辞: wp_(デフォルトのまま)
▫️「インストール実行」を押下します。

▪️サイトのタイトル、管理者ユーザー名・パスワード/メールアドレスを設定します。

手順7_WordPressのログイン
▪️インストールが完了すると、管理画面 /wp-admin/ にアクセスできるようになります。
Webサーバー上で実行
http://ec2-パブリックアドレス.ap-northeast-1.compute.amazonaws.com/wp-admin/
▪️作成したadminユーザーでログインし、ブログ記事の投稿や設定が
できるようになります。

まとめ
▪️AWS上のWebサーバーにWordPressをインストールし、ブログシステムを構築できました。
▪️DBサーバーはプライベートサブネットに配置され、
▪️NATゲートウェイ経由でのみインターネットに接続可能な構成になっています。
ポイント
▪️Webサーバーはパブリックサブネットに配置し、インターネット公開しています。
▪️DBサーバーはプライベートサブネットに配置し、
直接インターネットからアクセスできないように設定しています。
▪️NATゲートウェイを経由してDBサーバーのアップデートや
ソフトウェアインストールを実施しています。
参考文献
Amazon Web Services基礎からのネットワーク&サーバー構築改訂4版 Kindle版
ネットワーク構築からApache HTTP Serverのインストールまでを解説
Qiita
この記事を書いた理由
これまで以下のAWS資格を取得し、2024年12月から2社目のIT会社に転職成功。
今はAWSを活用したシステム構築の支援業務を行なっています。
本記事は、業務で行った内容の復習とアウトプットを兼ねて作成しました。
AWSの具体的な設定手順を学びたい方に少しでも役立てば幸いです。
既に合格済のAWS資格
2024年04月11日「AWS Certified Cloud Practitioner」
2024年06月27日「AWS Certified Solutions Architect - Associate」
2024年08月13日「AWS Certified Sysops Administrator - Associate」
2024年11月19日「AWS Certified Solutions Architect - Professional」


