AWS6(EC2+ApacheでWebサーバーを構築)

その5.5から続く

EC2の概要

0:EC2とは?

Elastic Compute Cloudの略でAWSクラウド上の仮想サーバー。
インスタンスはEC2から立てられたサーバーのことです。

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

1:AMIとは?

Amazon Machine Image:インスタンス起動に必要な情報が入った、OSのイメージサーバーのテンプレみたいなもの

特徴

AWSやサードパーティがAMIを提供。
自前のカスタムAMIも作成可能です。
カスタムAMIから何台でもEC2インスタンスを起動可能です。

インスタンスタイプとは?

サーバーのスペックを定義したもの
タイプにより、CPU,メモリ,ストレージ、ネットワーク帯域が異なります。
スペックが高ければ料金も高い、アクセス数などに応じてインスタンスタイプを選択します。

↓インスタンス世代
m5.xlarge   ←インスタンスサイズ
↑ インスタンスファミリー

ストレージとは?

サーバーに接続するdataの保存場所。
EC2のストレージには2種類あリます。

EBS(Elastic Block Store)                   インスタンスストア
OSやDBなど永続性と耐久性が必要なデータを置く    なくなっても問題ないデータを置く
費用がかかるが高い可用性と耐久性               インスタンス専用の一時的なストレージ
スナップショットを取得しS3に保存できる          無料,一時ファイル、キャッシュなど置く
他のインスタンスに付け替え可能                 他のインスタンスに付け替えできない
EC2インスタンスをStop/Terminateしても↓        EC2インスタンスをStop/Terminateすると
EBSは保持可能                                 クリアされる

1:EC2インスタンスを構築する

最終的な構築イメージ

「EC2」で検索→「EC2」をクリックします。

EC2ダッシュボードの「インスタンス」をクリックして、「インスタンスを起動」をクリックします。

Amazon Linux 2 AMIの「選択」をクリックします。

t2.microを選択して「インスタンスの詳細の設定」をクリックします。

インスタンス数:          1
ネットワーク:           自分で作ったVPCを選択(my-portfolio-vpc)
サブネット :            my-portfolio-pubulic-subnet-1a
自動割り当てパブリックIP:  有効
キャパシティー予約:       なし(※なし以外だと料金が発生します)
終了保護の有効化          なし(※本番などで削除する予定がない場合はありにします。)
後は特に変更しない

テナンシー:共有を選択
ネットワークインターフェイスからプライマリIPに10.10.0.10を選択

上記の設定をしてから「ストレージの追加」をクリックします。

ストレージの追加は特に変更なしで「タグの追加」をクリックします。

タグの追加キー:Name 値:my-portfolio-web
「セキュリティーグループの設定」をクリックします。

セキュリティグループ名:my-portfolio-web
警告がありますが、あとで設定します。「確認と作成」をクリックします。

設定に間違いがないか確認して「起動」をクリックします。

新しいキーペアの作成
my-portfolio-sshkey
「キーペアのダウンロード」をクリック

「保存」をクリックします。

キーペアをダウンロードしてから「インスタンスの作成」をクリックします。

「インスタンスの表示」をクリックします。

しばらく待って「2/2チェックに合格しました」「実行中」が確認できたらOKです。

サーバーにログインする

誰でもサーバーに入れると困るのでサーバーの作成者本人だけがログインできるようEC2ではSSHログイン時に公開鍵認証を行っています。

公開鍵認証とは?

公開鍵と秘密鍵を用いて、サーバーへのログイン時に認証を行う仕組みです。
ユーザ名とパスワードでログインするよりセキュアな仕組みです。

SSHとは?

公開鍵認証により通信内容が暗号化された遠隔ログインシステム
つまりサーバーと自分のパソコンの間をセキュアにつなぐサービスのこと。

サーバーにログインしてApacheをインストール

「EC2」で検索→「EC2」をクリックします。

EC2ダッシュボードから「インスタンス」をクリックして、インスタンスIDをクリックします。

パブリックIPv4アドレスをコピーします。175.41.208.84

Launchpadをクリックして、ターミナルを起動します。

chmod 600 ~/Desktop/my-portfolio-sshkey.pem
ssh -i ~/Desktop/my-portfolio-sshkey.pem ec2-user@175.41.208.84
接続を続けていいか聞かれるのでyesと入力
exit

SSHでログインしてサーバーを操作できるのはなぜか?

サーバー上でSSH接続を受け入れ、ユーザーからのコマンドを受け付けるプログラム(sshd)が動いてるからです。

ポート番号について学ぼう

