0
0

More than 3 years have passed since last update.

前提

AWS(Webサーバーソフトのインストール)について学んだことを書いていきます。

本題

Webサーバーソフトのインストール

サブネットのなかにサーバーを構築し、構築したサーバーにWebサーバーソフトをインストールすることでWebサーバーとしてインターネットに公開する。

Apache HTTP Serverインストール

サーバーをWebサーバーとして機能させるには、Webサーバーソフトをインストールする。
すると、Webブラウザなどからの要求を受け取り、サーバー上のコンテンツを返したり、サーバー上でWebアプリケーションを実行したりできるようになる。
※Apacheはオープンソースで提供されている、世界で最も多く利用されているWebサーバーソフト。

サーバーにApacheをインストール

1、インスタンスにログイン
インスタンスにSSHでログイン。

2、Apacheをインストール
下記コマンドを入力し、Apacheをインストール。

$ sudo yum -y install httpd

yumコマンドは、アプリケーションをダウンロードしインストールしたり、アンインストールしたりするときに用いる管理者コマンド。
ここで指定しているhttpdは、Apacheは構成する実行ファイル名。
つまり、このコマンドによって、Apacheがインストールされる。
なお、-yオプションはユーザーの確認なしにすぐにインストールする指定。
※sudoコマンドは、指定したコマンドを管理者権限(root権限)で実行するためのもの。
インスタンスには、ec2-userユーザーでログインする。
ec2-userユーザーは、管理者(rootユーザー)ではない。
そのため、管理者権限が必要な場合は、sudoコマンドをつけて実行する。

3、Apacheを起動する
以下のコマンドを入力してApacheを起動する。

$ sudo systemctl start httpd.service

systemctlコマンドは、指定したコマンド(ここではhttpdのためApache本体)を起動・停止・再起動するコマンド。
ここではstartを指定しているため、Apacheは起動する。

4、自動起動するように構成する
これでApacheは起動するが、サーバーを再起動するとまた停止する。
そこでサーバーが起動するときに、Apacheも自動的に起動するように構成する。
下記、コマンドを入力する。

$ sudo systemctl enable httpd.service

systemctlコマンドは、自動起動について設定(enable)、設定解除(disable)、設定の確認(list-unit-files)を指定するコマンド。
ここでは、httpdをenableに指定しているため、サーバーが起動したときにApacheが自動起動するように構成される。
※正しく構成されたかどうかは、下記コマンドを入力して確認できる。

$ sudo systemctl list-unit-files -t service

この結果において、httpd.serviceがenabledであれば自動起動が有効になっている。

Apacheのプロセスを確認

Apacheをインストールし、その実行ファイルであるhttpdが起動したはず。
確認方法には、2種類ある。

1、Apacheはhttpdと言うファイルが実行コマンド。
もし実行中であるなら、このhttpdのプロセスがサーバー上に存在するはず。
Linuxシステムでは、psコマンドを使うと、実行中のプロセスを確認できる。

$ ps -ax

-axオプションは、-a(全てのプロセスを表示する)、-x(他の端末に結び付けられているプロセスも表示する)の組み合わせ。
-axオプションを指定して実行すると、サーバー上で動作している全てのプロセスが表示される。
httpdが存在するかを確認する。
※ps -ax |grep httpdと入力するとhttpdを含む行だけを出力することができる。

先頭に表示されている数字は、プロセス番号PIDと呼び、プロセスを区別するために自動的につけられる番号。
※プロセス番号は、プロセスを終了(killコマンドで終了できる)したり、プロセスに何か通知を送信したりするときに使われる。

2、ネットワークの待ち受け状態を確認する
エンドユーザーがWebブラウザを通じて、このサーバーにアクセスするとApache(httpd)はそれに対応するコンテンツを返す。
これを実現するため、httpdは、ポートを開けて待機する。
IPアドレスとポート番号で調査したのと同様にlsofコマンドを使って、ポートの状況を調べる。

$ sudo lsof -i -n -P

すると結果の中に、httpdが存在することがわかる。
TCP*:80と表示されていることから、Apacheはポート80番で待ち受けていることがわかる。
ポート80番は、Web通信で用いるHTTPのウェルノウンポート。

ファイアウォールを設定する

Apacheをインストールし起動したため、このサーバーはWebサーバーとして機能している。
実際にWebブラウザを使ってアクセスしてみる。

Webサーバーに接続する

WebブラウザからWebサーバーに接続するときには、接続先のパブリックIPアドレスを指定する。
現状だと、ブラウザにパブリックIPアドレスを入力しても接続できない状況です。

ファイアウォールを構成する

接続できないのは、ポート80番がファイアウォールによってブロックされているから。
EC2において、ファイアウォール機能を構成するのは、セキュリティグループという機能。
ファイアウォール設定変更し、ブロックされているポートで通信できるようにする操作を、ポートを開けるやポートを開く、ポートを通すなどと表現する。
※アパッチのデフォルトの構成では、/var/www/htmlディレクトリの内容がWebブラウザに出力される。
ただし、このディレクトリが空の場合は、/var/www/error/noindex.htmlが出力される。

ドメイン名と名前解決

