nginx
AWS
EC2

初めてのAWSのEC2でwebサーバー構築→nginx導入(後編)

前回の続きです。

今回は仮装サーバーを構築してnginxを導入してみたいと思います。

 サーバーを構築する

前回までで、物理的な世界でいうとインターネット接続の契約が済み、ルーターなどの機器の配線や設定が終わった状態。これからそのネットワーク上に仮装サーバーを作成する。

仮想サーバー構築

ec2.png

仮想サーバーは、Amazon EC2を用いて作成する。インスタンスと呼ばれ、このインスタンスにwebサーバーソフト(今回はnginx)をインストールしてwebサーバーとして機能させる。インスタンスには、パブリックサブネット内で利用可能な「プライベートIPアドレス」を割り当てる。前回、パブリックサブネットは「172.30.1.0/24」のCIDRブロックにしたので、「172.30.1.0 ~ 172.30.1.255」のいずれかの値を割り当てることになる。だが、プライベートIPアドレスは、インターネットとの接続には利用できないので、インスタンスを起動する時は、もう一つ「パブリックIPアドレス」を設定するようにする。作成したインスタンスは「VPC内で通信するためのプライベートIPアドレス」と「インターネットで通信するためのパブリックIPアドレス」の二つを持つ。

インスタンス作成

インスタンスを作成してみる。

[EC2]

1.リージョンを確認する(VPCと同じところに、今回は東京)
2.[インスタンス]>[インスタンスの作成]
3. AMIを選択(Amazon Machine Image)OSがインストールされて初期のアカウントの設定まで済んだもの。今回はAmazon Linux AMIを選択。
(AMIとは→http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2-instances-and-amis.html)
4.インスタンスタイプ(仮想マシンのスペック。インスタンスのタイプによって、インスタンスの CPU 能力、メモリ、およびストレージが決まる)を選択。(今回はt2.micro)
5.インスタンスの詳細情報を設定
1.VPCとサブネット インスタンスを配置するサブネットを選択。[ネットワーク]で配置したいVPC領域を選択し、[サブネット]で配置したいサブネット(先ほどパブリックに設定したもの)を選択する。
2.パブリックIPアドレス インターネットからこのインスタンスにアクセスできるようにするため、パブリックIPアドレスを付与。[サブネット設定を使用(有効)]を選択。

3.プライベートIPアドレス このインスタンスには、プライベートIPアドレスも設定。「プライベートサブネット」に、先ほど「172.30.1.0/24」を定義しているので、「172.30.1.0~172.30.1.255」のいずれかのIPアドレスを指定できる。 ここでは、「172.30.2.166」を割り当てる。
6.ストレージの設定
デフォルトで設定した。
(ボリュームタイプの説明についてはこちら→http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/EBSVolumeTypes.html)
7.インスタンスに名前を付ける。何でも良いが今回はtakahashi-ec2とした。
8.セキュリティグループ設定する。
セキュリティグループはインスタンスに対して、セキュリティを設定する機能。後述。
9.インスタンスの起動、[確認と作成]をクリック。
10.キーペアを作成してダウンロード。インスタンスにログインする際に必要になる鍵。
11.インスタンスの起動。キーペアをダウンロードしたら、[接続]ボタンをクリックして、インスタンスを起動。

一息入れましょう。

SSHで接続する

起動したインスタンスに、インターネットからログインして操作するため「SSH」というプロトコルを使う。
(SSHとは→http://wa3.i-3-i.info/word11722.html)

パブリックIPアドレスを確認する
EC2インスタンスの、Public IPを見れば確認することができる。

いざ、接続

1.ターミナル起動
2.ssh -i keyペアファイル名 ec2-user@パブリックIPアドレス

ファイアウォールで接続制限する

IPアドレスや、ポート番号を元にサーバーやネットワークのセキュリティを高めるようにする。

パケットフィルタリング

パケットフィルタリングは、流れるパケットを見て、通過の可否を決める仕組み。IPアドレスを判定して、「特定のIPアドレスを送信元とするパケット以外を除外するようにする」ように構成すれば、接続元を制限できる、またポート番号を制限すれば、特定のアプリケーションを外部から接続できないように構成できる。

インスタンスのセキュリティグループ

実世界ではパケットフィルタリングはルーターやサーバー、もしくは専用のダイアウォール機器で構成されるが、AWSでは、インスタンスにたいして、構成する「セキュリティグループ」がこの機能を担う。作成したインスタンスに対するセキュリティグループはデフォルトの構成でインバウンドを見ると、ポート22にたいして全ての通信(0.0.0.0/0)を許可する、という設定があり、それ以外の設定はない。デフォルトのこの設定では、webサーバーソフトなどをインスタンスに入れたとしても、阻まれて通信できないので、ソフトウェアのインストールとともに、セキュリティグループの構成も変更する必要がある。

 nginxを入れる

webサーバーといえば有名なものにapacheがあるが今回はnginxを導入してみた。

(理由についてはおもに→https://academy.gmocloud.com/qa/20160616/2761)

前提
 ・EC2のインスタンスを作成している
 ・インスタンスのセキュリティーグループでsshとhttpを許可している
 ・インスタンスにSSHに繋げる
 ・Macでターミナルを使用

1.インスタンスにsshで入る

ssh -i keyペアファイル名 ec2-user@パブリックIPアドレス

2.yumのupdate

(yumとは→http://uxmilk.jp/9715)
sudo yum update

3.nginxのインストール

sudo yum install nginx

その後バージョンの確認
nginx -v

4.nginxのデフォルトページを表示

nginxの始動!
sudo service nginx start

IPアドレスでブラウザから接続し、デフォルトページが表示されれば成功:relaxed:

自動起動にしてしまう。
 sudo chkconfig nginx on

以上

nginxはまだまだわからないことが多いのでDjangoと絡めながら今後勉強していこうと思います。