LoginSignup
3
1

More than 3 years have passed since last update.

AWS基礎 EC2にひとまずWebサーバー(Apache)を用意するまでのプロセス

Last updated at Posted at 2019-07-11

この記事

本記事は、AWSブランクを埋めつつ色々作っていた物の一部を使って
VPC+EC2を使用した基本的なサーバー構築を始めたい人向けとなっています。

初めてだと
あれ?サブネットってどこ?
ルートテーブルって何を記載するの?
作成したのにEC2とネット繋がらない・・・

等のトラブルが発生することもあるので
そんな方の参考になれば幸いです。

故に、本記事はAWS初心者向けです。
冗長構成など考慮したパターン等はまた別途記事にします。

VPC

VPCの作成
AWSアカウントを作成するとデフォルトのVPCが存在します。
サブネットも2つ用意されているかと思いますが、
これだと自分で環境がいまいちわからないかもしれないので
今回はパパっと作成しちゃいます。

リージョンとVPC

VPCをどこのリージョンに作るのかを選びます。
バージニア(米国)やパリなど色々ありますが、
特別な用途はないので、構築/アクセスする拠点から遅延の少ない、自国エリア(東京リージョン)に作成します。

「東京リージョンにVPCを作成する」ということは、東京リージョンにある3つのデータセンター群の中に論理的に独立したネットワークを作成するということになります。
(DCは本当はもっとあると思いますが、とりあえず複数の群があって論理的には3つ)

これらのAZはそれぞれ物理的に離れて数キロ以上離れて存在するため、
例えば(適当な場所)東京リージョンでは立川AZ、川崎AZ、松戸AZみたいなイメージです。
(個人的に、東京リージョン=東京都内という意味ではとっていないし、むしろ都内だけならあまりばらけないはず)
スクリーンショット 2019-07-04 15.18.47.png
★超ざっくり!笑

で、VPCをアーキテクチャ図で表現するとこうなります。

AWS First.jpg
★この図の作成に関しては記事の一番下に記載しています!

上にインターネットがあり、AWSCloud全体がまず存在。
その中の東京リージョンがあり、今回はこのリージョン内にVPCを作成。
そして東京リージョンはAZ(DC群)が3つあるためこういった記載となりました。

サブネットの活用

EC2等のリソースは、サブネットといわれる、VPCをさらに分割したNW内に作成するイメージです。
サブネットの主な用途は
・Webサーバーを配置するパブリックサブネット、DB等VPC内のリソースからのみアクセスするプライベートサブネットに分けたトラフィックの制御
・耐障害性を考慮した設計にするため、2つのAZを使った冗長化構成(LBなど)
などの使い方が挙げられます。

AWS Second.jpg
そのため、例えば先ほどの「耐障害性を考慮した設計にするため、2つのAZを使った冗長化構成」の際は、 AZを複数使い、別サブネットを用意します。
★この辺の作成例はまた今度書きます

VPC作成手順

VPCはAWSのサービスですが、VPC(プライベートクラウド)の中にリソースを作るため、勿論IPの指定が必要です。

始めに、VPCに割り当てるローカルIPの範囲を指定します。
AWS VPCで使用可能な範囲は以下の通り。
・10.0.0.0 - 10.255.255.255 (10/8 プレフィックス)
・172.16.0.0 - 172.31.255.255 (172.16/12 プレフィックス)
・192.168.0.0 - 192.168.255.255 (192.168/16 プレフィックス)
VPC とサブネットのサイズ設定 - AWS VPC ユーザーガイド > VPCとサブネット

https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/VPC_Subnets.html

アカウントは作成されていますか?
最低限MFAは有効にしましょうね。。

IAMユーザはVPC、EC2の作成ができるユーザあるいはロールで行います。
では、AWSマネジメントコンソールを開きます。

上部「サービス」一覧内からVPCを選択すると、こんな画面になるかと思います。
VPCselect.png

この画面はVPC一覧で、選択したVPCの情報が下に出力されます。
vpc_createde.png
「VPCの作成」から始めましょう。
ここでは、VPCに以下のIP範囲を割り当てます。
10.0.0.0/16

IPv6やテナンシー需要ないのでそのままで問題ないです。
ちなみにテナンシーはハードウェア専有という贅沢なやつです。

作成を押したらVPCが出来上がりました
vpc_p.png

VPC一覧に戻ると新たに出来上がっているのが確認できます。
vpc_check.png

サブネット作成手順

次に、サブネットの作成を行います。

先ほどと同様、VPCの画面、左のタブ内に「サブネット」があるので
こんな画面が開かれるのを確認してください。
subnet.png

