一つ一つ解説しながらUbuntuにnginxをインストールする


`apt install nginx`だとちょっと前のバージョンがインストールされてしまうので、[nginx公式](https://nginx.org/en/linux_packages.html#Ubuntu)をみて最新安定版をインストールしたときのメモ。お勉強を兼ねてそれぞれのコマンドの意味を確認しながらやってみた。

## バージョン情報

- Ubuntu(22.04.4 LTS)
- nginx(1.24.0)

## nginx をインストールする前に、必要な各パッケージをまとめてインストール

```リモート
sudo apt install curl gnupg2 ca-certificates lsb-release ubuntu-keyring
```

* `sudo` - rootじゃないユーザーがroot権限で実行するコマンド
* `apt isntall <PACKAGE NAME>` - Ubuntuにパッケージをインストールするコマンド
* `curl` - HTTPリクエストを送信するためのパッケージ
* `gnupg2` - 暗号化や署名に使用するパッケージ
* `ca-certificates` - SSL/TLS通信に使用するパッケージ
* `lsb-release` - linuxカーネルとその他諸々をまとめたパッケージ
* `ubuntu-keyring` - ubuntuで使用するいろんな鍵をまとめるパッケージ

## 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の署名鍵が置いてあるURLに接続してダウンロードして、
* `gpg --dearmor` 
    * ダウンロードしたファイルをバイナリに変換し、
* `sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg ` 
    * 変換したファイルを ...nginx-archive-keyring.gpg に出力
* `>/dev/null` 
    * teeコマンド実行時の出力結果は不要なので捨てている

## 取得した署名鍵を確認

```リモート
gpg --dry-run --quiet --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpg

# 取得した署名鍵が表示される
pub   rsa2048 2011-08-19 [SC] [有効期限: 2024-06-14]
      573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62
uid                      nginx signing key <signing-key@nginx.com>
```

`573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62`が表示されたら OK

* `gpg`
    * オープンソースのツールの公開鍵（GPGキー）の検証をするときに使用するコマンド
* `--dry-run`
    * コマンドを実行したフリをする(実際にファイルの書き換え)は行わない
* `--quiet`
    * 必要最低限のログを出力する
* `--import --import-options import-show`
    * 前工程で出力した署名鍵ファイルをインポートして出力する

## nginx の最新の安定版をインストールするためにリポジトリを追加

```リモート
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]` 
    * 前項でインポートしたnginxの署名鍵を使用して、
* ```http://nginx.org/packages/ubuntu `lsb_release -cs` nginx"``` 
    * nginx公式サイトから最新の安定版パッケージを取得し、
* sudo tee /etc/apt/sources.list.d/nginx.list
    * `...nginx.list`に出力している

## nginx のインストール

```リモート
sudo apt update
sudo apt install nginx
```

パッケージ情報を更新して（sudo apt update）インストール（sudo apt install nginx）

## nginx 起動

```リモート
sudo systemctl start nginx
```

nginx の起動状態を確認。`active(running)`だったら OK

```リモート
sudo systemctl status nginx

# nginxのステータスが表示される
# ここから
● nginx.service - nginx - high performance web server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset:>
     Active: active (running) since Mon 2024-04-22 11:30:08 JST; 38s ago
       Docs: https://nginx.org/en/docs/
    Process: 45923 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exi>
   Main PID: 45924 (nginx)
      Tasks: 3 (limit: 1031)
     Memory: 2.6M
        CPU: 10ms
     CGroup: /system.slice/nginx.service
             tq45924 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx>
             tq45925 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" ">
             mq45926 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" ">

 4月 22 11:30:08 ik1-406-35042 systemd[1]: Starting nginx - high performance we>
 4月 22 11:30:08 ik1-406-35042 systemd[1]: nginx.service: Can't open PID file />
 4月 22 11:30:08 ik1-406-35042 systemd[1]: Started nginx - high performance web>
lines 1-17/17 (END)
# ここまで
```

nginx のバージョン確認

```リモート
nginx -v
nginx version: nginx/1.24.0
```
1.24.0がインストールされた🙌