0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【AWSやるぞ】何も知らないところからElastic Beanstalkを利用してPHP環境を構築編

Posted at

いい加減AWSをやっていく記事

今回は、サインアップ〜Elastic Beanstalkを使ってみよう、まで
思ったより書くことが多いので、記事を分割する

用意するものと前提知識

  • クレジットカード(一年は無料の範囲で遊べる)
  • 住所と電話番号
  • AWS の簡単な知識(EC2とは、S3とは程度)
  • レンタルサーバーでデプロイした経験と、たくさんの時間 :point_left:

サインアップ

ここに大体書いてある

以下リンクより、「無料アカウントを作成」を選択する
https://aws.amazon.com/jp/free/

スクリーンショット 2024-10-05 17.12.45.png

  • メールアドレスと、アカウント名を登録する
  • メールアドレスに検証コードが届いているので、それを入力
  • [step1] root ユーザーのパスワードを登録する
  • [step2] AWSの利用用途と連絡先を選択する
    • AWSの無料枠は、会社ごとらしいので複垢に注意
    • 住所は英語で入力する
  • [step3] クレジットカード情報を登録する
  • [step4] 電話かSMSで本人確認をする
    • この時の番号は、step2の連絡先とは別のものが指定可能
  • [step5] サポートプランを登録する
    • ベーシックでよくないか?

わーい簡単に作れた!

スクリーンショット 2024-10-05 17.31.05.png

AWS にはリージョンという考え方があり、それぞれに別の環境が用意できる
もし「東京」や「大阪」になっていないなら右上の赤丸から変えよう

この記事では ap-northeast-1 東京を前提に進める

最低限の用語

  • EC2
    • サーバー
    • Linux とか Ubuntu とかだと思えばOK
  • RDS
    • データベース mysql / PostgreSQL 色々対応している
    • AWS では、データベース用のサーバーを別に立てる
    • スナップショットが撮れたりとても便利
  • S3
    • ファイルサーバー
    • Google Drive みたいなもの
    • AWS にて、ファイルはここに保管する
  • CloudWatch
    • ロガーサービス
    • AWS 全てのログはここに集約させるイメージ
  • IAM
    • AWS を利用するアカウント
    • AWS は権限がとても細かく分かれている
    • 用途ごとに必要最低限の権限を付与して利用する
    • アプリケーションも、このIAMを利用してAWSの機能にアクセスする

環境の立ち上げ

Amazon Elastic Beanstalk というものを使用する
これはサーバー環境とファイルを自動的に管理してくれるもの

スクリーンショット 2024-10-07 19.24.58.png

公式チュートリアルもあるのだが、時代がだいぶ変わったみたいでそのままでは動かない...

備忘録をかねて手順を記載する

1. EC2 ロールの作成

まず、EC2 を運用するための権限を作成する

スクリーンショット 2024-10-08 18.42.19.png

IAM というサービスから「ロール」のページを開き、「ロールを作成」を選択する

スクリーンショット 2024-10-08 18.43.23.png

「EC2」のロールを作成する

image.png

どの権限を付与するか聞かれるので、以下の三つの権限を検索して付与する
付与にはチェックボックスを選択する

  • AWSElasticBeanstalkWebTier
  • AWSElasticBeanstalkWorkerTier
  • AWSElasticBeanstalkMulticontainerDocker

スクリーンショット 2024-10-08 18.48.44.png

権限の名前は aws-ec2-service-role にしてみる

screencapture-us-east-1-console-aws-amazon-iam-home-2024-10-08-18_51_31.png

できた! :raised_hands:

スクリーンショット 2024-10-08 18.56.02.png

2. EC2 のキーペアを作成する

SSH 用の鍵を先に生成する
本来 AWS は、インスタンスにアクセスしないように設定するのが正攻法らしいが、
今回は実験なので SSH アクセスできるようにしておく

スクリーンショット 2024-10-08 19.22.26.png

EC2 から「キーペア」のページを開き、「キーペアを作成」を選択する

スクリーンショット 2024-10-08 19.23.06.png

鍵の名前は macbook-aws にした 安直
タイプは安全性を考え ED25519 が良いかと
鍵の形式は、windows なら ppk がおすすめだが、まぁどっちでも大丈夫だと思う

screencapture-ap-northeast-1-console-aws-amazon-ec2-home-2024-10-08-19_26_48.png

鍵がダウンロードされた
SSH 接続する際に使用するので、大切に保管しておこう