「サブネットの作成」から始めます。
今回はEC2を1つ置ければよいので以下のようなIP範囲で適当に設定します。
10.0.1.0/24

先ほどのVPC内に作成するため、IP範囲に注意。 ※ここでおかしいIP入れるとちゃんとエラー表示されます。

また、AZの選択肢が1つしかないのでお察しかと思いますが、
注意点として、サブネットはAZを2つ跨いだりすることができません。

subnet_namingcreate.png

では、作成します。
subnet_ed.png

現在こんな状態ですねー
名称未設定ファイルのコピー.jpg
★PublicSubnetとありますが、実際はまだインターネットとつながっていません。

Security Group作成

次に、EC2のためのファイアウォールを設定します。
SGは、EC2インスタンスに割り当てる仮想ファイアウォールです。
オンプレミスでは直接OS上のfirewalldなどで設定していたと思いますが、AWSでは基本的にはSGで管理します。
もちろん実際のところすべてのセキュリティをSGのみで全てカバーしているわけではないですが。その辺の話は追々別記事にて。

今回インターネットからEC2へのアクセスは、SSHアクセス、Webアクセスが最低限必要なので
ポート22,80,443(一応)を開けます。
開ける相手は今は自己IPのみ指定しましょう。(確認せずともワンボタンで可)

SG設定手順

SGはサービス「EC2」内、左タブにあります。こんな画面。

SG1.png

設定内容は以下のようになります。
ソースが送信元なので、マイIPを選択すると現在のIPが指定されます。
使用するVPCを指定しましょう。 ※説明欄もわかりやすいものを記載しましょう。
SGcreate.png

「作成」で完了。

入ってきた通信の、帰りの制御はどうするの?という疑問があるかもしれませんが、SGはステートフルです。

VPC のセキュリティグループ - AWSドキュメント
https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/VPC_SecurityGroups.html

セキュリティグループはステートフルです。インスタンスからリクエストを送信する場合、そのリクエストのレスポンストラフィックは、インバウンドセキュリティグループルールにかかわらず、流れることができます。許可されたインバウンドトラフィックに対する応答(戻りのトラフィック)は、アウトバウンドルールにかかわらずアウト側に対し通過することができます。

※逆に、ステートレスでの通信制御要件がある場合は、ネットワークACLという別の設定を併用します。

ちなみにここまででこんな感じです。
名称未設定ファイルのコピー (1).jpg

線がいっぱいあってわかりずらいよー
という声もあるかもしれませんが、アーキテクチャ図は基本必要最低限の物を表記すればいいので、
今回みたいにTokyo Regionの線をわざわざ書いたりする必要もあまりないと思います。

え?図が見づらい?
それは作者のセンスですね

ネットワークと繋げるために

ではどうやって、これから作成するEC2からインターネットに繋げられるようにするのか。
気を付けるのは以下の点です。(初めての際に混乱しやすい)

①インターネットゲートウェイ(IGW) = VPCをインターネットと繋げるため。

リソースの作成
・IGWを作成する。

リソースのアタッチ
・IGWはVPCにアタッチする。
これで、VPC自体は仮想ルーターによりインターネットと接続可能となる

②ルートテーブル = サブネットをインターネットと繋げるため。

リソースの作成
・ルートテーブルの作成する。
リソースのアタッチ
・サブネットのルーティング設定変更をする。
これでVPC内の、ルーティングしたサブネット内のリソースはインターネットへ接続可能となる

③VPCで名前解決できるようにする

設定変更のみ

④サブネット内リソースへのIPv4割り当て設定

設定変更のみ

大丈夫です、そんな時間かかりません。

①インターネットゲートウェイ

先ほど記載した通り、デフォルトではインターネット外に出られないため、インターネットゲートウェイ(IGW)を作成します。

IGW作成

サービス「VPC」内の左タブに「インターネットゲートウェイ」があります。
igw.png
「インターネットゲートウェイの作成」から作成。
FireShot Capture 011 - インターネットゲートウェイの作成 - VPC Management Console_ - ap-northeast-1.console.aws.amazon.com.png
名前つけて終わり。
IGW-createed.png
確認します。
igw_b.png

VPCにIGWをアタッチ

その画面から、作成したIGWを選択した状態で、「アクション」から「VPCにアタッチ」を選択。
igw_attach.png

先ほどのVPCを選び、「アタッチ」で完了。

「状態」がattachedに変わり、
「アタッチ済みVPC ID」の箇所にアタッチ先のVPCがあることを確認。
igw_attached.png

