EC2におけるwebサーバー構築作法と考え方【実践編①】

# 前提
この記事は、[EC2におけるwebサーバー構築作法と考え方【概念編】](https://qiita.com/yt_kg/items/1c21227bbebfb62acd09)の続編で実践編①です。

パッケージ管理ツール、amazon-linux-extras, リポジトリ、この３つの単語の意味がわからない場合は、上の記事を読んでから、この記事を読みましょう。

# 事前準備
EC2を立てておく。
OSはAmazon Linux 2。

# いざ実践
- 単純にyum installでパッケージをインストールする場合
- amazon-linux-extrasでパッケージをインストールする場合
- 外部リポジトリをEC2に登録してからパッケージをインストールする場合

この３つを順番にハンズオンしていきますが、本記事では、

「単純にyum installでパッケージをインストールする場合」

をやります。

## yum installでインストール
今回は、Apache2.4.43をインストールしましょう

EC2へログインしてから以下の手順を進めてください

### ログイン後にやるべきこと
ログイン後の画面を見てください。

こんな感じになってると思います。一部xxで隠してあります。


```
 Last login: Fri Jun  5 01:27:01 2020 from xxxxxx 

  
 __|  __|_  ) 
 _|  (     /   Amazon Linux 2 AMI 
 ___|\___|___| 
  
 https://aws.amazon.com/amazon-linux-2/ 
 5 package(s) needed for security, out of 9 available 
 Run "sudo yum update" to apply all updates. 
 [ec2-user@ip-xx ~]$ 
 [ec2-user@ip-xx ~]$ 
 [ec2-user@ip-xx ~]$ 

```

ログイン後のメッセージちゃんと読んでいますか？

ここです。

```
5 package(s) needed for security, out of 9 available 
 Run "sudo yum update" to apply all updates. 
```

更新を反映するには、

```
sudo yum update
```

を実行してね、と言ってくれてます。

実行しましょう。

EC2はやって欲しいことをちゃんと教えてくれます。
僕らもちゃんと読んであげましょう。

EC2に限らずメッセージを読むことはとても大事です。ちゃんと読んで、適切なアクションをすれば大体解決します。

### インストールされているか確認
更新できたら、Apacheがインストールされているか確認しましょう。
Apacheはhttpdという名前で存在するので

```
yum list installed | grep httpd
```

でインストール済みか確認しましょう。

何も表示されなければ、httpdはインストールされていません。

僕の環境では何も表示されていなかったので、httpdはインストールされていません。

### インストールできるか確認
httpdがインストールされていないので、インストールする必要があります。

インストールできるかどうか、以下のコマンドで確認しましょう。

```
yum list available | grep httpd
```

僕の環境では、こんな表示になりました。

```
 generic-logos-httpd.noarch             18.0.0-4.amzn2                 amzn2-core 
 httpd.x86_64                           2.4.43-1.amzn2                 amzn2-core 
 httpd-devel.x86_64                     2.4.43-1.amzn2                 amzn2-core 
 httpd-filesystem.noarch                2.4.43-1.amzn2                 amzn2-core 
 httpd-manual.noarch                    2.4.43-1.amzn2                 amzn2-core 
 httpd-tools.x86_64                     2.4.43-1.amzn2                 amzn2-core 
 keycloak-httpd-client-install.noarch   0.8-1.amzn2                    amzn2-core 
 libmicrohttpd.i686                     0.9.33-2.amzn2.0.2             amzn2-core 
 libmicrohttpd.x86_64                   0.9.33-2.amzn2.0.2             amzn2-core 
 libmicrohttpd-devel.x86_64             0.9.33-2.amzn2.0.2             amzn2-core 
 libmicrohttpd-doc.noarch               0.9.33-2.amzn2.0.2             amzn2-core 
 python2-keycloak-httpd-client-install.noarch 
```

今回インストールしたいのは、

```
httpd.x86_64                           2.4.43-1.amzn2                 amzn2-core 
```

です。

どうやらインストールできそうですね。

### バージョン確認

もう一つ確認したいことがあります。バージョンです。

パッケージがインストールできることはわかりましたが、バージョンも望み通りかはわかりません。

というわけで、以下のコマンドで確認しましょう。

```
yum info httpd
```

僕の環境では以下のような返答が返ってきました。

```
 読み込んだプラグイン:extras_suggestions, langpacks, priorities, update-motd 
 利用可能なパッケージ 
 名前                : httpd 
 アーキテクチャー    : x86_64 
 バージョン          : 2.4.43
 リリース            : 1.amzn2 
 容量                : 1.3 M 
 リポジトリー        : amzn2-core/2/x86_64 
 要約                : Apache HTTP Server 
 URL                 : https://httpd.apache.org/ 
 ライセンス          : ASL 2.0 
 説明                : The Apache HTTP Server is a powerful, efficient, and 
 : extensible web server. 
```

今回インストールしたいのはApache2.4.43なので、バージョンもあっていますね。

### インストール

お待たせしました。ようやくインストールの準備が整いました。

以下のコマンドを実行して、httpdをインストールをしましょう。

```
sudo yum install httpd
```

途中で、

```
Is this ok [y/d/N]: 
```

と聞かれるので、`y`を押しましょう。ただし、 `Downloading packeges` に問題がなさそうな場合に限ります。
ここには、一緒にインストールされるパッケージやバージョン変更されるパッケージが表示されます。

まだ、問題があるかどうかわからないと思うので、とりあえず目を通せばokです。

### -yオプションについて
実はインストールする時に、

```
sudo yum -y install httpd
```

と書けば、

```
Is this ok [y/d/N]: 
```
が表示されません。つまり、`-y`オプションをつければ、途中確認なしでインストールされます。

一見`-y`オプションをつけた方がいいと感じるかもしれませんが、とても危険です。

パッケージをインストールする時は、依存関係を解決するために色んなパッケージをインストールしたり、依存関係解決の中で既存のパッケージのバージョンが変わってしまう場合があります。

中には望ましくない変更もあります。望ましくない変更がある場合には、そのインストールは中止した方が良いです。

`-y` オプションをつけると、このような変更が強制的に実行されてしまいます。

最初のうちはメッセージを読む癖をつけるためにも、`-y`オプションをつけないことを強くおすすめします。


### インストールできているか確認

というわけで、インストールできましたね。

しかし、インストールして終わりではありません。

インストールできているか、以下のコマンドで確認しましょう。

```
httpd -v
```

```
 Server version: Apache/2.4.43 () 
 Server built:   May  8 2020 17:02:41 
```

ちゃんとインストールできていますね。

# まとめ
今回は石橋を叩くように一つ一つ確認しながら、httpdをインストールしました。
個人の環境であれば、どのようにインストールしても問題はないです。

しかし、複数人で開発する環境であれば、問題がないことを確認しながら進めるべきでしょう。

個人で開発する時から、このように一つ一つ確認する癖をつけておけば、スムーズに仕事できるのではないでしょうか。

次は、amazon-linux-extrasでredis4.0をインストールするので、お楽しみに。