AWSを用いたLaravelアプリのデプロイ方法・手順【3.WEBサーバーの構築】

プログラミング

AWSを用いたLaravelアプリのデプロイ方法・手順【3.WEBサーバーの構築】

どうも、えんつかです。

AWSを用いたWEBアプリデプロイ方法の第三段です。
今回は、WEBサーバーの構築方法について記載していきます。

なお、前回はネットワークの構築方法について記載しました。
参考にどうぞ。

本ブログで紹介している手法は、UdemyにてWEBエンジニアのプロが紹介している講座を参考にさせて頂いています。結構、割愛させて頂いている内容がありますので、詳細について学びたい方はUdemyにて学ぶと良いと思います。動画なので学びやすく、レビューも豊富で質の高い教材を選ぶことができます。

Udemyはこちら


AWSを用いたLaravelアプリのデプロイ方法・手順【3.WEBサーバーの構築】

それでは、構築していきましょう!

EC2インスタンスの準備

EC2とは、Elastic Compute Cloudの略で、AWS上の仮想サーバーです。仮想とは、あたかもあるかの様に振る舞うことで、本来なら現実世界にサーバー(パソコン)を準備して、電源確保して、配線準備して〜といったものをネット上で完結させてしまう技術です。凄いですよね!

今回は、手法についてまとめていますので、詳細についてはUdemyで学ばれると良いと思います。

EC2インスタンスの準備は以下の通りで進めていきます。

  1. AMIの選択
  2. インスタンスタイプの選択
  3. インスタンスの詳細設定
  4. ストレージの選択
  5. タグの選択
  6. セキュリティグループの選択
  7. SSHキーペアの設定

1.AMIの選択

AMIはAmazon Machine Imageの略で、オブジェクト思考でいうクラスの様なものです。要するに、OSのテンプレートの様なものです。AMIからEC2をインスタンス化して、OSを設置します。

まず、IAMユーザーでログインし、サービスからEC2ダッシュボードへ移動します。EC2ダッシュボードへ移動したら、「インスタンス」➡︎「インスタンスの作成」とクリックです。

画面を移動したら、「クイックスタート」➡︎「Amazon Linux 2 AMI」を選択します。

手順AWS_028

2.インスタンスタイプの選択 3.インスタンスの詳細設定

インスタンスタイプは無料枠内の「t2.micro」とします。
チェック後「次のステップ:インスタンスの詳細の設定」をクリックし、進めます。

手順AWS_029

次に、以下の通り設定していきます。
状況によっては、選択が変わりますが、個人的な小さいアプリをデプロイする前提で記載していきます。

インスタンス数:1
購入のオプション:チェック外す
ネットワーク:すでに作成したVPCを選択
サブネット:インターネットに接続するパブリックネットワークを選択
自動割り当てパブリックIP:有効
配置グループ:チェックを外す
キャパシティーの予約:なし
IAMロール:なし
シャットダウン動作:なし
終了保護の有効化:なし
モニタリング:なし
テナンシー:共有
Elastic Inference:チェック外す
T2/T3無制限:チェック外す
ネットワークインターフェイス:プライマリIPにIPアドレス設定(ここでは、パブリックサブネットのIPアドレスの範囲内にある10.0.10.10としました)

設定が完了したら、「次のステップ:ストレージの追加」です

手順AWS_030

4.ストレージの選択

続いてストレージです。
ストレージについては、ほぼデフォルト設定で、以下の写真の通りでOKです。
次のステップ:タグの追加」をクリックします。

手順AWS_031

5.タグの選択

タグの追加については、追加で作成しましょう。
作成は、作成するインスタンスが何かわかる様につけましょう。
キー:Name
値:任意(どのインスタンス名かわかる様につけましょう)
作成したら、「次のステップ:セキュリティグループの作成」に進みましょう。

6.セキュリティグループの選択

セキュリティグループは、
新しいセキュリティグループを設定する:チェック
セキュリテイグループ名:作成したタグの値を記述しましょう
その他は、そのままでOKです。

手順AWS_032

7.SSHキーペアの設定

次に進んだら、ポップアップで以下の画面が表示されます。
新しいキーペアの作成を選択
キーペア名を入力(任意)
キーペアのダウンロードを実行
を進めてください。ファイルはデスクトップの仮保存してください。
後々SSHログインする為のもので、今後ダウンロードできなくなるので無くさない様保管してください。
そして、インスタンスの作成を行なってください。

インスタンスの表示を行い、インスタンス状態がrunning、ステータスチェックが合格すれば作成完了です。

