[AWS]EC2 nginxのインストールと起動 ~備忘録~

##はじめに
この記事はプログラミング初学者による備忘録用の記事であり、また、少しでも他の初学者のお役に立てればと思い書いています。

今回は、EC2インスタンス内にwebサーバー用ソフトウェアをインストールしたので、一連の流れと関連の知識を備忘録としてまとめておきたいと思います。

間違いなどがございましたら、ご指摘のほどよろしくお願い致します。

##EC2インスタンス内にNginxをインストールして起動する手順

大まかな手順としては下記の通りです。

1.ターミナルでEC2インスタンスにログインし、yumでアップデートを実行する

2.nginxのインストール

3.nginxの起動

では、インストールと起動の手順を詳細に記述していきます。

###1.ターミナルでEC2インスタンスにログインし、yumでパッケージを更新する
この場合のアップデートとは、EC2インスタンス内のライブラリをアップデートしています。
ターミナルで、``$ sudo yum update -y``と入力し、yumで管理しているパッケージ(EC2インスタンスのライブラリ)をアップデートします。

``入力コマンドの説明``

``sudo:``
**root権限**で実行する際に使用する
yumなどの作業は、EC2ユーザー等ではなくroot権限で実行する必要があります
今回の場合、**ec2-userユーザーは、sudoを使うことでroot権限でコマンドを実行することが可能となっています**

``yum:`` 
Linuxのパッケージ管理ツールでパッケージをインストールしたりアンインストールする際に使用する<br>**yum update**と入力すると、yumで管理されているパッケージがアップデートされます。

``-y:``
yesを意味するオプション(これを使うことでターミナルからyes/noを聞かれない)

``実行例``

```terminal
$ sudo yum update -y
読み込んだプラグイン:extras_suggestions, langpacks, priorities, update-motd
amzn2-core                                             | 3.7 kB  00:00:00
依存性の解決をしています
--> トランザクションの確認を実行しています。
#省略

置換:
  grub2.x86_64 1:2.06-2.amzn2.0.1           grub2-tools.x86_64 1:2.06-2.amzn2.0.1

完了しました!
```
上記のように、完了しましたと表示された場合はアップデート成功となります。

###2.whichコマンドを使用して、amazon-linux-extrasパッケージがインストールされていることを確認する
EC2内にnginxをインストールする際は、**amazon-linux-extrasパッケージ**を使用します。
which コマンドを使用して、amazon-linux-extrasパッケージがインストールされていることを確認します。

```
$ which amazon-linux-extras
/usr/bin/amazon-linux-extras
```

###3.$ amazon-linux-extrasを入力して利用可能なトピックを確認する

``$ amazon-linux-extras``を入力して利用可能なトピックのリストを表示します。
実行結果から、**nginx1が利用可能**であることがわかります。

```
$ amazon-linux-extras
  0  ansible2                 available    \
        [ =2.4.2  =2.4.6  =2.8  =stable ]
  2  httpd_modules            available    [ =1.0  =stable ]
  3  memcached1.5             available    \
        [ =1.5.1  =1.5.16  =1.5.17 ]

--- 略 ---

 38  nginx1                   available    [ =stable ]
```

###4.$ sudo amazon-linux-extras install nginx1 -yでnginxをインストールする
2021年8月時点では、インストールされる**Nginxのバージョンは1.20.0**です。

```terminal
$ sudo amazon-linux-extras install nginx1 -y
Installing nginx
読み込んだプラグイン:extras_suggestions, langpacks, priorities, update-motd
リポジトリーを清掃しています: amzn2-core amzn2extra-docker amzn2extra-nginx1

完了しました!
  0  ansible2                 available    \
        [ =2.4.2  =2.4.6  =2.8  =stable ]

--- 略 ---

38  nginx1=latest            enabled      [ =stable ]
```
上記のように、``nginx1=latest enabled [ =stable ]``と表示されていればインストール成功です。

###5.$ sudo systemctl start nginxを実行してnginxを起動させる
インストール直後は、nginxが起動していないので``$ sudo systemctl start nginx``を実行して起動させます。

``コマンドの説明``

``systemctl:``
指定したサービスを起動、停止、再起動することが可能なコマンドです

```
$ sudo systemctl start nginx
```
###6.$ sudo systemctl status nginxを入力してnginxの起動を確認する
``$ sudo systemctl status nginx``コマンドを入力後、``Active: active (running) since~``が表示されていれば起動が成功しています。

```
$ sudo systemctl status nginx
● nginx.service - The nginx HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
   Active: active (running) since 金 2021-08-20 09:14:43 UTC; 2min 14s ago
  Process: 28808 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
  Process: 28804 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
  Process: 28803 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
 Main PID: 28810 (nginx)
   CGroup: /system.slice/nginx.service
           ├─28810 nginx: master process /usr/sbin/nginx
           └─28811 nginx: worker process

 8月 20 09:14:43 ip-10-0-10-10.ap-northeast-1.compute.internal systemd[1]: Starting The nginx HTTP and reverse .....
 8月 20 09:14:43 ip-10-0-10-10.ap-northeast-1.compute.internal nginx[28804]: nginx: the configuration file /etc/...k
 8月 20 09:14:43 ip-10-0-10-10.ap-northeast-1.compute.internal nginx[28804]: nginx: configuration file /etc/ngin...l
 8月 20 09:14:43 ip-10-0-10-10.ap-northeast-1.compute.internal systemd[1]: Started The nginx HTTP and reverse p...r.
```

###7.$sudo systemctl enable nginxを入力してnginxが自動的に起動するように設定する
``$sudo systemctl enable nginx``を実行することで、サーバー起動時に、nginxも起動するようになります。
設定済みかどうかを確認する場合は、``$ sudo systemctl is-enabled nginx``を実行し、ebabledと表示されると設定が完了していることを表します。

```
$ sudo systemctl enable nginx
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.

$ sudo systemctl is-enabled nginx
enabled
```

##参考文献
[Amazon Linux2を実行しているAmazon EC2インスタンスに、amazon-linux-extrasリポジトリからソフトウェアパッケージをインストールする方法](https://aws.amazon.com/jp/premiumsupport/knowledge-center/ec2-install-extras-library-software/)
[Amazon Linux 2](https://aws.amazon.com/jp/amazon-linux-2/)