のぐそんブログ

暗いおじさんがシコシコ書くブログです。

AWS超初心者のメモその3 ~WEBサーバーソフトをインストールする~

インスタンスを作成することはできたので、次はインスタンスにソフトをWebサーバーをインストールしてみようと思います。

インスタンスSSH接続する

サーバーにソフトをインストールする為に、インスタンスに接続する必要があります。
以下のコマンドで接続します。

// my-key.pem ・・・ インスタンス作成の際に作ったキーペア
// ec2-user@XX.XXX.XXX.XXX ・・・ 接続するユーザー名@インスタンスのIPアドレス

ssh -i my-key.pem ec2-user@XX.XXX.XXX.XXX

接続時に以下のメッセージが表示される場合があります。
これは初回アクセス時に表示されます。

The authenticity of host 'sshsvr (192.168.0.1)' can't be established.
RSA key fingerprint is 28:d2:80:56:a3:3c:bf:5b:58:f6:68:97:7d:7d:68:db.
Are you sure you want to continue connecting (yes/no)? yes

また以下のエラーが表示される場合があります。 これは、キーペアファイルが他のユーザーにも見れる状態になっているからです。

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for 'my-key.pem' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "my-key.pem": bad permissions
ec2-user@XX.XXX.XXX.XXX: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

以下のコマンドで自分だけが読めるようにパーミッションを変更します。

chmod 400 my-key.pem    

接続できると以下のような感じになります。

       __|  __|_  )
       _|  (     /   Amazon Linux 2 AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-2/
16 package(s) needed for security, out of 30 available
Run "sudo yum update" to apply all updates.

待ち受けているポート番号を確認

サーバーにログインした状態で以下のコマンドを実行します。

// 最後のPは大文字です
sudo lsof -i -n -P

LISTEN    ・・・ 他のコンピュータからの待受をしているポート ESTABLISHED ・・・ 相手と通信中のポート

COMMAND    PID     USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
rpcbind   2684      rpc    6u  IPv4   16722      0t0  UDP *:111
rpcbind   2684      rpc    7u  IPv4   16726      0t0  UDP *:724
rpcbind   2684      rpc    8u  IPv4   16727      0t0  TCP *:111 (LISTEN)
rpcbind   2684      rpc    9u  IPv6   16728      0t0  UDP *:111
rpcbind   2684      rpc   10u  IPv6   16729      0t0  UDP *:724
rpcbind   2684      rpc   11u  IPv6   16730      0t0  TCP *:111 (LISTEN)
chronyd   2690   chrony    1u  IPv4   16985      0t0  UDP 127.0.0.1:323
chronyd   2690   chrony    2u  IPv6   16986      0t0  UDP [::1]:323
dhclient  2894     root    6u  IPv4   17509      0t0  UDP *:68
dhclient  3025     root    5u  IPv6   17833      0t0  UDP [fe80::4cc:c3ff:feb5:4782]:546
master    3159     root   13u  IPv4   18690      0t0  TCP 127.0.0.1:25 (LISTEN)
sshd      3324     root    3u  IPv4   19944      0t0  TCP *:22 (LISTEN)
sshd      3324     root    4u  IPv6   19946      0t0  TCP *:22 (LISTEN)
sshd     22733     root    3u  IPv4 1298034      0t0  TCP 10.0.1.10:22->218.221.62.236:62426 (ESTABLISHED)
sshd     22751 ec2-user    3u  IPv4 1298034      0t0  TCP 10.0.1.10:22->218.221.62.236:62426 (ESTABLISHED)
sshd     22872     root    3u  IPv4 1299647      0t0  TCP 10.0.1.10:22->222.186.30.152:19459 (ESTABLISHED)
sshd     22873     sshd    3u  IPv4 1299647      0t0  TCP 10.0.1.10:22->222.186.30.152:19459 (ESTABLISHED)

Apacheをインストール

Webサーバー用のソフトであるApacheをインストールします。

// -yオプションはユーザーの確認なしで実行する指定
sudo yum -y install httpd

Apacheを起動

$ sudo systemctl start httpd

起動を確認する。
active:runningになっていればOKです。

$ sudo systemctl status httpd

システム起動時に毎回起動するように設定する。

$ sudo systemctl enable httpd

自動起動がONになっているかチェック

$ sudo systemctl is-enabled httpd

正しく構成されたらかをチェック

systemctl list-dependencies httpd

ポートを確認する

sudo lsof -i -n -Pを実行すると、80ポートの状態を確認できます。

・・・ 省略 ・・・
httpd    22968     root    4u  IPv6 1301813      0t0  TCP *:80 (LISTEN)
httpd    22969   apache    4u  IPv6 1301813      0t0  TCP *:80 (LISTEN)
httpd    22970   apache    4u  IPv6 1301813      0t0  TCP *:80 (LISTEN)
httpd    22971   apache    4u  IPv6 1301813      0t0  TCP *:80 (LISTEN)
httpd    22972   apache    4u  IPv6 1301813      0t0  TCP *:80 (LISTEN)
httpd    22973   apache    4u  IPv6 1301813      0t0  TCP *:80 (LISTEN)

ブラウザでWebサーバーにアクセスする

インスタンスのパブリックIPでブラウザから表示できるか確認します。
ただし、80ポートがファイアウォールでブロックされているので接続することができません。

port 22 ------------> ○ sshd 
port 80 ------------> × httpd

ファイアウォールの設定はセキュリティグループで行います。

80番ポートを開ける

セキュリティグループを開きます。
変更したいセキュリティグループを選択して、「インバウンド」タブを選択します。
そして「編集」ボタンを押します。

「ルールの追加」ボタンを押して、以下のように設定します。 ※タイプでHTTPを選択してもOK.

ブラウザで表示

これで80番ポートが開放されたので、ブラウザでパブリックIPにアクセスしてみます。