前回の続きです。
今回は仮装サーバーを構築してnginxを導入してみたいと思います。
# サーバーを構築する
前回までで、物理的な世界でいうとインターネット接続の契約が済み、ルーターなどの機器の配線や設定が終わった状態。これからそのネットワーク上に仮装サーバーを作成する。
仮想サーバー構築
仮想サーバーは、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アドレスでブラウザから接続し、デフォルトページが表示されれば成功
自動起動にしてしまう。
sudo chkconfig nginx on
以上
nginxはまだまだわからないことが多いのでDjangoと絡めながら今後勉強していこうと思います。