Webサーバーを構築(AWS、EC2)
内容
EC2でWebサーバーを構築する
基礎知識
- EC2(Elastic Compute Cloud)
→AWSクラウド上の仮想サーバー
→インスタンスとはEC2から立てられたサーバーのこと - AMI(Amazon Machine Image)
→インスタンス起動に必要な情報が入ったOSのイメージ、サーバーのテンプレートのようなもの - インスタンスタイプ
→サーバーのスペックを定義したもの
→アクセス数等に応じて必要なスペックのタイプを選択し、スペックにより料金が異なる - ストレージ
→サーバーにくっつけるデータの保存場所
→EC2のストレージには、EBS(Elastic Block Store)とインスタンスストアの2種類ある - Elastic IP
→AWSから割り振られた固定の「パブリックIPアドレス」のこと
→このパブリックIPアドレスをEC2インスタンスに紐付けることで、インスタンスの起動・停止にかかわらず常に同じIPアドレスで通信をすることが可能となる - SSH
→サーバーと自分のパソコンをセキュアに繋ぐサービスのこと(EC2にログインする時はSSHを使用する)
→通信内容が暗号化された遠隔ログインシステム - ポート番号
→プログラムのアドレスで、同一コンピューター内で通信を行うプログラムを識別する時に利用される(住所でいう部屋番号みたいなもの) - ウェルノウンポート番号
→代表的なプログラムが使うポート番号で、0〜1023までの整数値をとる
例)SSHは22番、SMTPは25番、HTTPは80番、HTTPSは443番 - 動的に決まる番号
→49142〜65535までの整数値をとる - ファイアウォール
→ネットワークを不正アクセスから守るために、「通してよい通信だけを通して、それ以外は通さない」機能の総称
→AWSでは、セキュリティグループがファイアウォールの役割を担っている - yumコマンド
→Linuxにおけるソフトウェア管理の仕組みで、MacOSにとってのhomebrewと同じ役割を果たす
→yumコマンドを利用することで、yumの管理下にあるプログラムのバージョンを管理したり、一括でアップデートしたりできる - パッケージ
→LinuxOS下におけるある役割/機能をもったプログラムの集合のことで、「ソフトウェア」や「ライブラリ」とも呼べる - -yワイオプション
→yum install などのコマンドでは、本当にインストールして良いのか [y/n](「Yes or No」の意味)が問われるので、あらかじめオプションで「-y」を設定する事で「すべての問いにYesで自動的に答える」という設定してコマンドを実行している
Webサーバーの構築
1. EC2インスタンスを設置
- EC2を開き、インスタンスを選択
- インスタンスを起動
- AMIを選択→クイックスタートからAmazon Linux 2を選択
- インスタンスタイプの選択→無料利用枠のt2.microを選択
- インスタンスの詳細の設定→ネットワークは設定したpvc、サブネットはpublic、自動割り当てパブリックIPは有効、キャパシティの予約はなし、ネットワークインターフェイスのプライマリIPを設定したIPアドレスの範囲内で設定
- ストレージの追加
- タグの追加→キーを「Name」、値を任意で設定
- セキュリティグループの設定→セキュリティグループ名を先ほど設定した値とする→確認と作成
- インスタンス作成の確認→起動
- キーペアを作成→新しいキーペアの作成からキーペア名を任意でを設定→キーペアのダウンロード→インスタンスの作成
2. Elastic IPを作成
さきほど作成した「EC2インスタンス」には作成時にIPアドレスが自動で割り振られている、これを「パブリックIP」と言う
しかし、サーバーを再起動させるたびにこのパブリックIPが変わってしまうという欠点を持っていて、IPが変わってしまうと、設定ファイル等をその都度書き換えなければならない
これを解決してくれるのが「Elastic IP」
※インスタンスが停止していても、Elastic IPアドレスが複数存在する場合は料金が発生するため、インスタンスを停止するときには、そのインスタンスと紐づいているElastic IPアドレスも解放する必要がある
- Elastic IPタブを開き、Elastic IP アドレスの割り当てをクリック
- Amazon の IPv4 アドレスプールにチェックが入ってることを確認後、割り当てをクリック
- 取得したElastic IPアドレスとEC2インスタンスを紐付け→右上にあるアクションをクリックし、Elastic IP アドレスの関連付けを選択
- インスタンスにチェックが入っていることを確認→インスタンスの入力欄をクリックし、表示されたインスタンスIDを選択→関連付けるをクリック
- Elastic IPが設定されているか確認
3. ファイアウォールを設定
- 現状SSH以外ではWebサーバーにアクセスできない
- EC2ダッシュボードのインスタンス→セキュリティ→セキュリティグループ→インバウンドルールの編集
- ルールの追加→タイプ「HTTP」、ソース「0.0.0.0/0」と「::/0」→保存
4. Apacheをインストール
- SSHでサーバーにログイン
ターミナル
% cd ~ % mkdir ~/.ssh # .sshというディレクトリを作成 # File existsとエラーが表示されたとしても、.sshディレクトリは存在しているのということなので、そのまま進む % mv Downloads/ダウンロードした鍵の名前.pem .ssh/ # mvコマンドで、ダウンロードしたpemファイルを、ダウンロードディレクトリから、.sshディレクトリに移動する # 「ダウンロードした鍵の名前」の部分は、Finderでダウンロードフォルダから「〜.pem」というファイルを探し、「〜」の部分の名前に置き換える % cd .ssh/ % ls # pemファイルが存在するか確認 % chmod 600 ダウンロードした鍵の名前.pem # 「ダウンロードした鍵の名前」はFinderのダウンロードフォルダから探す % ssh -i ダウンロードした鍵の名前.pem ec2-user@作成したEC2インスタンスに紐付けたElastic IP # 「作成したEC2インスタンスに紐付けたElastic IP」は自身のものに編集
- Elastic IPを設定していない場合は以下の通りパブリック IPv4 アドレスをコピーして記述する
- マネジメントコンソールでEC2ダッシュボードのインスタンスを選択
- 作成したインスタンスのパブリック IPv4 アドレスをコピー
- 初めてログインするサーバーの場合信頼できるかyes/noで聞かれるため、yesとうつ
※ssh接続は、一定時間操作をせずにいるとタイムアウトしてしまう、その場合は「ssh -i 〜」のコマンドを再度実行することでサーバーに接続できる - 何も作業がない時は「exit」でログアウトしておく
- 再度ログイン(ssh -i 〜)
sudo lsof -i -n -P
コマンドで右端のNAME欄で、LISTENを書かれているものが受け入れているポート番号- Apacheをインストール
ターミナル
# パッケージをアップデート [ec2-user@ip-10-0-10-10 ~]$ sudo yum update -y # Apacheをインストール [ec2-user@ip-10-0-10-10 ~]$ sudo yum -y install httpd # Apacheを起動 [ec2-user@ip-10-0-10-10 ~]$ sudo systemctl start httpd.service # 起動しているか確認 [ec2-user@ip-10-0-10-10 ~]$ sudo systemctl status httpd.service # その他の確認方法 [ec2-user@ip-10-0-10-10 ~]$ ps -axu # サーバー起動時にApacheも起動されるように設定 [ec2-user@ip-10-0-10-10 ~]$ sudo systemctl enable httpd.service # 自動起動できているか確認 [ec2-user@ip-10-0-10-10 ~]$ sudo systemctl is-enabled httpd.service
以上でWebページを表示するところまで実装
5. 使用しない時は無料枠を超えないように設定変更
- Elastic IPアドレスの解放
→EC2ダッシュボード→Elastic IP→アクション→アドレスの関連付けの解除→アドレスの解放 - EC2インスタンスの停止
→EC2ダッシュボード→インスタンス→インスタンスの状態→停止
※インスタンスを停止するとEIastic IPアドレスは関連付けられなくなるので、あらかじめEIastic IPアドレスを解放し課金されないように気をつける
次回
ドメインを登録