【AWS入門】AWSでWordPressの環境構築をしてみる_サーバー構築編

前回の記事

この記事は、前回の記事の続きです。

【AWS入門】AWSでWordPressの環境構築をしてみる_ネットワーク構築編①

記事の構成

  1. ネットワーク構築編①(パブリックサブネットの構築とインターネットゲートウェイの設定まで)
  2. サーバー構築編(EC2インスタンスの作成とSSHでの接続、apacheのインストールと公開設定まで)
  3. ネットワーク構築編②(プライベートサブネットの構築とNATゲートウェイの設定、接続まで)
  4. 完成編(mariaDBのインストールとWordpressのインストール、公開設定まで)

今回は「サーバー構築編(EC2インスタンスの作成とSSHでの接続、apacheのインストールと公開設定まで)」を取り上げます。

今回の構築完成図

今回は、前回作成したVPCとパブリックサブネットの中にEC2インスタンスを作成し、サーバーを構築していきます。さらにサーバーのなかにapacheをインストールして、WEBに公開するところまで実施していきたいと思います。

前提知識編

Elastic Compute Cloud(EC2)について

AWSでサーバーを構築するためには「EC2」というツールを使います。数分で立ち上げることができる従量課金制のサーバーです。

EC2で作成した仮想のサーバーのことを「インスタンス」と呼びます。

インスタンスには、VPC内で通信する用の「プライベートIPアドレス」とインターネットに通信する用の「パブリックIPアドレス」を付与し、インターネットに接続できるような構成で作られます。

「プライベートIPアドレス」と「パブリックIPアドレス」の違いは前回の記事で勉強しましたね。

AWSではこのEC2というツールにOSをセットアップしてサーバーを構築していきます。使えるOSは「Linux」や「Ubuntu」「Windows Server」など汎用的なOSが使えます。今はLinuxを使う人が多い印象です。

Linuxについて

LinuxはオープンソースのOSでWindowsやMacと同じ機能をもっていることから多くの企業で使われているOSの一つです。

無料で扱え、自由にカスタマイズ可能なので、非常に利便性が高いです。

詳しく知りたい方は、以下の記事を参照ください。

https://eng-entrance.com/you_can_do_linux

SSHについて

SSHとは、Secure Shellの略称でネットワークに安全に接続し、サーバーの操作や管理をするプロトコルのことです。

よくSSH接続っていうんですが、自分のPCからきちんと暗号化された鍵を使ってサーバーに入り、操作を行いましょう。ということを指します。

たとえばSSHで接続しないとすると、このサーバーうざいから壊してやろうと思って変なユーザーがはいってきてしまうといったことも起こり得てしまいます。

なので、ちゃんと鍵を使ってサーバーに接続しましょうね!という意味でこの「SSH」というプロトコルがでてくるという感じになります。

AWSもこのSSHを使ってEC2サーバーに接続していきます。EC2の実装の部分でやりますが、EC2を作成したときにアクセスキーを自分のPCに落として、その鍵がないとサーバーにははいれないという仕組みです。

みなさんが普段家に鍵をしめるのと同じ原理です!

apacheについて

apacheは、非常によく使われているWEBサーバーソフトウェアの一つで、サーバーを構築するにはこのソフトウェアをインストールしないといけません。

サーバーは用意しただけではなにも価値を発揮できず、そのサーバーの中にものを入れ込んで初めて価値を発揮します。例えるなら、宝箱みたいな感じです。

サーバーを稼働させるためのソフトウェアの一つが「apache」と認識しておいてください。

詳しく知りたい方は、以下の記事を参照ください。

https://www.kagoya.jp/howto/rentalserver/apache/

セキュリティグループについて

セキュリティグループというのは、AWSでサーバーのファイアウォール機能を提供してくれるツールです。AWSではこのセキュリティグループを使って、サーバーにアクセス可能なポート番号を指定します。

ポート番号というのは、TCP/IPプロトコルで通信する際の「ポート」という0~65536番まで割り当てられたデータの出入り口のことを指し、SSHだったら22番、HTTPだったら80番、HTTPSだったら443番とアプリケーションごとにすでに定められている番号のことを言います。(SSHやHTTPなど広く普及されているポート番号をウェルノウンポートといいます)

