はじめに
AWSはAmazon Web Servisesの略で、Amazonが提供しているクラウドサーバーのサービスです。
AWSへの理解度を高めるために、学んだことをアウトプットします。
今回はネットワークとの関係を記載します。
今回の流れ
AWSのEC2に作成したインスタンス(仮想サーバー)をWebサーバーにします。
- Webサーバーソフトのインストール
- ファイアウォールの設定
- DNSサーバーの設定
Webサーバーソフトのインストール
サーバーをWebサーバーとして機能させるには、サーバーにWebサーバーソフトをインストールします。
今回は世界で最も多く利用されている「Apache HTTP Server」をインストールします。
インストールの作成手順
① インスタンスにログインします。
インスタンスにログインするためには、インスタンスにSSH接続する必要があります。(SSHとはターミナルから直接サーバー操作を行うことができるプロトコルのこと)
% ssh -i キーペアファイル ec2-user@IPアドレス
=> 「%」と表示されていた先頭の記述が「[ec2-user@ip-10-0-1-10 ~]$」のように変わります。(@以下は人によって変わります)
IPアドレスは作成したインスタンスのパブリックIPです。
例)
% ssh -i my-key.pem ec2-user@54.95.164.166
初回はおそらくセキュリティ警告が出て、[yes/no]?と出るため、「yes」を打ち込みます。
WARNINGと表示され、インスタンスにログインできない場合
キーペアが原因だと思われます。
以下の入力をします。
% chmod 400 my-key.pem
chmodはchange modeの略で、キーペアファイル(今回は「my-key.pem」というものを作成しました。)の属性を変更します。
400の最初の4は所有者、真ん中の0は所有グループ、最後の0はその他のユーザーにそれぞれ割り当てられます。
4は読み取り、2は書き込み、1は実行の権限を表し、全て行える場合には4と2と1を足して、7となります。
例えば、全てのユーザーが全ての権限があるようにしたい場合は「777」を指定します。
今回はキーペアファイルは自身だけが読み取れるものにし、自身で書き込みや実行は行わないので、4にし、他人に見せないものなので、他は0にします。
再度、SSH接続のコマンドを実行してください。
② Apacheをインストールします。
$ sudo yum -y install httpd
「sudo」はその後ろのコマンドをroot権限(管理者権限)で実行するためのコマンドです。
「yum」はアプリケーションをインストールしたり、アンインストールする時に使用するコマンドです。
「-y」はインタラクティブな質問を全てyesで答えてくれるコマンドです。
「install」はインストールするコマンドです。
「httpd」はApacheを後世する実行ファイル名です。
③ Apacheを起動します。
$ sudo systemctl start httpd.service
「systemctl start」は起動するコマンドです。
④ Apacheを自動起動するようにします。
サーバーを再起動した際には、Apacheは停止してしまいます。
サーバー起動時にApacheも自動で起動する世にしましょう。
$ sudo systemctl enable httpd.service
「system enable」は設定するコマンドです。
⑤ 設定を確認する
$ sudo systemctl list-unit-files -t service
「httpd.service」が「enabled」になっていることが確認できれば、OKです。
⑥ ポートを確認する
$ sudo lsof -i -n -P
=> 以下のような表示がでます。
httpd 6840 root 4u IPv6 144355 0t0 TCP *:80 (LISTEN)
httpd 6841 apache 4u IPv6 144355 0t0 TCP *:80 (LISTEN)
httpd 6842 apache 4u IPv6 144355 0t0 TCP *:80 (LISTEN)
httpd 6843 apache 4u IPv6 144355 0t0 TCP *:80 (LISTEN)
httpd 6844 apache 4u IPv6 144355 0t0 TCP *:80 (LISTEN)
httpd 6845 apache 4u IPv6 144355 0t0 TCP *:80 (LISTEN)
「TCP *:80」という表示から、Apacheは80番ポートで待ち受けていることが確認できます。
ファイアウォールの設定
現状ではパブリックIPアドレスをブラウザ上にコピー&ペーストしても、Webサーバーにアクセスできません。
それはApacheの80番ポートがファイアウォールでブロックされているためです。
ここでは、Webサーバーにアクセスできるようにします。
-
セキュリティグループを選択し、インバウンドルールを編集します。
Webサーバーをインストールしたインスタンスのセキュリティグループを選択します。
(私は「WEB-SG」というものを作成したため、そちらを選択しました。https://qiita.com/daisuke30x/items/91307c94e8f5a702a42f)
画面右下に表示される「インバウンドルール」タブ内の「インバウンドルールを編集」をクリックします。 -
ルールを追加します。
「ルールの追加」をクリックし、タイプを「カスタムTCPルール」、ポート範囲を「80」、ソースを「0.0.0.0/0」にし、保存します。
ソース「0.0.0.0/0」は全てのホストを示します。
- ブラウザで表示されるか確認します。
パブリックIPアドレスをブラウザにコピー&ペーストします。
先程、表示されなかったページが表示されるようになればOKです。
DNSサーバーの設定
DNSサーバーとは
「IPアドレス」と「ドメイン名」を変換するものです。
IPアドレスは数字の並びなので、覚えにくいものになります。
そこで、人間が理解できるようなドメイン名を付けることが一般的です。
AWSでもドメイン名を作成することができます。
-
VPCの設定ページを開きます。
AWSでVPCページへ遷移し、作成したVPCを選択します。 -
DNS名を付けるように設定します。
「アクション」から「DNSホスト名を編集」をクリックし、「有効化」にチェックを入れます。 -
インスタンスで確認します。
「EC2」ページからインスタンスを確認すると、パブリックIPにDNSがついたものがあることが確認できます。
それが、DNS名です。
参考
「Amazon Web Services 基礎からのネットワーク&サーバー構築」
著者:大澤文孝、玉川憲、片山暁雄、今井雄太
最後に
本投稿が初学者の復習の一助となればと幸いです。