2
3

More than 1 year has passed since last update.

AWS初心者は必ず読むべき!必見!AWSの基本③Webサーバー構築(EC2作成) 

Last updated at Posted at 2022-10-01

この記事でやること

パブリックサブネットの中にWebサーバーを設置します。

注意

時期によって画面などが変わったりするのでご了承ください。

この記事を読む前に

EC2とは

AWSのクラウド上の仮想サーバーのことです。
インスタンスはEC2からたてられたサーバーです。
時間または秒単位の従量課金制で、サーバーの追加、削除、マシンスペック変更も数分でできます。
OSより上のレイヤーは自由に設定できるみたい柔軟なサービスです。

EC2作成の手順

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

AMI(Amazon Machine Image)とは

インスタンス起動に必要な情報が入った、OSでサーバーのテンプレ的な存在*です。
自前のカスタムAMIが作成でき、カスタムAMIから何台でもEC2インスタンスが作成可能です。

インスタンスタイプ

サーバーのスペックを定義したものです。
インスタンスタイプによってCPUなどが異なり、料金も異なってきます。アクセス数などによってインスタンスタイプが選択できます。

image.png

引用 https://biz.nuro.jp/column/aws-mama-022/

ストレージ

データの保存場所です。
EBSインスタンスストアがあります。比較は下の記事からお願いします。
EBSの方が料金が発生するが、耐久性は強い。こっちの方が使うことが多い
インスタンスストアは一時的なストレージで、追加料金はないが、大事なデータを置いてはいけない。

⚫︎EBSの記事

⚫︎インスタンスストア

⚫︎両者の記事

EC2設置

EC2の構築に当たって以下の手順で構築していきます。

①EC2インスタンスの設置 (順番は時期により変わる)
・AMIの選択
・インスタンスタイプの選択
・インスタンス詳細の設定
・ストレージ追加
・タグの追加
・セキュリティグループの設定
・SSHキーペアの設定
など

②Apacheをインストール

③ファイアウォールを設定

①EC2インスタンスの設置

EC2を検索してEC2の画面にいきます。

スクリーンショット 2022-09-06 15.26.26.png

インスタンスを選択してインスタンスの画面にいきます。インスタンスの作成を押して作成していきます。(下の画像は起動)

スクリーンショット 2022-09-06 22.00.19.png

名前とタグ追加

名前とタグを追加します。
あとインスタンス数は1でいいと思います。

スクリーンショット 2022-09-06 22.12.45.png

AMIの選択

無料枠のAmazon Linux2でいいと思います。

スクリーンショット 2022-09-06 22.03.06.png

スクリーンショット 2022-09-06 22.03.26.png

インスタンスタイプ

t2.microの無料枠を使います。

スクリーンショット 2022-09-06 22.04.47.png

ネットワークの設定

ネットワークの設定です。

スクリーンショット 2022-09-06 22.16.30.png

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

スクリーンショット 2022-09-06 22.17.56.png

自分のIPが無難ですが、ネット環境が変わることで、IPが変わったりするみたいです。

スクリーンショット 2022-09-06 22.21.11.png

例えばRailsでアプリを作った時は、カスタム(TCP)などにしてポートを3000にしておくといいいみたいです。
スクリーンショット 2022-09-06 22.23.23.png

ストレージの設定

特に変えなくても大丈夫そうです。

スクリーンショット 2022-09-06 22.09.27.png

一通り設定ができたらインスタンスを起動します。

キーペアの作成

新しいキーペアを作成します。
キーペアがないとインスタンスにログインができません

スクリーンショット 2022-09-06 22.34.50.png

キーペアを作成してダウンロードされます。画像にはないですがキーペア作成を押します。
鍵は公開しないように気をつけてください

上での設定が終わりインスタンスが作成されました。

ステータスチェックは最初は初期化していますになっていても少し時間が経てば
「2/2チェックに合格しました」になります。

スクリーンショット 2022-09-06 22.44.42.png

インスタンスをチェックした状態で接続を押すとインスタンスの接続画面にいきます。
そこにSSHクライアントを選んで3と4のコマンドをMacでターミナルで入力すると
SSH接続できます。

