どうも、えんつかです。
先日、Laravelで作成したWEBアプリをAWS上にデプロイしてみました。
プログラミングをかじり始めた人、WEBアプリ初めて作ったけどどうしよう、と考えている方向けに作成しています。
AWS上にデプロイする為には、色々と準備する必要があり、一度で全て覚えるのは結構大変なので、その手法を記載していこうと思います。
本記事を読むことで、AWSを用いてLaravelアプリのデプロイ方法がわかると思います。
本ブログで紹介している手法は、UdemyにてWEBエンジニアのプロが紹介している講座を参考にさせて頂いています。結構、割愛させて頂いている内容がありますので、詳細について学びたい方はUdemyにて学ぶと良いと思います。動画なので学びやすく、レビューも豊富なので教材として質がとても高いです。
UdemyはこちらAWSを用いたLaravelアプリのデプロイ方法・手順【1.初期設定】
そもそもAWSってなんぞや?
AWSとはAmazon Web Serviceの略で、Amazonが提供するクラウド上での様々なサービスを指します。
AWSのサービスには、インフラ(サーバーやネットワーク)周りや画像ファイルのストレージ機能などその他合わせて、なんと100種類程のサービスがあります。
つまり、ネットがあればネット上でAWSのサービスを受けられるということです。
例えば、一昔前だとサーバー構築というと現実世界で場所を確保して、サーバー(パソコン)を購入して、LANで配線して、電源ケーブル繋げて〜等、色々準備必要なのですが、ネット上でポチポチするだけで、構成できてしまうということなのです。
便利過ぎますよね!Amazonすげぇ!
しかしながら、少しばかりお金が発生しますが、基本的には無料枠もあるのでそちらを主に用いてまとめていきます!
概要はこれくらいにして、早速手順を説明していきます。
前提条件は以下の通りです。
AWSへデプロイする為に先に以下の準備を行って下さい。
- AWSへの会員登録(クレジットカードの登録は必須です)
- Github上へアプリがpushされている
全体像
全体像は以下の通りです。
デプロイをする為にはインフラ(サーバーやネットワーク)を構築する必要があります。
- 初期設定
- ネットワークの構築
- WEBサーバーの構築
- ドメインの登録
- DBサーバーの登録
- WEBサーバーの冗長化
- Github上のWEBアプリをクローン
その他として、AWSは従量課金制度なので、使い過ぎない為の設定やアクセル負荷を分散させる(冗長化)方法についても記載していきます。
順に説明させていただきますが、手順が豊富なので記事を分割して説明していきます!
1.初期設定
初期設定の全体像は以下の通りです。
- CloudWatchで料金アラート設定
- IAMで作業ユーザーの作成
- CloudTrailで操作ログの記録
AWSは、従量課金制度になっています。使い過ぎるとお金が発生する仕組みです。なので、いくら使用したらAWSから通知を出してくれる設定をはじめに行いましょう。
CloudWatchで料金アラート設定
AWSからの通知設定はCloudWatchを用います。
自分で設定した金額を超えるような場合に、メールを送信してくれます。
そしたら、停止の動作をすれば安心ですね。
まず、ログインしてください。
ログイン後、以下の画像のように、マイ請求ダッシュボードへ移動です。
次に、Billingの設定に移動です。
(既に私の画面で請求料金表示されていますが気にしないで下さい)
続いて、請求内容を設定していきます。
番号順にチェックや記入を進めていきましょう。
請求アラートをクリック後にCloudWatchの設定に入ります。
請求➡︎アラームの作成の流れです。
続いて、メトリクスの選択を行います。メトリクスの選択をクリックし、設定を進めます。
請求をクリックです。
概算合計請求額をクリックです。
通貨にチェックを入れ、メトリクスの選択をクリックです。
そしたら、画像内の様に超過金額と通知の送信先を入力して、アラームの作成を行なって下さい。
私は、ひとまず10USDとしました。約1000円ですね。
そうすると、メールアドレスの確認をするポップアップが表示されるので、そちらでメールアドレスの認証を進めて下さい。
メールアドレスの確認は、メール内のConfirm subscriptionです。
以上で、料金アラームの設定は完了です。
現時点で料金幾ら位発生しているのだろうか、については、
アカウント➡︎マイ請求ダッシュボード から確認することができます。
最後に、アカウント➡︎マイアカウントをクリックします。
遷移先にIAMユーザー/ロールによる請求情報へのアクセス欄にて
編集➡︎IAMアクセスのアクティブ化をチェックし、更新します。
これは、次に説明するIAMユーザーでも料金を確認するための設定です。
IAMで作業ユーザーの作成
続いて、IAMユーザーの設定です。
まず最初にAWSアカウントを作成されていたかと思いますが、AWS上での操作は、作成したAWSアカウント内で更にアカウントを作成し、作業していくのが好ましいとされています。
AWSではじめに作成したユーザーは、ルートユーザーと呼ばれ、ルートユーザー内で作成するユーザーをIAMユーザーと呼びます。
理由としては、操作できる範囲を限定しセキュリティを高める為です。
ルートユーザーですと全てに対してアクセス権限がありますが、IAMユーザーではアクセス権を限定することができます。
これによって、セキュリティを高めるわけです。
まずIAMユーザー設定画面へ移動しましょう。
以下の通り、サービス➡︎IAMと入力し、IAMへ移動です。
続いて、ユーザーをクリックし、ユーザーの追加を行います。
ユーザー情報を入力していきます。
ユーザー名:任意設定
アクセスの権限:AWSマネジメントコンソールへのアクセス(AWSのWEBページ上で設定するという設定です)
コンソールのパスワード:任意設定
パスワードのリセットが必要:チェックを外す(サインイン毎回パスワード設定はダルいのでチェックを外します)
そして、次へ移動します。
既存のポリシーを直接アタッチ:クリック
ポリシーのフィルター:administratorAccessと入力し、表示させる
ポリシー名が表示されたらチェックを入れ、次のステップに移動
次の画面にタグの追加が表示されますが、そのまま次に進みます。(作成するユーザーがどの様なユーザーか情報を追加する為の項目です)
次に、作成するユーザー情報を確認して、ユーザーの作成をクリックです。
そして、遷移先のページで「ログイン手順をEメールで送信」があるので、こちらをクリックし、ログインする為の情報をメールで送信しておきましょう!
メール内にあるサインインURLをクリックし、ログインサイトへ移動し、作成したIAMの情報でログインしてください。
以上でIAMユーザーの作成・ログインが完了です!
CloudTrailで操作ログの記録
これは、いつ、誰が、どんな操作を行ったか記録する為のものになります。
したがってチームで開発を行う場合には設定推奨となります。個人開発であれば無視で構いません。
まずは、サービス欄にcloudtrailを入力し、サービスへ移動します。
証跡の表示➡︎証跡の作成へとクリックします。
証跡情報を作成していきます。
証跡名:任意設定です
証跡情報を全てのリージョンに設定:はい
データイベント:S3に保存(Lamdaでも可です)
S3パケット:チェックを入れる
S3/パケット:任意(グローバルで設定されているので他のユーザーで使用中の名前は使用できない様になっています)
全て入力したら、作成をクリック
以上で設定終了です!
お疲れ様でした!
まずは初期設定の完了です!
次回は、ネットワークの構築を記載していきます!