4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

株式会社デジタルクエスト エンジニアAdvent Calendar 2017

Day 14

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

Last updated at Posted at 2017-12-14

前回の続きです。

今回は仮装サーバーを構築して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と絡めながら今後勉強していこうと思います。

4
3
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
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?