このようにWebブラウザにパブリックIPアドレスを入力することで、Webサイトにアクセスできる。
しかし、一般にWebサイトにアクセスするときに直接パブリックIPアドレスを指定することは、ほとんどない。
なぜなら、単なる数字であるIPアドレスは覚えにくいから。
ほとんどの場合、www.example.co.jpなどのドメイン名を用いてアクセスするはず。
では、ドメイン名を利用するには、どのようにすればいいか。

ドメイン名の構造

ドメイン名は、IPアドレスと同様に、Webサーバーやメールサーバーなどのインターネット上の住所に相当するもの。
英数字で構成された名称でIPアドレスのような数字に比べて、簡単に覚えられる。
ドメイン名はIPアドレスと同様にサーバーなどを指し示すものため、一意性が保証される必要がある。

・ドメインの階層
ドメイン名は、ピリオドで区切られた構成をしている。
ピリオドで区切られた部分をラベルと言う。
最も右側のラベルをドップレベルドメインと呼び、左に向かって第2レベルドメイン、第3レベルドメインと呼ぶ。

www 第4レベルドメイン
example 第3レベルドメイン
co 第2レベルドメイン
jp トップレベルドメイン

ドメインの階層をツリーで表現すると、
一番上のルート(root)と呼ばれる部分を頂点とし、下の階層へと広がる。
ルートの直下にはjp、com、netなどのトップレベルドメインが配置される。
そのさらに下に、第2レベルドメイン、第3レベルドメインと続く。
あるドメインの下に、ドメインを新設する場合は、必ず、異なるラベルをつける。
そうすることで、ドメイン名空間を構成する全てのドメイン名は、一意性が保証される。

・ドメインの管理
ドメイン名は、IPアドレスと同様にICANNが統括管理しており、トップレベルのドメイン名ごとに、それぞれの業者が管理している。
例えば、トップレベルが「com」、「net」のドメイン名はVerisignが、「jp」のドメイン名は、JPRSが管理している。
これらの管理組織のことをレジストリと言う。
企業や個人などがドメイン名を利用するときには、これらのレジストリ配下の指定事業者に申請する。
すると、ドメイン名を利用できるようになる。

DNSによる名前解決

TCP/IPの世界では、相手先を確認するのは、あくまでもIPアドレス。
ドメイン名でアクセスするときも最終的にIPアドレスに変換して接続する。
そのときに使われる仕組みがDNS(Domain Name System)。
DNSを用いて、あるドメイン名からそれに対応するIPアドレスを引き出すことを名前解決と呼ぶ。
IPアドレスとドメイン名を変換するのは、DNSサーバー。
DNSのシステムは、世界中に分散したDNSサーバー群で構成された、大きな分散型データベース。
それぞれのDNSサーバーは、自分が担当する範囲のIPアドレスとドメイン名の変換だけをする。
管轄外の名前解決が必要になったときは、他のDNSサーバーへと問い合わせを転送する。
DNSサーバーは、このようなドメイン名の名前解決をするため、DNSリゾルバ(resolver:解決の意味)と呼ばれることもある。
名前解決は、ルートDNSサーバーから始まり、トップレベルドメインのDNSサーバー、第2レベルのDNSサーバー、第3レベルのDNSサーバーというように、階層的に処理される。
このように階層的に処理することで、どのようなドメイン名であっても、最終的に変換先のIPアドレスがわかる。
ドメイン名は、DNSサーバーが解決することから、DNS名と呼ばれることもある。
また、サーバーやネットワーク機器など、通信可能なホストに名付けるために使われることから、ホスト名やDNSホスト名と呼ばれることもある。

DNSサーバーを構成する

VPCには、VPN内の名前解決をするオプション機能があり、その機能を有効にするとインスタンスにDNS名が設定されるようになる。
DNS名には、パブリックDNSとプライベートDNSの2つがある。
前者は、インターネットから参照できるDNS名、後者はVPC内でしか参照できないDNS名。
※パブリックIPアドレスを割り当てていないときはパブリックDNSは空欄となり、プライベートDNSしか設定されない。

■Route53サービスを用いて独自ドメイン名で運用する
独自ドメイン名を利用するには、まずレジストラと呼ばれるドメイン事業者から、利用したいドメイン名を取得する。
ドメイン名を取得したら、DNSサーバーを構成し、EC2インスタンスに向けるように構成する。
AWSでは、DNSサーバーを構成するためのRoute53というサービスが提供されている。
Route53サービスに、取得したドメイン名を設定すると、独自ドメイン名を利用できるようになる。
なお、Route53を利用してドメイン名を取得することもできるようになっている。

nslookupコマンドでDNSサーバーの動きを見る

いくつかのコマンドを使うと、DNSサーバーがどのように名前解決しているのかを知ることができる。
DNSの名前解決を調査する際に、最もよく使われているコマンドがnslookup。
nslookupコマンドは、WindowsやMac、そして多くのLinuxディストリビューションに標準でインストールされている。
※nslookupコマンドは昔ながらのコマンド。
最新のUNIX系の環境では、もっと詳細にDNSサーバーとのやりとりを確認できるdigコマンドを使うこともある。

・クライアントからnslookupする
まずは、WindowsやMacの環境で、どのように名前解決されているか確認。
プロバイダーを通じてインターネットに接続しているのであれば、Webブラウザを使ってアクセスするときにプロバイダーが提供しているDNSサーバーが名前解決している。

0
0
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
0
0