【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 ]をアップデートしちゃいましょう。

 

[cc_bash]
$ sudo apt update
[/cc_bash]

 

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

 

[cc_bash]
$ sudo apt-key list
[/cc_bash]

 

[cc_bash]
/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)

[/cc_bash]

 

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

 

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

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

 

[cc_bash]
$ wget http://nginx.org/keys/nginx_signing.key
[/cc_bash]

 

[cc_bash]
–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]

[/cc_bash]

 

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

 

[cc_bash]
$ sudo apt-key add nginx_signing.key
[/cc_bash]

 

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

 

[cc_bash]
$ sudo apt-key list
[/cc_bash]

 

[cc_bash]
/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

/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)

[/cc_bash]

 

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

 

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

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

 

[cc_bash]
$ 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
[/cc_bash]

 

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

 

4. Nginxインストール

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

 

[cc_bash]
$ sudo apt update
[/cc_bash]

 

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

 

[cc_bash]
$ apt show nginx
[/cc_bash]

 

[cc_bash]
ackage: nginx
Version: 1.16.1-1~bionic
Priority: optional
Section: httpd
Maintainer: Sergey Budnevitch [/cc_bash]

 

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

 

[cc_bash]
$ sudo apt install nginx -y
[/cc_bash]

 

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

[cc_bash]
$ nginx -v

nginx version: nginx/1.16.1
[/cc_bash]

 

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

[cc_bash]
$ sudo systemctl start nginx
[/cc_bash]

 

これで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 になります。

 

[cc_bash]
sudo cp /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.org
sudo vim /etc/nginx/conf.d/default.conf
[/cc_bash]

 

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

 

[cc_bash]
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;
….
}
[/cc_bash]

 

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

 

[cc_bash]
sudo systemctl restart nginx
systemctl status nginx
[/cc_bash]

 

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

 

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

 

[cc_bash]
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;
….
}
[/cc_bash]

 

まとめ

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

 

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


Top