【AWS】EC2でWebサーバの構築 – Nginx構築 -【Nginx】

2019.12.11

 

どうも、むつたくです。
師走になりました。年末の大掃除を軽くすべく、やれるところから掃除をしてます。
そんな中、上の娘が窓ガラスにマーキングをしてました。ヨダレで…。
綺麗にしても汚されるので、磨く→汚す→磨くの無限ループでいつの間にか一緒に遊び、妻に怒られる…、小さな子供と大きな子供です。掃除が進まないのが悩みです。

 

 

さて、今回も前回からの引き続きでAWSのEC2インスタンスにNginxをインストールして、Webサーバを構築する記事を書いていきます。
前回までの記事は↓こちら↓。
パート1 → 【AWS】EC2でWebサーバの構築 – VPC作成 -【Nginx】
パート2 → 【AWS】EC2でWebサーバの構築 – EC2インスタンス構築 -【Nginx】

 

今回の構築手順はこんな感じでしょう。

  1. Nginxのインストール
  2. アクセス確認
  3. Nginxの設定

 

EC2インスタンスだからと言って、特別なことはしません。普段通りに構築していく感じになります。
では、やっていきましょう。

環境

・OS: Ubuntu18.04 LTS Server
・Nginx: 1.16.1

 

 

Nginxのインストール

Nginxって何通りかのインストール方法があるんですよね。ここでは、公式ドキュメント通りにインストールしていきます。
公式ドキュメントは こちら を参照してください。
また、PGPキーを既に登録済の方は、読み飛ばして問題ありません。

1. Ubuntuの登録済PGPキーの確認

まずは[ apt ]をアップデートしちゃいましょう。

 

1
$ sudo apt update

 

次は、aptがパッケージを使用するために認証を行うキーを確認します。[ apt-key ]については こちら へ。

 

1
$ sudo apt-key list

 

1
2
3
4
5
/etc/apt/trusted.gpg.d/ubuntu-keyring-2012-archive.gpg
------------------------------------------------------
pub   rsa4096 2012-05-11 [SC]
      790B C727 7767 219C 42C8  6F93 3B4F E6AC C0B2 1F32
uid           [ unknown] Ubuntu Archive Automatic Signing Key (2012) <ftpmaster@ubuntu.com>

 

当然ですが、Nginxのリポジトリを登録していないので、リストにPGPキーはありません。
なので、PGPキーをダウンロードします。

 

2. PGPキーのダウンロード&インポート

公式HPからアドレスを頂戴します。ページは こちら です。
Ubuntuにはリポジトリを登録する予定なので、一番下のリンクをコピーします。
EC2インスタンスに戻って、以下のコマンドの感じになると思います。そしたら実行してください。

 

1
$ wget http://nginx.org/keys/nginx_signing.key

 

1
2
3
4
5
6
7
8
9
10
--2019-12-10 08:25:50--  http://nginx.org/keys/nginx_signing.key
Resolving nginx.org (nginx.org)... 62.210.92.35, 95.211.80.227, 2001:1af8:4060:a004:21::e3
Connecting to nginx.org (nginx.org)|62.210.92.35|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1561 (1.5K) [text/plain]
Saving to: ‘nginx_signing.key’

nginx_signing.key       100%[=============================>]   1.52K  --.-KB/s    in 0s

2019-12-10 08:25:51 (162 MB/s) - ‘nginx_signing.key’ saved [1561/1561]

 

上記のような感じで100%やOKと表示されたらPGPキーのダウンロードは完了です。
そうしましたら、今度はインポートします。

 

1
$ sudo apt-key add nginx_signing.key

 

OKと表示されたらインポート完了です。再度PGPキーリストを確認します。

 

1
$ sudo apt-key list

 

1
2
3
4
5
6
7
8
9
10
11
/etc/apt/trusted.gpg
--------------------
pub   rsa2048 2011-08-19 [SC] [expires: 2024-06-14]
      573B FD6B 3D8F BC64 1079  A6AB ABF5 BD82 7BD9 BF62
uid           [ unknown] nginx signing key <signing-key@nginx.com>

/etc/apt/trusted.gpg.d/ubuntu-keyring-2012-archive.gpg
------------------------------------------------------
pub   rsa4096 2012-05-11 [SC]
      790B C727 7767 219C 42C8  6F93 3B4F E6AC C0B2 1F32
uid           [ unknown] Ubuntu Archive Automatic Signing Key (2012) <ftpmaster@ubuntu.com>

 

情報が増えていると思います。これでUbuntuへのPGPキーのインポートは完了です。
ただ、Nginxをインストールするには、もうワンステップ必要です。

 

3. 公式リポジトリURLを追記