これでVPC自体はインターネットに接続済。
名称未設定ファイルのコピー (2).jpg

②ルートテーブル

サブネットにルート設定します。
AWSの場合、基本的にルーティングはOS上で行うことなくAWSマネジメントコンソールやCLIで以下のように行うことが多いかと思います。

ルートテーブル作成

サービス「VPC」から、同じ要領でルートテーブルを開きます。
rtb.png
「ルートテーブルを作成」から、VPCを選択して名前指定。
rtb_create.png
「作成」で終わり。
rtb_created.png

ルーティング設定

どんどん行きましょう。
作成したルートテーブルを選択して「ルート」タブを選択するとこんな画面が。
rtb_set1.png
ここではまず、すべての通信をIGWを通すという大前提を記載します。
「ルートの編集」で設定をします。

送信先:0.0.0.0/0(すべて)
ターゲット(宛先):先程作成したIGW ※作成済みのIGWを選択できます。
rtb_set1_.png
「ルートの保存」をしましょう。
rtb_set1_chk.png
出来ていますね。

次に、「サブネットの関連付け」をします。
タブを開くと、こんな感じの画面になっているので「サブネットの関連付けの編集」を選択。
rtb_sb.png
先程のサブネットを選択して「保存」です。
rtb_sb1.png
確認しましょう。
rtb_subck.png
関連付けが出来ているので、あとはちょっとした設定のみです。

③VPCで名前解決できるようにする

VPC一覧画面から、
VPCを選択した状態で、「DNSホスト名の編集」を選択します。
vpc_nameset.png
有効化にチェックを入れて保存をします。
vpe_named.png

これは、アクセスする際にIPアドレス以外に
ec2-{public-ipv4-address}.compute-1.amazonaws.comのようなアドレスが使用可能となります。

④自動割り当てIP設定の変更

サブネット内で起動されるリソースにIPv4アドレスが割り当てられるように設定変更します。
作成したサブネットを選択して、「アクション」を選択して…
subnet_throuth.png
「自動割り当てIP設定の変更」を選択。

FireShot Capture 046 - 自動割り当て IP 設定の変更 - VPC Management Console_ - ap-northeast-1.console.aws.amazon.com.png

チェックを入れて保存しましょう。
これで、EC2を構築するための最低限のネットワークリソースはできました。

EC2インスタンスの作成

いよいよEC2を作成します。
作成した際のイメージはこうなります。
名称未設定ファイルのコピー (3).jpg
難しいことは考えず、必要最低限の考慮はしていきましょう。

ここから具体的に料金が絡むのでそちらも触れながら。

では、サービス「EC2」を開いて、「インスタンス」を選択します。
ec2_dash.png
「インスタンスを作成」を選択。
FireShot Capture 032 - インスタンスウィザードを起動 - EC2 Management Console_ - ap-northeast-1.console.aws.amazon.com.png
AMIを選ぶ画面です。
AmazonLinux、RHEL、CentOS、WindowsServerなどなど色々ありますが
今回はAmazonLinux2を選びます。
Amazonが用意したCentOSベースのOSです。

次にインスタンスタイプを選びます。
FireShot Capture 051 - インスタンスウィザードを起動 - EC2 Management Console_ - ap-northeast-1.console.aws.amazon.com.png
これはAmazonが用意したスペックのテンプレートの様なものですね。(見ての通りのスペック群)
それぞれ料金が大きく変わるので、こちらを参照してください。

Amazon EC2 料金表
https://aws.amazon.com/jp/ec2/pricing/on-demand/

尚、今回はデフォルトで選択されている「t2.micro」をオンデマンドで使用しますが、
時間あたりの料金は無料利用枠なしだと0.0152USD=¥1.64です。(2019/7/11 ¥108/$)
無料利用枠に関してはこちらを参照くださいー

AWS 無料利用枠
https://aws.amazon.com/jp/free/?all-free-tier.sort-by=item.additionalFields.SortRank&all-free-tier.sort-order=asc

動作確認程度なので先程のインスタンスタイプでいきますね。

次に、詳細設定ですが、今回最低限変更が必要なのは以下の3つ。
ネットワーク:作成したVPCを選択します。 ※VPCを東京リージョンに作成したなら東京リージョンでEC2を作成しましょう。
サブネット:作成したサブネットを選択します。
自動割り当てパブリックIP:インターネット経由でアクセスが必要なので有効にしましょう。