サーバーはこのポート番号を指定して入れるアプリケーション、入れないアプリケーションを制御します。

AWSではこの処理をセキュリティグループというツールで行うということです。

説明は以上となります。

それでは、実際に構築していきましょう。

実践編

EC2インスタンスの作成

①「EC2」と入力し、EC2の画面に遷移します。

②「インスタンス」を選択し、「インスタンスを起動」をクリックします。

③OSの選択ページに移動しますので、無料利用枠のAmazon Linux2を選択します。

④次にインスタンスファミリーを選択する画面に移動します。インスタンスファミリーというのは、コンピューターのレベルやストレージの容量を決める項目です。今回は無料利用枠である「t2.micro」を選択して、次のステップに移動します。

⑤次にインスタンスの設定画面に移動します。前回作成したVPC「test-vpc」を選択し、サブネットも前回作成した「test-publicsubnet」を選択します。自動割当パブリックIPを有効にします。これはパブリックIPアドレスの発行です。有効にしないとインターネットに繋げることができなくなってしまいます。そして、ネットワークインターフェースのプライマリIDに「10.0.1.10」と入力します。これはプライベートIPアドレスの発行です。入力しなかった場合は、自動で番号が割り当てられます。すべて選択できたら、次のステップをクリックします。

⑥ストレージはデフォルト設定のままで次のステップをクリックします。

⑦タグの追加でインスタンスの名前を設定します。キーに「Name」値に「web-server」と入力して、次のステップをクリックします。

⑧セキュリティグループの設定です。名前と説明を「web-server-sg」として、設定はSSH接続のみ許可のまま、「確認と作成」をクリックします。あとから追加で設定していきます。

⑨最終チェックをして、問題なさそうであれば「起動」をクリックして作成します。起動をクリックするとキーの作成画面になります。新しいキーの作成を選択して、名前を「test-aws-wp」としてキーのダウンロードを押します。デスクトップに保存して、インスタンスを起動していきましょう。

以上でインスタンスの作成は完了です。

続いて、SSH接続で実際にサーバーに入っていきましょう。

※ご説明するのは、Macでの操作方法になります。Windowsの方は以下の記事を参照ください。

https://dev.classmethod.jp/articles/aws-beginner-ec2-ssh/

SSH接続

①作成したインスタンスのパブリックIPアドレスをコピーしておきます。

②ターミナルを開いて、先程デスクトップにダウンロードした「test-aws-wp.pem」ファイルをssh配下に移動して、権限を自分だけが見れる状態にします。

cd Desktop
mv test-aws-wp.pem ~/.ssh/
cd ~/.ssh
ls -la
chmod 400 test-aws-wp.pem

③トップに戻って、以下コマンドでssh接続してみましょう。

cd ~
ssh -i ~/.ssh/test-aws-wp.pem ec2-user@先程コピーしたIPアドレス
Are you sure you want to continue connecting (yes/no/[fingerprint])?

↑初回は接続しますか?というのがでてくるので、「yes」と入力します。

このような画面がでてくれば接続成功です。

以上でSSH接続は完了です。続いてサーバーにapacheをインストールしていきます。

apacheのインストール

①SSHでサーバーに入っている状態で、次のコマンドを実行してapacheをインストールしていきます。

