AWS初学者です。
前回はSSH接続を行いました。
前回記事はこちら: Amazon EC2を利用した仮想サーバー構築方法②(SSH接続)
今回はApacheのインストールとファイアウォールの設定方法についてアウトプットしていきたいと思います。
(また、私はMacを使用した上でこの記事を書いています。Windowsをご使用の方はご注意ください)
Apacheのインストール
今回は、前回までに作ったサーバーを「Webサーバー」として機能させるために、Apache(Apache HTTP Server)というWebサーバーソフトを用います。
[手順1] 作成したEC2インスタンスにSSHでログインする。
以下のコマンドをターミナルで実行して、SSHでインスタンスにログインします。
ssh -i ダウンロードしたキーペアファイル ec2-user@起動しているEC2インスタンスのパブリックIPアドレス
[手順2] Apacheをインストールするために、以下のコマンドを実行。
sudo yum -y install httpd
[手順3] Apacheを起動するために、以下のコマンドを実行。
sudo systemctl start httpd.service
・sudoコマンド
→ 指定したコマンド(今回はyum)を管理者権限で実行するためのコマンド。管理者権限が必要な時に、先頭につける。
・yumコマンド
→ アプリケーションをダウンロードしてインストールしたり、アンインストールする時に用いる管理者コマンド。
・httpd
→ Apacheを構成する実行ファイル名。これを指定することでApacheがインストールされる。
・-yオプション
→ ユーザーの確認(yesの入力)なしでコマンドを実行できるオプション。
・systemctlコマンド
→ 指定したコマンド(今回はhttpd、つまりApache本体を指定)を
「起動(start)」
「停止(stop)」
「再起動(restart)」
するコマンド。
ここまででApacheが起動するようになりますが、サーバーを再起動するとまた停止してしまいます。
いちいち起動させるのは面倒なので、Apacheも自動的に再起動させる設定を行います。
Apacheを自動的に起動させる設定
[手順4]Apacheを自動起動させるために、以下のコマンドを実行。
sudo systemctl enable httpd.service
systemctlコマンドは指定したコマンドを「起動、停止、再起動」させることができると説明しましたが、自動起動についても
「設定(enable)」
「設定解除(disable)」
「設定の確認(list-unit-files)」
を設定することもできます。
Apacheの自動起動が設定できたかどうかは、以下のコマンドで確認できます。(「httpd.service」 がenabledになっていれば成功)
sudo systemctl list-unit-files -t service
↓実行結果(アルファベット順で並んでいる)
UNIT FILES
...
httpd.service enabled
...
以上でApacheをインストールし、その実行ファイルであるhttpdが起動しました。
「実行中か」を確認するには、以下のコマンドを実行して、Apacheのプロセス(実行中のプログラムのこと)を確認します。
ps -ax
ここでコマンドの解説。
・psコマンド
→ 実行中のプロセスを確認できるコマンド。
・ -ax
→ 「-aオプション」と「-xオプション」が組み合わさったもの
・ -aオプション
→ 全てのプロセスを表示させるオプション。
・ -xオプション
→ 他の端末に結び付けられているプロセスも表示するオプション。
このコマンドを実行して、以下のような実行結果が表示されれば、サーバー上でApacheが起動しています。
ps -ax
↓実行結果
12134 ? Ss 0:00 /usr/sbin/httpd -DFOREGROUND
先頭に表示されている「11115」といった数字はプロセスIDといい、プロセスを区別するために自動的につけられた番号です。
これでApacheが起動中であることが確認できたので、次はファイアウォールの設定に移ります。
ですが、まずファイアウォールとは何なのか?ということから振り返ります。
ファイアウォールとは?
ファイアウォールとは、
「通して良いデータを通して、それ以外を遮断する機能」
のことです。
今回は、その中でも簡単だと言われる「パケットフィルタリング」を設定していきたいと思います。
・パケットフィルタリングとは?
→ 流れるパケットを見て、通過の可否を決める仕組みのこと
・パケットとは?
→ まず、「データ通信の際に、送りたいデータを一度に全て送るのではなく、いくつかに分割して送る方式」のことをパケット交換方式と呼ぶ。その時、分割されたデータ一つ一つのことを「パケット」という。
このパケットの中には、「IPアドレス」や「ポート番号」も含まれています。
パケットフィルタリングは、「IPアドレス」や「ポート番号」など、各種情報を判断材料に通過の可否を決めます。
具体的には、以下のことが可能になるようです。
・「特定のIPアドレスを送信元とするパケット以外を除外する」ように構成することで、接続元を制限する。
・ポート番号を制限して、特定のアプリケーションを外部から接続できないようにする。
それでは、ファイアウォールの設定方法に移ります。
ファイアウォールの設定方法
[手順1] AWSのEC2を開き、左側のメニューから「セキュリティグループ」をクリック。
以前作成した「WEB-SG」というセキュリティグループにチェックを入れます。
[手順2] チェックを入れたら、画面下側の「インバウンド」というタブをクリックし、さらに「edit inbound rules」をクリックします。
[手順3] ポート80番を開ける(ブロックされているポート80番で通信できるようにする)操作を行います。
具体的には、以下の4点を行い、「保存」をクリックする。
- 「ルールの追加」をクリック
- タイプは「カスタムTCP」を選択
- ポート範囲は「80」を入力
- ソースは「カスタム」を選択し、「0.0.0.0/0」を入力。
以上により、
「ポート22番だけを通して、それ以外は通さない」
という設定に
「ポート80番でも通信できる」
という設定を追加しました。
この状態で、作成したEC2インスタンスのパブリックIPアドレスをアドレスバーに入力して、アクセスしてみてください。
以下のような、Apacheのテスト画面が表示されれば成功です。
以上で、「Apacheのインストール」と「ファイアウォールの設定」は完了です。
次回は、「IPアドレスではなく、ドメイン名でインスタンスにアクセスできるようにする」という内容をアウトプットしたいと思います。
ここまで読んでいただき、ありがとうございました。