大阪事業所の西野です!
1年ほどAWSの勉強(主に資格)をしてきましたが、理解をより深めるためwordpressのサイトをAWS上に構築してみようと思います。
1.構成
今回の構成はシンプルで、WebサーバーにはインターネットからSSHで接続し、RDSをプライベートサブネットに配置。WordPressをインストールしたWebサーバーからのみリクエストを受け付ける形になっています。2.構築
2-1 VPCの作成
まずはVPCを作成します。設定値は以下の通りです。
| 項目 | 設定値 |
|---|---|
| 名前タグ | start-aws-vpc |
| IPV4CIDR範囲 | 10.0.0.0/16 |
2-2 サブネットの作成
Public Subnet(Webサーバー用)と、Private Subnet(RDS用)を作成します。冗長性のため、Private Subnetは異なるAZにも配置します。・Public Subnet
| 項目 | 設定値 |
|---|---|
| 名前タグ | start-aws-public-subnet |
| AZ | us-west-2a |
| IPV4CIDR範囲 | 10.0.10.0/24 |
・Private Subnet1
冗長性を確保するため異なるAZに作成します。
| 項目 | 設定値 |
|---|---|
| 名前タグ | start-aws-private-subnet |
| AZ | us-west-2a |
| IPV4CIDR範囲 | 10.0.20.0/24 |
・Private Subnet2
| 項目 | 設定値 |
|---|---|
| 名前タグ | start-aws-private-subnet |
| AZ | us-west-2b |
| IPV4CIDR範囲 | 10.0.21.0/24 |
2-3 EC2の作成
EC2は無料枠のAMIとインスタンスタイプを使用し、先ほど作成したPublic Subnetに配置します。インターネット接続の設定は以下の通りです。・インターネットゲートウェイをVPCにアタッチ
・ルートテーブルの送信先を 0.0.0.0/0 に設定
・セキュリティグループで22番ポート(SSH)を許可
インスタンスを起動させて、SSH接続できるか疎通確認を行います。ターミナルで以下のコマンドでEC2作成時に生成されたキーペアを使用してパブリックIPを指定します。
ssh -i ~/Desktop/start-aws-keypair.pem ec2-user@'IPアドレス'
接続に成功したらこんな感じになります。
, #_
~\_ ####_ Amazon Linux 2
~~ \_#####\
~~ \###| AL2 End of Life is 2025-06-30.
~~ \#/ ___
~~ V~' '->
~~~ / A newer version of Amazon Linux is available!
~~._. _/
_/ _/ Amazon Linux 2023, GA and supported until 2028-03-15.
_/m/' https://aws.amazon.com/linux/amazon-linux-2023/
問題なく接続できました。
IPを自動割り当てしているのでssh接続時に指定するipは都度変更される
2-4 Apachのインストール
Ec2でWebサービスを公開するためにApachをインストールします。 以下のコマンドでインストールします。①httpdがApachの実行ファイルになります。
sudo yum install httpd -y
②インストールできたら起動します。
sudo systemctl start httpd.service
③実行できているか念のため確認します。
sudo systemctl status httpd.service
上記コマンドでActiveのステータスがActiveならApachの起動は完了です。
2-5 RDSの作成
DBインスタンスのインストールを行います。設定値は以下の通りです。| 項目 | 設定値 |
|---|---|
| エンジン名 | MySQL |
| テンプレート | 開発/テスト |
| DBインスタンスサイズ | db.t4g.micro |
| サブネット名 | start-aws-vpc |
| セキュリティグループ | start-aws-dg-sg |
セキュリティグループはWebサーバーからのリクエストのみを許可します。
2-6 webサーバーとの疎通確認
WebサーバーにMySQLをインストールし、MySQLに接続して疎通確認を行います。sudo yum -y install mysql
mysql -h start-aws-mysql,,,-u root -p
3.wordpressのインストール
wordpress用のDBの設定を行います。
DBはすでに作成しているので、操作するためのユーザーを作成して権限を与えます。
# 'start_aws' という名前のユーザーを作成し、任意のホストから接続できるようにする
MySQL [(none)]> CREATE USER 'start_aws'@'%' IDENTIFIED BY 'password';
# 'start_aws' ユーザーに 'start_aws_dev' データベースの全てのテーブルに対するすべての権限を付与
MySQL [(none)]> GRANT ALL ON start_aws_dev.* TO 'start_aws'@'%';
権限が反映されたことを確認します。
MySQL [(none)]> SELECT user, host FROM mysql.user;
+--------------------+-----------+
| user | host |
+--------------------+-----------+
| rds_superuser_role | % |
| root | % |
| start_aws | % |
| mysql.infoschema | localhost |
| mysql.session | localhost |
| mysql.sys | localhost |
| rdsadmin | localhost |
+--------------------+-----------+
インストール自体は下記の流れで行いました。
# WordPressをインストールするための最新の日本語版ファイルをダウンロード
wget https://ja.wordpress.org/latest-ja.tar.gz
# ダウンロードしたWordPressディレクトリに移動
cd wordpress
# WordPressの全ファイルを/var/www/html/にコピー
sudo cp -r * /var/www/html/
# コピーしたファイルとディレクトリの所有者をApacheに変更
sudo chown apache:apache /var/www/html/ -R
# Apacheを再起動して設定を反映
sudo systemctl restart httpd.service
この辺は試行錯誤しましたが上記でインストールが完了しました。
パブリックIPにアクセスするとwordpressのログイン画面が表示されるので作成したDBの情報を入力します。
ログインするとwordpressサイトが表示されました。無事に成功です!

4.まとめ
構成がシンプルだったので比較的スムーズに構築することができました。
ルーティングやインスタンス間の関係性などは実際に作業すると理解がしやすく勉強になりました。他にも色々なAWSサービスを実際に触って勉強を続けてみようと思います!