sudo su
yum -y install httpd
~
合計                                                                                                                                                                    6.0 MB/s | 1.9 MB  00:00:00     
 Running transaction check
 Running transaction test
 Transaction test succeeded
 Running transaction
   インストール中          : apr-1.6.3-5.amzn2.0.2.x86_64                                                                                                                                            1/9 
   インストール中          : apr-util-bdb-1.6.1-5.amzn2.0.2.x86_64                                                                                                                                   2/9 
   インストール中          : apr-util-1.6.1-5.amzn2.0.2.x86_64                                                                                                                                       3/9 
   インストール中          : httpd-tools-2.4.48-2.amzn2.x86_64                                                                                                                                       4/9 
   インストール中          : generic-logos-httpd-18.0.0-4.amzn2.noarch                                                                                                                               5/9 
   インストール中          : mailcap-2.1.41-2.amzn2.noarch                                                                                                                                           6/9 
   インストール中          : httpd-filesystem-2.4.48-2.amzn2.noarch                                                                                                                                  7/9 
   インストール中          : mod_http2-1.15.19-1.amzn2.0.1.x86_64                                                                                                                                    8/9 
   インストール中          : httpd-2.4.48-2.amzn2.x86_64                                                                                                                                             9/9 
   検証中                  : apr-util-1.6.1-5.amzn2.0.2.x86_64                                                                                                                                       1/9 
   検証中                  : httpd-2.4.48-2.amzn2.x86_64                                                                                                                                             2/9 
   検証中                  : apr-util-bdb-1.6.1-5.amzn2.0.2.x86_64                                                                                                                                   3/9 
   検証中                  : httpd-filesystem-2.4.48-2.amzn2.noarch                                                                                                                                  4/9 
   検証中                  : httpd-tools-2.4.48-2.amzn2.x86_64                                                                                                                                       5/9 
   検証中                  : apr-1.6.3-5.amzn2.0.2.x86_64                                                                                                                                            6/9 
   検証中                  : mailcap-2.1.41-2.amzn2.noarch                                                                                                                                           7/9 
   検証中                  : generic-logos-httpd-18.0.0-4.amzn2.noarch                                                                                                                               8/9 
   検証中                  : mod_http2-1.15.19-1.amzn2.0.1.x86_64                                                                                                                                    9/9 
 インストール:
   httpd.x86_64 0:2.4.48-2.amzn2                                                                                                                                                                         
 依存性関連をインストールしました:
   apr.x86_64 0:1.6.3-5.amzn2.0.2      apr-util.x86_64 0:1.6.1-5.amzn2.0.2 apr-util-bdb.x86_64 0:1.6.1-5.amzn2.0.2 generic-logos-httpd.noarch 0:18.0.0-4.amzn2 httpd-filesystem.noarch 0:2.4.48-2.amzn2
   httpd-tools.x86_64 0:2.4.48-2.amzn2 mailcap.noarch 0:2.1.41-2.amzn2     mod_http2.x86_64 0:1.15.19-1.amzn2.0.1 
 完了しました!

こんな感じででてきたらインストール成功です。

②以下のコマンドでapacheを起動して、自動起動もONにします。

systemctl start httpd.service
systemctl enable httpd.service

③ちゃんと起動されているか確認していきます。

systemctl list-unit-files -t service

以上でapacheのインストールは完了です。

最後にセキュリティグループの設定を行っていきます。

セキュリティグループの設定

①EC2の画面から「セキュリティグループ」を選択し、先程作成した「web-server-sg」をチェックします。下に詳細、インバウンドルール、アウトバウンドルール、タグがでてくるので、インバウンドルールを選択し「Edit Inbound rules」をクリックします。

ちなみに「インバウンドルール」と「アウトバウンドルール」の違いは、

・インバウンドルール→外からインスタンスに接続する向き

・アウトバウンドルール→インスタンスから外に接続する向き

で区別される。

②「ルールを追加」をクリックし、HTTP(80番)とHTTPS(443番)をフルオープン(0.0.0.0/0)で追加し、「ルールを保存」をクリックします。

これでセキュリティグループの設定が完了し、httpとhttpsプロトコルからEC2インスタンスへのアクセスができるようになりました。

サイトの確認

最後にサイトがちゃんと表示されるか確認してみましょう。

問題なければapacheのデフォルト画面がでてきます。

インスタンスのパブリックIPアドレスをコピーして、ブラウザのURLに貼り付けてみます。

以下のようにapacheのデフォルト画面が表示されたら成功です。

【まとめ】現状の構築図と次回実施事項

以上で、作成したVPCとサブネットの中にEC2インスタンスを構築し、apacheを表示させるところまで完了しました。

現状の構築図を再度確認してみましょう。

次回は、データベースを置く用のプライベートサブネットを作成し、NATゲートウェイを使用して、インターネット側からは入れず、サーバー側からインターネットに接続できるように構築していきます。

次回の構築図はこんな感じです。

次回の記事は以下より。

【AWS入門】AWSでWordPressの環境構築をしてみる_ネットワーク構築編②

 

ABOUTこの記事をかいた人

株式会社メンバーズ データアドベンチャー所属 データエンジニアとしてデータ基盤の構築から運用を行っております。 得意なことは、データ活用推進です。 日々の学びをアウトプットしていきます。