13
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

AWS EC2, RDS, S3を使った簡単なサーバー構築

Last updated at Posted at 2020-08-22

はじめに

この記事はLaravelでwebサービスを公開するときに調べたものをまとめた記事になります。
ローカルのDockerでnginx, PHP, MySQLコンテナを作成したものをAWS上にデプロイしました。
利用サービスについてはすべて無料枠での利用です。

EC2

【ざっくりとした流れ】

  • VPC/サブネットを作る
  • インターネットゲートウェイを作る
  • EC2(サーバー)を立てる
  • ルーティングとセキュリティグループを設定
  • SSHでEC2にアクセスする

VPCはAWSの中に作成するため、作成しただけではインターネットに接続できない。
インターネットに接続させるために作成したVPCとインターネットゲートウェイを紐付ける必要がある。
インターネットゲートウェイを作成後、画面上部のアクションボタンからVPCにアタッチを選択
その後、対象となるVPCを選択する。

AMIの選択

作成するインスタンスのマシンイメージを選択
どういうサーバーを起動するか
※今回はAmazon Linux 2 AMI(HVM)を選択

インスタタンスタイプの選択

サーバーのスペックを選択する
スペックが高くなるほど料金も高くなる
※今回はt2.miroを選択
AWSではスペックの可変が楽なため、スモールスタートができる。
必要に応じてスペックを上げていく。

インスタンスの詳細の設定

今回は基本的なインスタンスの作成のため特に変更点はなし
ネットワークを作成したVPCを選択
グローバルIPアドレスを割り当てるため自動割り当てパブリックIP有効

タグの追加

設定しなくても問題はないが、複数サーバーを立ち上げる際などネーミングをしておくことによって管理がしやすくなる。

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

どのポートの通信を許可するかを設定する。
セキュリティグループ名に任意の名前を入力する。
今回は80(http) 22(ssh)の2つをルールに追加
ソースを0.0.0.0/0に設定するとすべてのIPアドレスからインスタンスへのアクセスが許可される。

キーペアの作成

EC2にsshでアクセスするときにキーペアが必要となる。公開鍵と秘密鍵みたいなもの。
新しいキーペアの作成を選択後、キーペア名を入力する。
キーペアのダウンロードボタンを押しローカルの任意場所に保存する。
※ssh接続するときにこのキーのパスを入力するため覚えておく

インスタンス作成を押すとインスタンスが作成される

ルーティングの設定

VPCからルートテーブルを選択。
ルートテーブルの作成から新たにルートテーブルを作成し、作成したVPCを選択する。
ルートの編集からルートを追加し、ターゲットを作成したインターネットゲートウェイを選択する。
通信を行うときに設定したインターネットゲートウェイをめがけて通信することでインターネットに接続できる。
サブネットの関連付けの編集から作成したルートテーブルのルートをどのサブネットに適応させるかを選択する。

sshでEC2にアクセス

ssh -i [ダウンロードしたキーペア] ec2-user@[IPv4パブリックIP]

[ダウンロードしたキーペア]:ダウンロードしたキーペアの絶対パス
[IPv4パブリックIP]:対象インスタンスの説明に記載されているIPv4パブリックIP
Amazon Linuxのsshのデフォルトで接続するユーザーがec2-user
image.png
接続成功!

参考記事

AWSでのEC2構築
【AWS 入門】EC2とDockerでHello Worldしよう
ポートとは?

RDS

【ざっくりとした流れ】

  • DB用のサブネットグループ作成
  • セキュリティグループの設定
  • DB(MySQL)構築
  • LaravelのDB設定変更

DB用サブネットグループ作成

RDSでDBサーバを構築するときに、インスタンスを所属させるためのサブネットグループというものを用意する必要がある。

各 DB サブネットグループには、特定の AWS リージョン内の少なくとも 2 つのアベイラビリティーゾーンにサブネットが必要です。VPC に DB インスタンスを作成するときに、DB サブネットグループを選択する必要があります。

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

EC2からRDSへ接続するために通信許可の設定を行う。
上記で設定した80番ポート22番ポートに加え、3306(MySQL)番ポートも追加することでEC2からRDSへ接続が可能となる。

DB構築

  • エンジン選択
  • DB詳細の指定
    マスターユーザー名とマスターパスワードはDB接続の際に必要
  • [詳細設定]の設定
    VPC インスタンスが作られるVPC
    サブネットグループ 上記で作成したサブネットグループ
    データベースの名前 任意データベース名※DB接続で必要

LaravelのDB接続設定

Laravelアプリケーションの.envに下記を設定

項目 設定値 説明
DB_HOST 作成した[データベース]のRDSのエンドポイント 作成したRDSインスタンスの詳細ページで確認する。
DB_DATABASE データベース名 自分で設定したデータベース名
DB_USERNAME ユーザー名 自分で設定したDBマスターユーザ名
DB_PASSWORS 作成した[データベース]のマスターパスワード 自分で設定したDBマスターパスワード

設定完了後php artisan migrate実行

参考記事

RDS作成(無料枠)
AWSでウェブアプリケーション環境構築:②RDSでDBを作成し、Laravelサンプルアプリを動かす最小構成を構築

S3

【ざっくりとした流れ】

  • S3用のIAMを作成
  • Bucketの作成
  • LaravelからS3利用

S3用のIAM作成

ユーザー追加画面からユーザー名を入力し、プログラムによるアクセスを選択。
既存のポリシーを直接アタッチタブからS3を検索し、AmazonS3FullAccessにチェックを入れて作成。
作成後アクセスキーIDシークレットアクセスキーが表示される。
ストレージ接続時に必要。

Bucket作成

バケットを作成するから新規バケットを作成
バケット名とリージョンを選択
オプションは一旦すべてオフ
アクセス権限については作成後に設定

LaravelからS3利用

S3用のパッケージをインストール

 composer require league/flysystem-aws-s3-v3

.envに下記情報を記載

AWS_ACCESS_KEY_ID= ユーザーを作成した際に表示されたアクセスキーID
AWS_SECRET_ACCESS_KEY= 上記手順でユーザーを作成した際に表示されたシークレットアクセスキー
AWS_DEFAULT_REGION= ap-northeast-1 (東京リージョンで作成したため)
AWS_BUCKET= 作成したbucket名

参考記事

超簡単!LaravelでS3を利用する手順

13
7
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
13
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?