【AWS入門】EC2でWebサーバーを構築する

 
              AWSWeb                          
 
AWS

EC2でWebサーバーを構築する方法をまとめます。

EC2とは

Elastic Compute Cloudの略でAWS上の仮想サーバーです。

数分で起動することができ、1時間または秒単位の従量課金サーバーです。サーバーの追加・削除、マシンスペックの変更も行え、OSより上のレイヤについて自由に設定できます。

作成手順

手順は以下の通りです。

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

AMIとは

Amazon Machine Imageでインスタンス起動に必要なOSのイメージで、サーバのテンプレートのようなものです。

AWSやサードパーティがAMIを提供で、自前のカスタムAMIを作成することも可能です。

インスタンスタイプ

サーバーのスペックを定義したものです。以下の特徴があります。

  • インスタンスタイプにより、CPU、メモリ、ストレージ、ネットワーク帯域が異なります
  • インスタンスタイプにより料金が異なりスペックが高いほど料金も高いです。
  • アクセス数などに応じて必要なスペックのあるインスタンスタイプを選択します。

表記:m5.xlarge
m:インスタンスファミリー。インスタンスの特徴、CPU/メモリ/料金を最適化したものなどあります。
5:インスタンス世代。数値が大きいほど新しい世代で性能やコスパが良いです。
xlarge:インスタンスサイズ。CPUやメモリ、ネットワーク許容量が大きいです。

ストレージ

サーバーに紐付けるデータの保存場所でEC2のストレージは2種類あります。

EBS

Elastic Block Storeの略で以下の特徴があります。

  • 高い可用性と耐久性を持つストレージ
  • 他のインスタンスに付け替え可能
  • EC2インスタンスを止めたり削除してもEBSのデータは消えない
  • スナップショットを取得してS3に保存可能
  • EBSの費用が別途発生
  • OSやDBデータなど、永続性と耐久性が必要なデータを置く

インスタンスストア

  • インスタンス専用の一時的なストレージ
  • 他のインスタンスに付け替えできない
  • EC2インスタンスを停止、削除するとクリアされる
  • 追加費用は掛からない
  • 一時ファイルやキャッシュなど削除されても問題ないデータをおく

EC2の作成

  1. マネージメントコンソールでEC2作成を選択する
  2. Amazon Linux 2 AMI (HVM), SSD Volume Typeを選択する
  3. インスタンスタイプにt2.microを指定
  4. ネットワークにVPC、サブネットにパブリックサブネット、パブリックIPは有効、キャパシティーの予約はなし、プライマリIPを指定します。プライマリIPはパブリックサブネットのIPアドレスの範囲内で指定します。

項目 説明
スポットインスタンス  購入のオプションでスポットインスタンスにすると、より安価に利用できるが常時起動でなくなる。
配置グループ 複数のEC2インスタンスの通信を高速化するグループ
キャパシティの予約 事前リソースを確保しておくかどうか。
アベイラビリティゾーン毎にリソースの上限があり、上限を超えるとインスタンス起動できなくなるが、予約しておくとこういった問題を回避できる。
ただし、EC2インスタンスを起動していなくても料金が掛かってしまう。
IAMロール EC2インスタンスが他のAWSサービスを利用するために必要な権限。
シャットダウン動作 シャットダウン時に停止するか削除するかの設定。
停止-休止動作 インスタンスのRAMにある情報を保存するかどうか。
終了保護の有効化 誤って終了しないように保護する。
モニタリング インスタンスの監視を1分間隔にするかどうか。デフォルトは5分間隔
テナンシー 専用のハードウェアをしようするかどうか
Elastic Inference 機械学習を行う際にコスト効率をよくするために使う
T2/T3 無制限 T2/T3系のインスタンスにはベースラインというものがあり、それを下回っているとCPUクレジットが溜まっていく。
閾値は10%でCPU使用率が10%以下ならクレジットが溜まり、10%を超えるとバーストモードに入りCPUクレジットを消費していく。
CPUクレジットを使い切るとサイトレスポンスが遅くなるが、この設定をONにしておくとクレジットを使い切ったあともバーストモードが維持されるがその間別途料金が掛かる。
  1. ボリュームタイプを指定する。
    ボリュームタイプはEBSかインスタンスストアを指定できる。ルートはOSが入っているストレージでAMIによってEBSかインスタンスタイプかが決まっている。
    デバイスはマウント先。
    スナップショットはEC2のスナップショットで、スナップショットから新たなEBSを作成することも出来る。