以下は、参考程度にライトな説明です。
起動インスタンス:同じものを同時にいくつ作るか
購入のオプション:切れるの面倒なのでスポットインスタンスにはしない😂 ※調べましょう
シャットダウン動作:インスタンスを停止したら消える昨日はいらないので、「停止可能」にする
削除保護の有効化:間違ってGUIで消しちゃった、は怖いので、インスタンスを消す際はワンプロセス挟む様に設定出来ます。
モニタリング:デフォルトの5分で今回は問題ないのでそのまま(CloudWatchを見てみよう!)
テナンシー:以前記載しましたが、ハードウェア占有の話です。

ec2_create1.png
ec2_create2.png

次に、ストレージ(EBS)の設定です。
デフォルトの設定値でもんんだいないのでそのまま進みます。
SSDがデフォルト。プロビジョンドにするほどの用途は無いです。
ec2_create3.png

EC2にタグをつけます。
「Name」というキーに「ec2-div-1」と値をつけておきました。
例えばEC2一覧の画面で一意にわかるといいですよね。
FireShot Capture 038 - インスタンスウィザードを起動 - EC2 Management Console_ - ap-northeast-1.console.aws.amazon.com.png

次にSGです。先程作成したSGを選びましょう。
ec2_create4.png

今までの設定の確認をします。
ec2_create5.png
「起動」を選択すると、最後にキーペアの選択(作成)画面となります。
既存だとこの画面ですが、新しく作成するキーペアの名前を決めて、必ずダウンロードしましょう。
注意書きにもありますが、キーペアがないとSSHアクセスも出来ません。
スクリーンショット 2019-07-11 16.48.33.png

これでEC2作成完了。
ec2-created.png
EC2一覧で確認ができます。
(instanceIDを画面から選択した場合)
ec2_chk.png

始めは「インスタンスの状態」が黄色だったりもしますが、「running」に変わり
「ステータスチェック」の初期化〜が完了すればSSHでアクセスしてOKです。

SSHする際やWebアクセスする際は

ec2-comp.png
「パブリックDNS(IPv4)」を使用します。

インスタンスにSSHアクセス

キーペアの権限

Macユーザの方やLinuxの方は、ターミナルから先程ダウンロードしたキーペアの権限を
sudo chmod 400 {キーペアファイル}
などで変更しましょう。

SSHアクセス

Windowsの場合はteratermがシンプルで使いやすいのでオススメです。
ユーザネームをec2-userに指定、キーペアを指定してアクセスすれば問題ありません。
尚、Amazon Linux系はデフォルトですべてこのユーザネームの指定が必要です。

初アクセスの際は、デフォルトのユーザec2-userにより、公開鍵認証します。
一応ですが、SSHはこんな感じのコマンドでどうぞ
ssh -i {キーペア指定} ec2-user@ec2-{ipv4}.ap-northeast-1.compute.amazonaws.com

アクセス時にこんなメッセージが出ればOKです。
```

   __|  __|_  )
   _|  (     /   Amazon Linux 2 AMI
  ___|\___|___|
https://aws.amazon.com/amazon-linux-2/
No packages needed for security; 6 packages available
Run "sudo yum update" to apply all updates.
[ec2-user@ip-10-0-1-11 ~]$ 

まずはソフトウェアパッケージのアップデートをします。
[ec2-user ~]$ sudo yum update -y

Webサーバー入れてみてテスト

Apache入れて、公開できたか確認してみましょう。

Apache入れます。
sudo yum install -y httpd

Apache起動させます。
sudo systemctl start httpd

Apache起動確認して、active(running)であることを確認します。
sudo systemctl status httpd

ブラウザで、先程SSHアクセスでも使用した「ec2-{ipv4}.ap-northeast-1.compute.amazonaws.com」にアクセスしてみます。
apache.png
無事確認ができたら、完了です!お疲れさまでした。

補足:アーキテクチャ図

今回登場したコイツですが、draw.ioという無料で使える図作成ルールを使いました。
実は、AWS公式サイトでも記載していますが、新しいアイコンたちも配布されています。
(下の方にdraw.ioが!)
https://aws.amazon.com/jp/architecture/icons/
↓2018以降のバージョンはこちら
https://about.draw.io/new-aws-icons-2018/
知らなかった!という方がいらっしゃれば、よかったら使ってみてくださいー

まとめ

以上がVPC作成〜EC2のWebサーバー疎通確認までとなります。

振り返りながら作成したので、わかりづらい点、これは違うよがあったらぜひご教示ください。。m(_ _)m
ちょいちょい修正します。

今後また、よくあるAWS構成の作成や、〇〇やってみたぜ!をアップしていきます。
よろしくお願いします!

3
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
3
1