【WEBサーバの構築】②
今回は噂のEC2でWebサーバ構築を目指します。
EC2とは
EC2とは
正式名称:Amazon Elastic Compute Cloud
Elasticを辞書で調べると弾力のある、伸縮自在とかの意味。トラフィックなどに応じてリソースを増減できるからこの名前になっているんでしょうか。Compute CloudでCが二つだからC2なんですね。理解。
オンプレミスでのいわゆるWindowsサーバやLinuxサーバに相当する。ここでWebアプリ等を実行するようですね。
特徴としては要件の変更に合わせてインスタンスの処理能力を自由に変更できること。
以下、引用。
Amazon Elastic Compute Cloud (Amazon EC2) は、安全でサイズ変更可能なコンピューティング性能をクラウド内で提供するウェブサービスです。ウェブスケールのクラウドコンピューティングを開発者が簡単に利用できるよう設計されています。
Amazon EC2 のシンプルなウェブサービスインターフェイスによって、手間をかけず、必要な機能を取得および設定できます。お客様のコンピューティングリソースに対して、高機能なコントロールが提供され、Amazon の実績あるインフラストラクチャ上で実行できます。Amazon EC2 では、わずか数分間で新規サーバーインスタンスを取得して起動できるようになります。これにより、コンピューティング要件の変化に合わせて、すばやく容量をスケールアップおよびスケールダウンできます。実際に使用した分のみ料金が発生するため、Amazon EC2 はコンピューティングの経済性も変革します。Amazon EC2 を利用すれば、耐障害性に優れたアプリケーションの構築が可能になり、よくある障害のシナリオとは無縁になります。
EC2の基本用語
新しいサービスやシステムを使用するにあたっては用語理解はかかせませんので基本用語をできる範囲で抑えておきます。ただし、腑に落ちるのは実際に使用してからでもいいかと思っています。
▼インスタンス
一台のサーバに相当する。仮想サーバ。
▼EBS(Amazon Elastic Block Store)
サーバのハードディスクに相当する。仮想ディスク。
▼AMI(Amazon Machine Image)
サーバにインストールするOSやミドルウェア、アプリのイメージ。
こんなイメージ??
進めながら理解していった方がよさそうだ。
EC2の無料枠
私が確認した現時点のもので、無料枠は以下の通りです。
各自で要確認です。
Amazon EC2
無料利用枠 12 か月間無料
・750 時間/月の Linux、RHEL、SLES の t.micro インスタンスの使用
・750 時間の Windows t2.micro インスタンスの使用
750時間は31×24=744で一か月間稼働させ続けても無料ということらしいです。
但し、t.micro インスタンスに限られる点や複数稼働させた場合には合計値になる点には注意が必要そうです。
Windowsは一年間で750時間なんですね。
EC2インスタンスの起動
ここから早速使っていきます。
EC2インスタンスの生成
①サービスからEC2を選択。東京リージョンを選択しておく。
②メニューからインスタンスを選択し、インスタンスの作成を押下。
③AMI(OS)の選択
Linux2も出ていたみたいですが、高度なことをやるわけでもないので、情報収集のしやすさも考えて普通のLinuxを選択することにしました。
・Amazon Linux AMI 2018.03.0 (HVM), SSD Volume Type
④インスタンスタイプの選択
インスタンスタイプというのはサーバスペックに該当するみたいですね。
ここでは唯一無料枠対象の「t2.micro」を選択しインスタンスの詳細設定を押下。
⑤インスタンスの詳細設定
普通に使用する分にはこのままで問題ないようなので、初期設定のまま、ストレージの追加へ。
※まだよく分かってないけどVPCって先に設定しておかなくても大丈夫なのかな?
⑤ストレージの追加
ここも初期設定ままでタグ付けへ。
⑥インスタンスのタグ付け
タグは管理上分かりやすくするものらしいので、入力値は任意でOK。
⑦セキュリティグループの設定
EC2に接続できる接続元やポート番号を設定する。ファイヤーウォールに相当する部分らしい。
ソース(接続元)は一旦、マイIPに設定しておいた。
⑧キーペアの生成
起動を押下すると、キーペアの作成画面が表示される。
初めての場合、新しいキーペア作成で任意の名前を入力してダウンロード。
ダウンロードした「pem」ファイルは厳重に保管しておくこと。
ダウンロード後はインスタンスの作成を押下。
⑧作成に失敗
インスタンスの作成に失敗した???
Your request for accessing resources in this region is being validated, and you will not be able to launch additional resources in this region until the validation is complete. We will notify you by email once your request has been validated. While normally resolved within minutes, please allow up to 4 hours for this process to complete. If the issue still persists, please let us know by writing to [awsメールアドレス] for further assistance.
どうも初アクセスの場合(?)は東京リージョンへのアクセス要求への検証が必要ならしく、検証するからメールくるまで待っててと言っているらしい。
慌てずに数分待つと「AWSアカウント確認が完了しました。」のメールが来たので再実行を押下。
⑧作成に成功
今度はうまくいったようです。
インスタンスを表示し、しばらくしてからrunningになっていればよいと。
EC2インスタンスの状態遷移
基本的には一つのインスタンスのみを使用する場合は常時起動していても無料枠からはみ出すことはないが、明確に使用していない場合は停止させておいた方が安心だろう。というわけで状態についてのまとめ。
インスタンスの状態はインスタンス一覧から当該インスタンスを確認すればよい。
また状態の変更はアクションからインスタンスの状態を選択すれば変更できる。
EC2-状態遷移図
ちょっと気になる。シャットダウンと停止の違いは、起動中(running)にインスタンスの削除を実行した場合、shutting-downを経由して削除を行うみたいですね(私調べ)。
また、停止→起動により割り振られるIPアドレスが変更されてしまうとかなんとか。
Webサーバのインストール
★ここでやること
立ち上げたEC2@東京リージョンにローカルからリモート接続してHTTPサーバをインストールする。
ローカル端末からEC2にSSHリモート接続する
①ターミナルソフトを用意する。
フリーソフトの「teraterm」でいいらしい。
※Linuxをちょくちょく勉強してきたのがここで活きる!とうれしい。。
②teratermからEC2にリモート接続する。
ホストにEC2のIPアドレスを打ち込む。
現時点の私では画面下部の「説明」タブの「IPv4 パブリック IP」のところに表示されているアドレスを打ち込んだ。
teraterm画面
セキュリティ警告画面はそのまま続行でよい。
ユーザ名:ec2-user
※固定なのかな?
鍵を使うを選択し、秘密鍵を押下、先の手順でダウンロードした「pem」ファイルを選択する。
OKを押下して以下の画面が表示されれば接続できています。
※上記手順で一回目はなぜか接続できませんでしたが、同じ手順で2回目を試したら接続できました。
Apach HTTP Serverのインストール
①yumのアップデート
パッケージ管理システムのyumを以下のコマンドで最新化します。
sudo yum -y update
updateが実行され、いろいろぐわっとでてきますが、「Complete!」が表示されるまで冷静に待つ。
「Complete!」が表示されたらここは完了。
②httpdのインストール
以下のコマンドで「httpd」をインストールします。
sudo yum install -y httpd
こちらも同じく「Complete!」が表示されたら完了。
③httpdの起動
sudo service httpd start
以下が表示されれば成功。
Starting httpd: [ OK ]
④webサーバの起動を確認
webサーバの起動を確認するためにブラウザから接続を試みる。
任意のブラウザに先ほどのパブリックIPアドレスを直打ちして以下の画面が表示されればOK。
※セキュリティの設定でhttpを許可していなければここがはじかれるということか
⑤webサーバの自動起動設定
インフラ屋さんやちょっと詳しい人は当たり前かもしれませんが、現状ではサービスの開始コマンドを毎回打たないと起動しないので、インスタンスを立ち上げると同時にサービスも自動開始されるように設定を変更しておく。
サービス自動機能設定のコマンド
sudo chkconfig httpd on
実行しても何も表示されないと思うので、設定の確認を行う。
sudo chkconfig --list httpd
以下のようにレベル2から5までがonになっていれば成功。
httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
EC2へコンテンツの配置
①コンテンツの用意
接続時に表示する静的コンテンツを用意する。普通にhtmlファイルでいいだろう。
ここで表示させるものにこだわると主旨がずれるので、私の場合は例によってS3でも使用したhtmlファイルと呼び出す画像ファイルを用意した。
②コンテンツをローカルからEC2へ転送
windows端末からEC2のLinuxサーバにファイルをscpにより転送する。
win-scpというフリーソフトや他の方法でもいいだろうが今回はteratermを使用する。
転送したいファイルをteraterm上にドラック&ドロップすると以下の画面が表示される。
送信先の送信したいディレクトリを入力すればよい。
私の場合は予めユーザディレクトリ配下にwork/work1ディレクトを作成しておいた。
lsコマンドなどで転送されていることを確認する。
余談だがこの方法ではフォルダごと転送しようとするとうまくできなかった。
Windows上で圧縮→転送→Linux上で解凍がスマートだが今回は割愛。
③コンテンツを公開ディレクトリに配置する。
転送したコンテンツをApach HTTP Serverの公開ディレクトリに配置する。
↓公開ディレクトリ
/var/www/html/
管理者権限でないと操作ができないようなので以下のコマンドでファイルをコピーする。
sudo cp [コピー元] /var/www/html/
④コンテンツの確認
任意のブラウザで先ほどのパブリックIPアドレスと同じものを開く直す。
表示できました!これオンプレじゃ独力ではまずできないから少し感動する。
【余談】
普段のLinux勉強ではtmuxを使用しているので、EC2でもtmuxをインストールしておいた。
sudo yum install tmux
tmuxって何?って方は以下の記事に少しまとめているのでぜひ参照ください。
www.wantanblog.com
今回はここまで、次回はロードバランサとかですかね。
せっかく勉強してるので、AWSソリューションアーキテクト アソシエイトとか取得しといてもいいかもと思い始めた今日このごろ。試験のレベルは調べてないので、今やってるレベルで多少なり通用するのかは不明。