EC2にnginxをインストールしてみる

# はじめに

業務でEC2にnginxをインストールする機会があったので、注意点を踏まえて動作確認までやっていきます。

**※2022年6月9日時点の内容です。**

---

# nginxについて

「nginx」とは、フリーのWebソフトウェアで、Apacheのシェアを抜いて、現在では最も使用されているWebサーバである。

---


# 作業について

今回は作業に当たり以下を使用
・Amazon Linux2（事前に作成済み）
・AWS CloudShell（お好みのSSHクライアントでOK）

---

# 手順

## ① CloudShellを起動

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2411418/20565fec-cc3b-3166-a152-b41fb6eb7b4c.png)

## ② EC2へ接続
SSHクライアントでインスタンスにSSH接続を実施する。
``` 
$ ssh -i xxxx.pem ec2-user@対象EC2のIPアドレス（or DNS）
``` 
※うまく接続できない場合はセキュリティグループの設定等を再確認してください。

## ③ 利用可能なソフトウェアパッケージ (トピック) を確認
amazon-linux-extrasリポジトリから、利用可能なトピックを確認する。

参考：https://aws.amazon.com/jp/premiumsupport/knowledge-center/ec2-install-extras-library-software/

```
$ 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 ]
  5  postgresql9.6            available    \
        [ =9.6.6  =9.6.8  =stable ]

・・・・略
 38  nginx1                   available    [ =stable ]

・・・・略
```
<br>

**※注意**
amazon-linux-extrasパッケージがインストールされていない場合、yumコマンドを使用してインストールする。
```
$ sudo yum install -y amazon-linux-extras
```

## ④ nginxのインストール
以下の通り、nginxのインストールを実施する。
※nginxの後に1を付け忘れてしまうとイントールがうまくいかないので注意!!
```
$ sudo amazon-linux-extras install nginx1
```


## ⑤ nginxがインストールされたか確認 
Version確認でインストールされたnginxを確認。
以下のようにVersionが表示されていればインストールはOK!
```
$ nginx -v
nginx version: nginx/1.20.0
```
ただし、この時点でnginxは起動していないので注意！（念のためステータス確認… inactive (dead)！やはり起動していませんね）
```
$ 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: inactive (dead)
```

## ⑥ 初期設定ファイルをバックアップ
初期設定ファイルのバックアップを取るため、まずはnginx.confファイルの格納場所を確認。
```
$ sudo find / -name *nginx.conf
/etc/nginx/nginx.conf　←メイン設定ファイル
/etc/nginx/nginx.conf.default ←デフォルトサーバの設定ファイル
/var/lib/pcp/pmdas/nginx/nginx.conf
```

上記の「/etc/nginx/nginx.conf」を念のため、バックアップを取っておきましょう。（方法は省略）

## ⑦ nginx起動と確認
nginxの起動を実施
```
$ sudo systemctl start nginx
```

そしてステータス確認・・・active (running)!!
```
$ 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 Fri 2022-06-10
・・・略
```

## ⑧ 動作確認してみよう！

**１．ブラウザでの確認**
適当なブラウザでEC2接続時に使用したIPアドレス（or DNS）に接続
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2411418/8c8ad508-c5f6-e5c3-ced6-4e76b9f4f32f.png)
上記な画面が出たら動作確認OK！

**２．HTTPレスポンスヘッダーの取得**
```
$ curl -I localhost
HTTP/1.1 200 OK
Server: nginx/1.20.0
Date: Fri, 10 Jun 2022 02:44:33 GMT
Content-Type: text/html
・・・略
```
上記でもきちんとServerがnginxなってますね！


# おまけ
以下の通り、サーバ起動時にnginxプロセスも立ち上がるようになっていません。
```
$ ystemctl list-unit-files | grep nginx
nginx.service                                 disabled
```

そこでサーバ起動時にNginxプロセスも立ち上がるように以下実施していきましょう！
```
$ sudo systemctl enable nginx.service
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
```

そして確認・・・
```
systemctl list-unit-files | grep nginx
nginx.service                                 enabled
``` 

無事に「enabled」になりましたね！これでサーバ起動時にnginxプロセスも立ち上がるようになってます！


# さいごに
最後まで閲覧いただき、ありがとうございました！
Apacheを使用している環境もまだまだ多いと思いますが、nginxについての知識は覚えておくべきものかと思います！
設定等、細かい内容については今後の記事で触れていく予定ですので気長にお待ちください！