項目 説明
ボリュームタイプ  汎用SSDは性能と価格のバランスが取れていて一般的にはこれを利用する。
プロビジョンどIOPS SSDはDBサーバーなど高いIOが必要な場合に指定する。
マグネティックは逆に低いIOでも問題ない場合に使用する。
IOPS プロビジョンどSSDの場合に指定できるパフォーマンス値
スループット 1秒間のデータ転送速度
終了時に削除 EC2インスタンス終了時に削除するかどうか、消し忘れによる課金を防止できる
  1. インスタンスに付与するタグを追加

  2. セキュリティグループ名を変更し確認と作成
    SSHアクセス元などを指定できる。

  3. 起動を押下するとキーペアの設定モーダルが表示されので新しいキーペアの作成とキーペア名を入力しダウンロードする。その後インスタンスの作成を実行する。
    キーペアはEC2インスタンスにアクセスするために必要なものです。

    しばらく待っているとステータスがrunningになります。

Apacheのインストール

  1. 鍵ファイルの権限変更
    ダウンロードしたキーペアを指定します。

    $ chmod 600 sample-ssh-key.pem
  2. EC2インスタンスのパブリックIPでSSHログイン

    ssh -i sample-ssh-key.pem ec2-user@xx.xx.xx.xx
  3. yum update

    sudo yum -y update
  4. apacheインストール

    sudo yum -y install httpd
  5. 起動、自動起動設定

    sudo systemctl start httpd.service
    sudo systemctl enable httpd.service

ファイアーウォールの設定

AWSではセキュリティグループがファイアウォールの役割を担っています。
サーバーへ入ってくる通信(インバウンド)のポートは必要なものだけ開けます。サーバーから出ていく通信(アウトバウンド)のポートは制限しない場合が多いです。

ポート80番を開放する

デフォルトはSSH接続の22番ポートしか開いておらず、HTTPアクセスが出来ないので80番ポートを開放します。

  1. EC2インスタンスを選択し、説明タブからセキュリティグループを選択する
  2. インバウンドタブを選択し、編集を選択しHTTPルールを追加する。ソースは任意の場所を選択する。
  3. パブリックIPアドレスにブラウザでアクセスすると、Apacheの初期ページが表示されます。

Elastic IPでIPアドレスを固定化する

EC2インスタンスのパブリックIPは、起動・停止すると別のIPアドレスが割り当てられるため、Elastic IPアドレスを使用して固定化します。

ElasticIPの特徴は以下の通りです。

  • グローバルIPアドレスを取得してインスタンスに付与できるサービス
  • インスタンスを削除するまではそのIPアドレスを使用することができる
  • Elastic IPはEC2インスタンスに関連付けられており、インスタンス起動中は無料だが停止中は課金されるため、EC2インスタンスを利用しない時は解放しておく。
  1. EC2ダッシュボードのElastic IPから新しいアドレスの割り当てページを開き割り当てを実行する
  2. ElasticIPを指定してアクションのアドレスの関連付けを選択する
  3. インスタンスとプライベートIPを指定して関連付けを行う。
    ElasticIPでブラウザアクセスすると同様にApacheのページが表示されます。

解放する場合はアクションからアドレスの関連付けの解除を実行します。

えず

東京でフリーランスのWebエンジニアやっています。 今はPHPとGoをメインに、プライベートでは広く浅くをモットーにフロント〜インフラまで学習しています。 当面の目標はDevOps寄りのオールラウンダー。

AWSWeb
スポンサーリンク
えずをフォローする
えずブログ