手順AWS_033

Apacheのインストール

続いて、設置したWEBサーバーにApacheをインストールしていきます。
Apacheをインストールするためには、EC2にSSHログインする必要があります。

SSHログインとは、簡単にいうと暗号化してログインするという意味です。

それでは、まずターミナルを起動し、コマンドを実行していきます。

chmod 600 ~/Desktop/test-aws-ssh-key.pem

こちらにより、ダウンロードしたSSHキーペアの権限を変更します。test-aws-ssh-key.pemは、私がダウンロードしたSSHキーペアファイルです。
chmodについては、こちらのQiita記事に詳細が書かれています。

続いて、SSHログインします。

ssh -i ~/Desktop/test-aws-ssh-key.pem ec2-user@13.115.102.246

ec2-user@以降の数字は、作成したEC2インスタンスのIPv4 パブリック IPです。こちらは、EC2サービスから左側のメニューからインスタンスをクリックし、作成したインスタンスを選択すると、説明タブに表示されますのでこれをコピペします。

これを入力するとyes/no ?と聞かれますので、yesと入力して進めます。
これで、EC2へSSHログインできました。
なお、ログアウトは、exitと入力すると実施できます。

それでは、SSHログインを行なった状態でEC2を最新版にアップデートしましょう!少し時間がかかります。
sudo yum update -y

Apacheをインストールします。
sudo yum -y install httpd
Apacheを起動します。
sudo systemctl start httpd.service
Apacheの起動状態は以下のコマンドで確認できます。active(running)になっていれば起動状態です。
sudo systemctl status httpd.service
なお、毎回Apacheの起動はダルイのでこちらのコマンドを実行することで、自動起動設定が可能です。
sudo systemctl enable httpd.service
自動起動設定になっているかの確認は次のコマンドでできます。
sudo systemctl is-enabled httpd.service
enableとなっていれば、自動設定になっています。

ファイアウォールの設定

すでにインターネットからアクセスできそうですが、実はファイアウォールによって必要なアクセスだけアクセスできる様になっており、その他のアクセスはシャットアウトされています。ですので、これからファイアウォールの設定を変更していきます。

webサーバーへのアクセス可能状態の確認は、SSHへログインした状態で以下のコマンドで確認できます。
sudo lsof -i -n -P
初期状態では、ポート番号22(TCP*:22 listen)がsshdアクセスできる様になっていると思います。sshdは、ssh接続する為のものです。ここを変更していきます。

AWSでの設定は、セキュリティグループのポート番号を設定することで変更することができます。セキュリティグループの設定は、EC2ダッシュボードの以下の写真の通りクリックしていくと表示できます。

手順AWS_034

クリック先にセキュリティグループが表示されます。
インバウンドタブをクリックすると現在のアクセス許可状態が確認できます。
写真の状態では、SSH接続のみポート範囲22で許されている状況です。
ここに、HTTPアクセスを許可していくわけです。
編集をクリックして進めます。

手順AWS_035

編集をクリック後次のポップアップ画面が表示されますので、ルールの追加をクリックし、タイプをHTTP、ソースを任意の場所を選択します。ポート番号は自動で80に割り振られます。

手順AWS_036

これでWEBサーバーがレスポンスを返せる様になりました。
これで試しに自身のIPアドレスをブラウザに入力すると、Apacheが表示されると思います。

Elastic IPアドレスの設定

実は、WEBサーバーを起動・停止を行うとIPアドレスが自動で変化してしまいます。Elastic IPアドレスを設定することで固定しましょう。

EC2ダッシュボードのElastic IPからElastic IPアドレスの割り当てをクリックです。

手順AWS_037

画面が移動しますので、そのまま割り当てをクリックします。

手順AWS_038

そして、割り当てたアドレスを選択した状態で、アクション内のElastic IPアドレスの関連付けをクリックします。

手順AWS_038

そして以下の通り関連付けていきます。

手順AWS_040

しばらくElastic IPアドレスを使用しない場合は、アクションから、関連付けの解除➡︎アドレスの解放を選択しましょう。解放すると料金が抑えられます。
なお、お金が継続的に発生してしまうので、使用しない場合は、EC2インスタンスの停止も実行してください。

EC2のインスタンス停止は、EC2ダッシュボードの左側メニューのインスタンスから、インスタンスを選択し、アクション➡︎インスタンスの状態➡︎停止の順に進めて停止してください。

以上でWEBサーバーの構築は終了です!