ポート番号はプログラムのアドレス。同一コンピューター内で通信を行うプログラムを識別するときに利用されます。

ポート番号を決める方法は
標準で決められている番号と動的に決まる番号があります。

ウェルノウンポート番号と呼ばれます。0〜1023までの整数値
SSH接続はポート番号22
HTTPサーバーポート番号80
SMTPサーバーポート番号25
というように決まっています。

動的に割り当てる番号は49142〜6553号までのいずれかの整数値を取ります。

クライアントのポート番号は、OSが他のポート番号とかぶらないように、ランダムに決めます。

ssh -i ~/Desktop/my-portfolio-sshkey.pem ec2-user@175.41.208.84
sudo lsof -i -n -P

どのポート番号でどのプログラムが待ち受けているかわかります。

sshd 3238 root 3u IPv4 19478 0t0 TCP *:22 (LISTEN)
sshd 3238 root 4u IPv6 19487 0t0 TCP *:22 (LISTEN)

sshdというプログラムがPort番号22で待ち受けているよという意味です。

sshd     3249     root    3u  IPv4  97831      0t0  TCP 10.10.0.10:22->14.11.197.224:29320 (ESTABLISHED)

sshd     3268 ec2-user    3u  IPv4  97831      0t0  TCP 10.10.0.10:22->14.11.197.224:29320 (ESTABLISHED)

sshd     3361     root    3u  IPv4  98737      0t0  TCP 10.10.0.10:22->14.11.197.224:21134 (ESTABLISHED)

sshd     3379 ec2-user    3u  IPv4  98737      0t0  TCP 10.10.0.10:22->14.11.197.224:21134 (ESTABLISHED)

(ESTABLISHED):相手と現在通信中のポートです。

Apacheのインストール

以下をコマンドします。
sudo yum update -y
sudo yum -y install httpd

完了しましたと出ればOKです。

httpdを起動
sudo systemctl start httpd.service
sudo systemctl status httpd.service

active (running)となってればOK

サーバーが起動した時httpdが自動で起動するようにする。
sudo systemctl enable httpd.service
sudo systemctl is-enabled httpd.service

enabledとなっていればOKです。

ファイアウォールを設定しよう

通してよい通信だけを通してそれ以外は弾くようにします。

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

ファイアウォールを設定してポート80番を開ける

EC2ダッシュボードから「インスタンス」をクリックして、インスタンスIDをクリックします。

パブリックIPv4アドレスをコピーします。175.41.208.84

ブラウザのURLに175.41.208.84と入力して実行します

アクセスが拒否されてしましました。これはセキュリティーグループで許可していないためです。

EC2ダッシュボードの「セキュリティーグループ」をクリックして、「セキュリティグループを作成」をクリックします。

「インバウンドルールを編集」をクリックします。

「ルールを追加」をクリックします。

タイプ:HTTP
リソースタイプ:任意の場所
ソース:0.0.0.0/0

上記の設定をしたら「ルールを保存」をクリックします。

設定が間違っていないか確認したらOKです。

ブラウザで175.41.208.84にアクセスして以下のような表示になればOKです。

ElasticIPアドレスでIPアドレスを固定しよう!

ElasticIPアドレスとは?

インターネット経由でアクセス可能な固定グローバルIPアドレスを取得でき、インスタンスに付与できるサービスです。

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

※ElasticIPアドレスは、EC2インスタンスに関連付けられていて、そのインスタンスが起動中であれば無料。逆にそうでないと課金されるので注意してください。

Elastic IPアドレスを紐付ける

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

「割り当て」をクリックします。

正常に割り当てられましたとなっていればOKです!

ElasticIPアドレスを選択してアクションから「Elastic IP アドレスの関連付け」をクリックします。

インスタンス:自分で作成したEC2インスタンスを選択
プライベートIPアドレス:10.10.0.10
「関連付ける」をクリックします。

ブラウザでElastic IPアドレスにアクセスしてこのような表示になっていればOKです。

EC2インスタンスを停止したいとき

ElasticIP関連付け削除とElasticアドレスの開放

EC2ダッシュボードの「Elastic IP」をクリック、「Elastic IP アドレスの関連付けの解除」をクリックします。

「関連付け解除」をクリックします。

「Elastic IP アドレスの開放」をクリックします。

「Elastic IP アドレスが解放されました。」を確認します。

EC2の停止

EC2ダッシュボードの「インスタンス」をクリックして、「インスタンスの停止」をクリックします。

正常に停止しましたとなっていればOKです!

その7に続く

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です