0
0

More than 3 years have passed since last update.

AWSの仮想サーバーをWebサーバーにする方法

Posted at

はじめに

AWSはAmazon Web Servisesの略で、Amazonが提供しているクラウドサーバーのサービスです。
AWSへの理解度を高めるために、学んだことをアウトプットします。
今回はネットワークとの関係を記載します。

今回の流れ

AWSのEC2に作成したインスタンス(仮想サーバー)をWebサーバーにします。

  • Webサーバーソフトのインストール
  • ファイアウォールの設定
  • DNSサーバーの設定

Webサーバーソフトのインストール

サーバーをWebサーバーとして機能させるには、サーバーにWebサーバーソフトをインストールします。
今回は世界で最も多く利用されている「Apache HTTP Server」をインストールします。

インストールの作成手順

① インスタンスにログインします。

インスタンスにログインするためには、インスタンスにSSH接続する必要があります。(SSHとはターミナルから直接サーバー操作を行うことができるプロトコルのこと)

ターミナル
% ssh -i キーペアファイル ec2-user@IPアドレス
=> 「%」と表示されていた先頭の記述が「[ec2-user@ip-10-0-1-10 ~]$」のように変わります。(@以下は人によって変わります)

IPアドレスは作成したインスタンスのパブリックIPです。
例)
% ssh -i my-key.pem ec2-user@54.95.164.166

初回はおそらくセキュリティ警告が出て、[yes/no]?と出るため、「yes」を打ち込みます。

WARNINGと表示され、インスタンスにログインできない場合

キーペアが原因だと思われます。
以下の入力をします。

ターミナル
% chmod 400 my-key.pem

chmodはchange modeの略で、キーペアファイル(今回は「my-key.pem」というものを作成しました。)の属性を変更します。
400の最初の4は所有者、真ん中の0は所有グループ、最後の0はその他のユーザーにそれぞれ割り当てられます。
4は読み取り、2は書き込み、1は実行の権限を表し、全て行える場合には4と2と1を足して、7となります。
例えば、全てのユーザーが全ての権限があるようにしたい場合は「777」を指定します。
今回はキーペアファイルは自身だけが読み取れるものにし、自身で書き込みや実行は行わないので、4にし、他人に見せないものなので、他は0にします。

再度、SSH接続のコマンドを実行してください。

② Apacheをインストールします。

ターミナル
$ sudo yum -y install httpd

「sudo」はその後ろのコマンドをroot権限(管理者権限)で実行するためのコマンドです。
「yum」はアプリケーションをインストールしたり、アンインストールする時に使用するコマンドです。
「-y」はインタラクティブな質問を全てyesで答えてくれるコマンドです。
「install」はインストールするコマンドです。
「httpd」はApacheを後世する実行ファイル名です。

③ Apacheを起動します。

ターミナル
$ sudo systemctl start httpd.service

「systemctl start」は起動するコマンドです。

④ Apacheを自動起動するようにします。
サーバーを再起動した際には、Apacheは停止してしまいます。
サーバー起動時にApacheも自動で起動する世にしましょう。

ターミナル
$ sudo systemctl enable httpd.service

「system enable」は設定するコマンドです。

⑤ 設定を確認する

ターミナル
$ sudo systemctl list-unit-files -t service

「httpd.service」が「enabled」になっていることが確認できれば、OKです。

⑥ ポートを確認する

ターミナル
$ sudo lsof -i -n -P
=> 以下のような表示がでます。
httpd    6840     root    4u  IPv6 144355      0t0  TCP *:80 (LISTEN)
httpd    6841   apache    4u  IPv6 144355      0t0  TCP *:80 (LISTEN)
httpd    6842   apache    4u  IPv6 144355      0t0  TCP *:80 (LISTEN)
httpd    6843   apache    4u  IPv6 144355      0t0  TCP *:80 (LISTEN)
httpd    6844   apache    4u  IPv6 144355      0t0  TCP *:80 (LISTEN)
httpd    6845   apache    4u  IPv6 144355      0t0  TCP *:80 (LISTEN)

「TCP *:80」という表示から、Apacheは80番ポートで待ち受けていることが確認できます。

ファイアウォールの設定

現状ではパブリックIPアドレスをブラウザ上にコピー&ペーストしても、Webサーバーにアクセスできません。
それはApacheの80番ポートがファイアウォールでブロックされているためです。
ここでは、Webサーバーにアクセスできるようにします。

  • セキュリティグループを選択し、インバウンドルールを編集します。
    Webサーバーをインストールしたインスタンスのセキュリティグループを選択します。
    (私は「WEB-SG」というものを作成したため、そちらを選択しました。https://qiita.com/daisuke30x/items/91307c94e8f5a702a42f)
    画面右下に表示される「インバウンドルール」タブ内の「インバウンドルールを編集」をクリックします。

  • ルールを追加します。

「ルールの追加」をクリックし、タイプを「カスタムTCPルール」、ポート範囲を「80」、ソースを「0.0.0.0/0」にし、保存します。
ソース「0.0.0.0/0」は全てのホストを示します。

  • ブラウザで表示されるか確認します。 パブリックIPアドレスをブラウザにコピー&ペーストします。
    先程、表示されなかったページが表示されるようになればOKです。

DNSサーバーの設定

DNSサーバーとは

「IPアドレス」と「ドメイン名」を変換するものです。
IPアドレスは数字の並びなので、覚えにくいものになります。
そこで、人間が理解できるようなドメイン名を付けることが一般的です。
AWSでもドメイン名を作成することができます。

  • VPCの設定ページを開きます。
    AWSでVPCページへ遷移し、作成したVPCを選択します。

  • DNS名を付けるように設定します。
    「アクション」から「DNSホスト名を編集」をクリックし、「有効化」にチェックを入れます。

  • インスタンスで確認します。
    「EC2」ページからインスタンスを確認すると、パブリックIPにDNSがついたものがあることが確認できます。
    それが、DNS名です。

参考

「Amazon Web Services 基礎からのネットワーク&サーバー構築」
著者:大澤文孝、玉川憲、片山暁雄、今井雄太

最後に

本投稿が初学者の復習の一助となればと幸いです。

0
0
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
0
0