% cd Downloads 
Downloads % chmod 400 AWS-infra-ec2.pem
Downloads % ssh -i "AWS-infra-ec2.pem" ec2-user@ec2-3-112-210-194.ap-northeast-1.compute.amazonaws.com
The authenticity of host 'ec2-3-112-210-194.ap-northeast-1.compute.amazonaws.com (3.112.210.194)' can't be established.
ECDSA key fingerprint is SHA256:zKZNzQu4BiF1jVGo+l/GElkMWwdQYf0dRBVQUpIi55c.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'ec2-3-112-210-194.ap-northeast-1.compute.amazonaws.com,3.112.210.194' (ECDSA) to the list of known hosts.

       __|  __|_  )
       _|  (     /   Amazon Linux 2 AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-2/
3 package(s) needed for security, out of 8 available
Run "sudo yum update" to apply all updates.

⚫︎注意
パブリック IPv4 アドレス(ここでは3-112-210-194)は再起動するごとに変わります。

今現在セキュリティグループを確認するとSSHでポート22になっていてSSH接続できる状態です。
スクリーンショット 2022-09-07 12.56.11.png

SSH

SSHとは通信内容が暗号化された遠隔ログインシステムのことで、
サーバーと自分の目の前のパソコンをセキュアに繋ぐサービスです。
EC2にログインする時に使います。

公開鍵認証

サーバーに作成者本人だけがログインできるようにするのが公開鍵認証です。
EC2ではSSHログイン時に公開鍵認証をします。
秘密鍵や公開鍵を使って認証します。公開鍵はサーバーが持っていて秘密鍵を持っているユーザーだけがログインできます。
公開鍵暗号を使い公開鍵認証していきます。

②Apacheをインストール

SSHでEC2インスタンスに接続

今回はMacのやり方でやります。
ApacheをインストールするためにまずはSSHでログインできるようにします。
まずはターミナルを立ち上げます
上のやり方で*インスタンスを起動し、SSH接続をします。

ポート番号

どのプログラムがリクエストを受けるかを決めているのがポート番号です。
プログラムのアドレスみたいな存在です。

代表的なプログラムが使うポート番号は決められていますが、動的に決まる番号もあるみたいです。

ポート番号確認するコマンドです。

% sudo lsof -i -n -P
補足

-iネットワークソケットファイルを表示するオプション
-nIPアドレスをホスト名に変換しないオプション
-Pポート番号をサービス名に変換しないオプション

コマンド実行後に出てくる、
LISTENは他のコードから待ち受けているコードESTABLISHEDは相手との通信中です。

Apacheをインストール開始

まずは上みたいにインスタンスを起動してSSH接続をします。
yumでアップデートします。yumはLinuxのパッケージ管理ツールです。
sudoはルート権限で実行するという意味です。

[ec2-user@ip-10-0-7-161 ~]$ sudo yum update -y
#省略
完了しました!

-yはYesオプションです。
ではApacheをインストールしていきます。

[ec2-user@ip-10-0-7-161 ~]$ sudo yum -y install httpd
#省略
完了しました!

Apacheを起動していきます。

[ec2-user@ip-10-0-7-161 ~]$ sudo systemctl start httpd.service #httpd.serviceがApache
ec2-user@ip-10-0-7-161 ~]$ sudo systemctl status httpd.service #起動確認
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
   Active: active (running) since 水 2022-09-07 06:18:36 UTC; 1min 43s ago
     Docs: man:httpd.service(8)