スクリーンショット 2024-10-08 19.29.13.png

3. Elastic Beanstalk の環境を作成する

スクリーンショット 2024-10-08 18.59.41.png

この機能を使って環境を作ると、サーバー自体の更新やデプロイが自動的にできる!
スケーリングも可能!
その代わり、あらかじめ用意されたプリセットしか使用できないみたい
CloudFormation ってやつの簡単版)

EB は、一つのアプリケーションに複数の環境が設定できる
(環境:本番、ステージング、テスト)

EB から「環境」のページを開き、「環境を作成」を選択する

スクリーンショット 2024-10-08 19.05.12.png

[STEP1] 環境を設定

まずは環境設定をするみたい
laravel-aws という名前で作ってみる

screencapture-ap-northeast-1-console-aws-amazon-elasticbeanstalk-home-2024-10-08-19_08_01.png

プラットフォーム にて、使用したい環境を設定する
ここを マネージドプラットフォーム にする
例えば PHP だと以下の環境から選ぶ形となる
用意されているものしか使用できないが、逆に言うと用意されていたらそのまま利用できる

スクリーンショット 2024-10-08 19.12.50.png

アプリケーションコード は、まずは サンプルアプリケーション とする

[STEP2] サービスアクセスの設定

AWSを操作する際のロールを設定する

screencapture-ap-northeast-1-console-aws-amazon-elasticbeanstalk-home-2024-10-08-19_31_36.png

サービスロール はまだ作成していないので、自動生成させる
次回からは生成したものを利用すれば良い

EC2キーペア には先ほど作成した macbook-aws を指定
ただこの鍵、ここで指定すると Port22 が 0.0.0.0/0 で解放されるらしいので要注意

EC2インスタンスプロファイル には先ほど作成した aws-ec2-service-role を指定

[STEP3] ネットワーキング、データベース、およびタグをセットアップ

サーバーの周辺環境を設定する

screencapture-ap-northeast-1-console-aws-amazon-elasticbeanstalk-home-2024-10-08-19_42_32.png

VPC は、環境をAWS内の仮想的なネットワークに閉じ込めることで、さらに安全に運用するものみたい

データベース は使うDBを設定する
今回は postgres を選択した
無料で使用可能なインスタンスは db.t3.micro db.t4g.micro、ストレージは 20GB まで
t3 はintel CPU、t4g は arm CPU らしい

そして データベース削除ポリシー
ここが重要みたいで、削除を選択すると、EB環境を消したら連動してデータも消えてしまう
スナップショットか保持、好きな方を選択しよう(なお消し忘れに注意)

[STEP4] インスタンスのトラフィックとスケーリングを設定

サーバー自体の設定をする

screencapture-ap-northeast-1-console-aws-amazon-elasticbeanstalk-home-2024-10-08-19_51_22.png

ルートボリューム は、サーバーのメインディスクの容量
AWS は基本的に EC2 には何も書き込まないように使うので、デフォルト 8GB で十分かと
RDS や S3、CloudWatch を利用しよう
EC2 に書き込むデータは消えるものとして考える

容量 がインスタンスやスケーリングの設定
AWS の推奨設定が変わったのか「スポットインスタンス」にしないとサーバー起動しない
罠 多分この通知がそれを言ってる

スクリーンショット 2024-10-08 19.56.16.png

5. 更新、モニタリング、ログ記録を設定

その他の設定

screencapture-ap-northeast-1-console-aws-amazon-elasticbeanstalk-home-2024-10-08-19_58_24.png

マネージドとかローリングとかあるが、要するに自動デプロイの設定
OSのアプデとかも空き時間を使って勝手にやってくれるんだって
今は1インスタンスしかないので、特に意味のない設定

プラットフォームソフトウェア が http サーバーの設定
Apache と Nginx で選べるが、素直に Nginx にしておこう

あと Eメール通知 だけちゃんと設定した

[STEP5] レビュー

最終確認ページ
まぁ間違ってても後で直せるからせーふ

起動中...

ほんとに時間がかかるのでお茶でも飲んで待つ :tea:
イベントタグでも眺めておこう

スクリーンショット 2024-10-08 20.02.50.png

起動に成功したら、「ドメイン」のURLをクリック!
もしうまくいかなかったら「イベント」タブにエラーが出ていないか確認すると良い

image.png

やったーここまで長かった......

スクリーンショット 2024-10-08 20.53.56.png

参考サイト

参考サイト:

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?