利用可能なパッケージとして、aptの一覧に追記してあげる必要があります。これをしないとリストにNginxがありませんので、インストールが出来ません。
対応は簡単で、[ /etc/apt/sources.list ]ファイルの最後に2行追加するだけです。

 

1
2
3
4
5
6
7
8
$ sudo sh -c "echo 'deb http://nginx.org/packages/ubuntu/ bionic nginx' >> /etc/apt/sources.list"
$ sudo sh -c "echo 'deb-src http://nginx.org/packages/ubuntu/ bionic nginx' >> /etc/apt/sources.list"

# もしくは vimコマンドで編集(カーソルは最終行に移動させる)
$ sudo vim /etc/apt/sources.list

deb http://nginx.org/packages/ubuntu/ bionic nginx
deb-src http://nginx.org/packages/ubuntu/ bionic nginx

 

これでNginxの公式リポジトリURLの追加が完了しました。やっとインストール可能な状態になりました。

 

4. Nginxインストール

aptの設定を変更したので、再度アップデートしておきましょう。

 

1
$ sudo apt update

 

一応、[ apt show ]でNginxのバージョンを確認しましょう。

 

1
$ apt show nginx

 

1
2
3
4
5
ackage: nginx
Version: 1.16.1-1~bionic
Priority: optional
Section: httpd
Maintainer: Sergey Budnevitch <sb@nginx.com>

 

現時点での最新です、問題なさそうですね。ついでに、[ apt-cache policy nginx ]でも確認するのも良いと思います。
早速インストールしましょう。

 

1
$ sudo apt install nginx -y

 

インストールが成功していたら、[ nginx ]コマンドが使用できるようになっています。
確認で、バージョンを表示してみましょう。

1
2
3
$ nginx -v

nginx version: nginx/1.16.1

 

バージョンの確認が出来ました!無事インストール成功です。
ついでに起動もしておきましょう。

1
$ sudo systemctl start nginx

 

これでOKです。
万一、失敗している場合は、エラーログが吐き出されていると思いますので、そちらを確認&消化していってください。

 

アクセス確認

前々回の記事でセキュリティグループのインバウンドルールにHTTPを追加(許可)していると思います。もし、抜けている場合は、ポートが閉じられており、通信できないので追加をしてください。
ブラウザから[ http://000.000.000.000/ ]でアクセスしてみます。000.000.000.000の部分はEC2インスタンスのパブリックIPです。
下記が表示されましたらEC2へのアクセスは問題なく行えており、Nginxも機能してます🎉。

Nginxの設定

次はNginxの設定を確認します。
アクセス出来ていたから問題ないのかもしれませんが、デフォルトの設定ですとドキュメントルートが[ /var/www ]ではないので、変更します。
設定ファイルの場所は、[ /etc/nginx/nginx.conf ]、[ /etc/nginx/conf.d/default.conf ]です。
default.conf は nginx.conf にインクルードされていると思いますので、基本変更するのは default.conf になります。

 

1
2
sudo cp /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.org
sudo vim /etc/nginx/conf.d/default.conf

 

とりあえず、ルートドキュメントを変更します。

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
server {
    listen       80;
    server_name  localhost;

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        #root   /usr/share/nginx/html; # この行をコメントアウトします
        root   /var/www;               # この行を追加します。
        index  index.html index.htm;
    }

    #error_page  404              /404.html;
....
}

 

保存したら、Nginxを再起動します。( 行末のセミコロンは忘れずに。エラーになりますので。 )

 

1
2
sudo systemctl restart nginx
systemctl status nginx

 

あとは、[ /var/www ]に、[ index.html ]を作成し、再度ブラウザでパブリックIPを叩いてあげれば、ドキュメントルート変更先のindex.htmlが表示されます。これで完了です。
この工程は、ドキュメントルートが[ /usr/share/nginx/html ]で問題ない方は不要です。

 

ちなみに、上記の設定ファイルの書き方の場合、[ http://000.000.000.000/ ]でアクセスした際のドキュメントルートが[ /var/www ]になるだけですので、共通のドキュメントルートにしたい場合は、[ server ]ディレクティブ直下に記載すると良いでしょう。

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
server {
    listen       80;
    server_name  localhost;

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;

    root /var/www;  # 適当にこの辺りに追加。

    location / {
        index  index.html index.htm;
    }

    #error_page  404              /404.html;
....
}

 

まとめ

NginxのインストールはPGPキーさえしっかり管理していれば、問題なく構築出来ます。設定関連の情報もあちこちに落ちてますので、参考になるものもたくさんあります。EC2だとしても簡単に出来ますので、ぜひ利用していきましょう。

 

それでは、またの機会に!


Top