#省略
[ec2-user@ip-10-0-7-161 ~]$ ps -axu #プロセス確認
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.1  0.5 123664  5472 ?        Ss   06:05   0:01 /usr/lib/system
root         2  0.0  0.0      0     0 ?        S    06:05   0:00 [kthreadd]
#省略
apache    6275  0.0  0.6 304736  6404 ?        Sl   06:18   0:00 /usr/sbin/httpd
apache    6276  0.0  0.6 304736  6404 ?        Sl   06:18   0:00 /usr/sbin/httpd
root      6324  0.0  0.0      0     0 ?        I    06:20   0:00 [kworker/0:0-cg
ec2-user  6336  0.0  0.3 162320  3804 pts/0    R+   06:23   0:00 ps -axu
[ec2-user@ip-10-0-7-161 ~]$ ps -aux | grep httpd #httpdに絞り込み
#省略
ec2-user  6339  0.0  0.0 119448   924 pts/0    S+   06:24   0:00 grep --color=auto httpd
[ec2-user@ip-10-0-7-161 ~]$ 

Apacheの自動起動

サーバーを止めたりするとまた起動しなければならないので、自動起動するように設定します。

[ec2-user@ip-10-0-7-161 ~]$ sudo systemctl enable httpd.service #自動機能設定
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[ec2-user@ip-10-0-7-161 ~]$ sudo systemctl is-enabled httpd.service #自動機能設定確認
enabled

AWSのファイアウォール

ネットワークを不正アクセスから守るために、通していい通信だけ通して、それ以外は通さない機能です。
セキュリティグループがAWSでファイアウォールの役割を担っています。
サーバーへ入ってくる通信(インバウンド)のポートは必要なものだけ開けて、
サーバーから出ていく通信(アウトバウンド)のポートは基本開いています。

ファイアウォール設定

ファイアウォールを設定するためには、セキュリティグループのポート80番を開けます
まずはインスタンスの画面を開きます。インスタンスを選択した後に、
パブリックIPv4アドレスをコピーします。

スクリーンショット 2022-09-07 15.43.33.png

コピーしたらブラウザのURLの欄に貼り付けます。
すると以下のようなページになりました。Apacheのデフォルトの画面です。
Apacheに接続してレスポンスを返せたことになります。
スクリーンショット 2022-09-07 15.51.11.png

もう一度インスタンスの画面を見てみましょう。その中でセキュリティグループを見てみます。
スクリーンショット 2022-09-07 15.56.09.png

何か追加したい場合はインバウンドの編集から編集します。
SSH以外にもHTTPなどにも接続できる状態です。
スクリーンショット 2022-09-07 16.05.10.png

パブリックIPアドレスを固定するElastic IPアドレス

パブリックIPは起動、停止する時、別のIPアドレスが割り当てられるが、
Elastic IPアドレスを使うとIPアドレスを固定できます。

Elastic IPアドレスの注意点

そのIPアドレスはインスタンスを削除するまで使うことができます。
しかしEC2に関連づけられていて、そのインスタンスが起動中なら無料で、
そうでなければ課金
されます。
インスタンスを止めた時はElastic IPアドレスのダッシュボードのアクションから
アドレスの関連付けの解除をしておきましょう。

Elastic IPアドレスをIPアドレスと紐付ける

EC2のダッシュボードにElastic IPがあるのでクリックします。
次にElastic IPアドレスを割り当てるをクリックします。

スクリーンショット 2022-09-07 17.25.00.png

画像には無いですが、下に割り当てがあるのでクリックします。
スクリーンショット 2022-09-07 17.29.26.png

Elastic IPアドレスが割り当てできたらアクションからElastic IPアドレスの関連づけをクリックします。
スクリーンショット 2022-09-07 17.31.59.png

インスタンスはここでは起動中のインスタンス(aws-infra-ec2)です。
プライベートIPアドレスはaws-infra-ec2のIPアドレスです。
下の画像には無いですが、関連づけるをクリックします。

スクリーンショット 2022-09-07 17.41.15.png

割り当てが完了しました。
スクリーンショット 2022-09-07 17.45.20.png

割り当てられたIPアドレス(ここでは54.95.19.84)をブラウザのURLに貼り付けてみると

スクリーンショット 2022-09-07 17.49.24.png

Apacheの画面になったことでWebサーバー送信できているため、紐付けることができました。

料金が余計に発生しないために

① Elastic IPアドレスのアクションからElastic IPアドレスの解除します。
インスタンスを止めるなら解除しましょう。
Elastic IPアドレスの解放すれば料金の発生の心配はないです。

スクリーンショット 2022-09-07 17.59.33.png

スクリーンショット 2022-09-07 18.03.09.png

② インスタンスの状態からインスタンスを停止します。

スクリーンショット 2022-09-07 18.05.04.png

資料

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