星の鼓動は愛

平凡サラリーマンが副業にコミットしてイケてるオッサンになるためのブログ

AWS環境を構築する2~Webサーバーの構築

AWSの概要を理解したところで、実際にWebサーバーを構築していく。
これで僕たちはインターネットにさまざまな情報を送ったり受け取ったりできるのだ。

f:id:danceswithwolves:20160901074558j:plain:w500

VPC領域を作る

管理画面から、「10.0.0.0/16」というCIDRブロックを持ったVPC領域を作成する。
"10.0.0.0"というのがプライベートIPアドレス、"16"がCIDR表記と呼ばれ、
65536個分の範囲を指定できる、つまり同じネットワーク内にこの個数分だけサーバーや
ルーター、コンピュータなどのネットワーク機器を接続できるという意味だ。
この範囲をCIDRブロックと呼ぶ。

ある企業にパブリックIP(グローバルIP)が一つだけ割り当てられ、その企業内で
使うさまざまなネットワーク機器ごとにプライベートIPが与えられる。
「10.0.0.0/16」を指定することで、65536個のプライベートIPが発行され、どう個数分の
ネットワーク機器が使えるということだ。

VPCをサブネットに分割する

実際のネットワークは割り当てられたCIDRブロックをさらに小さなCIDRブロックに
分割して使用する。
この細分化したCIDRブロックを「サブネット」と呼ぶ。

先ほどの「10.0.0.0/16」というVPC領域に割り当てたCIDRブロックを、さらに「/24」の
大きさ、つまり256分割する、などということができる。
ところで"16"が65536個、"24"が256個を表すかはここで説明するのが大変なので別記事にする。
いったん、そういうものだということにしておく。

ところでなぜサブネット(CIDRブロック)を分割するかと言えば、例えば会社の1階と2階で
サブネットを分けることで、1階で障害が起きても2階のサブネットは生きているということになる。
また営業部と経理部でサブネットを分けることで、セキュリティ強化にもつながる。

さらに、最初に作ったサブネットをインターネットからアクセスすることを目的とした
パブリックサブネット(例:10.0.1.0/24)」と、インターネットから隔離した
プライベートサブネット(例:10.0.2.0/24)」に分けたりする。

サブネットにルートテーブルを設定しインターネットにつなぐ

VPC内のあるサブネット(ここではパブリックサブネット)をインターネットと接続するには、
インターネットゲートウェイ」を使用する。

ネットワークにデータを流すためには「ルーティング情報」という設定が必要になる。
この設定は「ルーティングテーブル」や「ルートテーブル」と呼ばれる。
AWSではルートテーブルという設定名になっているので、以下ルートテーブルと呼ぶ。
データを流すべきネットワーク先をAWSでは「ターゲット」という名称で設定する。

まとめるとVPC内に公開用のサブネットを作り、ルートテーブルを設定しインターネット
ゲートウェイにデータが流れるターゲットを向けることでインターネットにつなげるのだ。

ややこしいが、僕たちが普段気軽に使っているインターネットはこうしたややこしい
仕組みで利用できるのである。

仮想サーバを構築する

インターネットにつながるパブリックサブネットの中に、仮想サーバを構築する。
EC2で作成した仮想サーバは「インスタンス」と呼ばれることはすでに説明した。
このインスタンスにはパブリックサブネット内で利用可能なプライベートIPアドレスを割り当てる。
ところがプライベートIPアドレスはインターネットとの接続には利用できない。
そこでインスタンスを起動するときに、さらにパブリックIPアドレスを設定する。
つまりインスタンスVPC内で通信するためのプライベートIPアドレスとインターネットで
通信するためのパブリックIPアドレスの2つを持つことになる。

僕たちはエンジニアではないので、インターネットに接続するパブリックIPアドレス
決められたネットワークの範囲内だけで利用する(例えば社内)プライベートIPアドレス
2つがあることだけを覚えておけば良い。

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

インスタンスに対してセキュリティを設定する「セキュリティグループ」という機能がある。
そのインスタンスごとにWebブラウザでアクセスして良いか、あるいは暗号化通信でアクセスして
良いかなどを設定できる。

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

インスタンスにWebサイトを作成し、ChromやSafariなどのブラウザでアクセスしようと思っても、
まだアクセスができない。外部からWebサイトを観閲できるようにするためには、
Webサーバーソフトをインスタンスにインストールする必要がある。
ここでは代表的なApache HTTP Serverをインストールしてみる。

SSHという方式でインスタンスに接続する。

記載しなかったが、インスタンスにはさまざまなOSが入れられる。
ここではAmazon Linuxが入っていることを前提に話を進める。

EC2に接続し、Apacheのインストールコマンドを叩く。

$ sudo yum -y install httpd-devel

yumコマンドはアプリケーションをダウンロードしてインストールしたり、アンインストールする
さいに用いる。指定しているhttpdApacheを構成する実行ファイルだ。
末尾に-develという名前を持つパッケージはほとんどの場合、対応する名前のライブラリを用いた開発を支援する ファイル群(ヘッダファイルや補助ライブラリ)を提供するパッケージだ。 僕たちはエンジニアを目指すわけではないので、そんな細かいことは気にしなくても良い。 Windowsのパソコンにソフトをインストールするように、Linuxではコマンドラインでアプリケーションを
インストールするのが一般的なのだ。

まだApacheをインストールしただけなので、起動しなくてはいけない。
そのためには下記コマンドを叩く。

$ sudo service httpd start

serviceは指定したコマンドを起動(start)、停止(stop)、再起動(restart)するコマンドだ。
startを指定することで、Apacheが起動する。

$ sudo chkconfig httpd on

chkconfigは自動起動を設定(on)、解除(off)、設定の確認(-list)を指定するコマンドだ。
ここではhttpdにonを指定しているので、サーバーが起動したときにApache自動起動するように
設定している。

これでブラウザを開きパブリックIPアドレスを叩くと、Apacheの画面が表示される。

f:id:danceswithwolves:20160901074424p:plain:w500

Apacheの設定ファイルで参照するディレクトリを指定し、そのディレクトリにHTMLなどで作成した
Webページを配置することで、Webサイトとして観閲できるようになる。

まとめ

意味わかんねーよと思われる方もたくさんいると思うが、実は僕もよく意味はわかっていない。
しかしいままで気軽に使っていたインターネットやWebサイトが、とても複雑な仕組みで
成り立っていることがわかった。これから徐々に勉強していけば良いのだ。

今後はプログラミング言語インスタンスにインストールしたり、データベースサーバを
立てたりしていきたい。その工程はこのブログにも記載していくつもりだ。