Nginx①UbuntuにNginxをインストールする方法

## Nginxの最新の安定版をインストールするのに、`sudo apt update && sudo apt install nginx`だけではいけない理由
`sudo apt install nginx`でインストールされるのは、Ubuntu公式リポジトリのパッケージです。
公式リポジトリでは、最新のNginxではなく、長期間の安定性を重視したバージョン を提供するため、1.24.0 などの少し古いバージョンが維持されているからです。
実際、私が`sudo apt update && sudo apt install nginx`のみを行ったときはNginxの1.24.0がインストールされました。(当時の最新安定版は1.26.3)

## Nginxのインストール方法
1. 必要な各パッケージをまとめてインストール
2. Nginx の署名鍵をインポート
3. 取得した署名鍵の確認
4. リポジトリの追加
5. Nginxのインストール

## 必要な各パッケージをまとめてインストール
```
sudo apt install curl gnupg2 ca-certificates lsb-release ubuntu-keyring
```
* `curl`　指定したURLのHTMLデータを取得できるツール。Nginxの公式リポジトリを追加し、必要なURLにアクセスするために使用されます
* `gnupg2`　公開鍵(GPGキー)管理ツール。リポジトリを追加する際に、Nginxのリポジトリの署名（公開鍵）を検証するために使い、パッケージが正当なものかどうかを確認します
* `ca-certificates`　SSL/TLS証明書を認証するためのルート証明書を提供するツール。HTTPS経由でリポジトリにアクセスする際、信頼できる証明書を使って接続するために必要です
* `lsb-release`　インストールされているUbuntuのバージョン情報を取得するためのツール。適切なNginxのリポジトリを選択するために、Ubuntuのバージョンを確認します
* `ubuntu-keyring`　Ubuntuの公式ソフトウェアリポジトリに関連する公開鍵を管理するツール。Ubuntuのリポジトリと関連パッケージが信頼できることを確認できます

## Nginxの署名鍵をインポート
### Nginxをインストールする前に、Nginxの署名鍵をインポートする理由
Nginxの署名鍵をインポートすることで、インストールするパッケージの整合性と信頼性を検証でき、偽のソフトウェアがインストールされるリスクを避けることができるからです
```
curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
 | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
```
* `curl https://nginx.org/keys/nginx_signing.key`　Nginxの公開鍵をWebから取得します
* `gpg --dearmor`　公開鍵を暗号化形式（ASCII）からバイナリ形式に変換します
* `sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg`　変換された公開鍵を/usr/share/keyrings/nginx-archive-keyring.gpgというファイルに保存します
* `>/dev/null`　コマンドの出力を無視するためのものです

## 取得した署名鍵の確認
```
gpg --dry-run --quiet --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpg

pub   rsa2048 2011-08-19 [SC] [expires: 2027-05-24]
      573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62
uid                      nginx signing key <signing-key@nginx.com>
```
`573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62`が表示されたらOKです
* `gpg`　公開鍵の検証をするときに使用するコマンドです
* `--dry-run`　実際には鍵をインポートせず、テスト実行だけを行います
* `--quiet`　出力メッセージを最小限に抑え、成功時は何も表示されず、エラーがある場合にのみエラーメッセージを出力します
* `--import`　通常、GPG鍵をインポートするオプションですが、今回は --dry-run を指定しているため、実際にはインポートはされないです
* `--import-options import-show`　インポートする鍵の情報を表示します（例: 鍵のフィンガープリントや有効期限など）

## リポジトリの追加
```
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
    | sudo tee /etc/apt/sources.list.d/nginx.list
```
`echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg]`　UbuntuがNginxの公式リポジトリを信頼できるように、署名鍵（GPGキー）の保存場所を指定します
``http://nginx.org/packages/ubuntu `lsb_release -cs` nginx"``　Nginxの公式リポジトリURLに、現在のUbuntuのバージョン（lsb_release -cs の結果）を自動で挿入し、対応するNginxパッケージを取得します
`sudo tee /etc/apt/sources.list.d/nginx.list`　/etc/apt/sources.list.d/nginx.list にリポジトリ情報を書き込みます

## Nginxのインストール
Nginxの最新のStable版がインストールされます
```
sudo apt install nginx
```

## Nginxのバージョン確認
インストールされたNginxのバージョンを確認することができます
```
nginx -v
```

## Nginx起動、確認、停止
### 起動
```
sudo systemctl start nginx
```
`http://localhost:80`にアクセスするとNginxの初期画面が表示できます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4021963/48bf6c50-c120-42c3-916c-3ad12acbfb7a.png)

### 確認
```
sudo systemctl status nginx
```
`activate`でしたら起動できています

### 停止
```
sudo systemctl stop nginx
```
このコマンドの後に`sudo systemctl status nginx`のコマンドで確認していただくと、`inactive (dead)`となっており、停止したことが確認できます

## まとめ
無事にNginxの1.26.3のバージョンをインストールすることができました。