ubuntu18.04にnginxをインストールしてみた。

みなさんがすでにやっていることですが、僕もubuntuにnginxをインストールしてみました。手順がネット上にたくさん公開されているのでそれを参考にして特に問題なくできました。ソースからコンパイルする方法ではなく、パッケージをインストールする方法です。一応、書いておきます。作業はすべてrootユーザーで行いました。

nginxのパッケージをインストールするにあたり、そのパッケージが改ざんされていないか確認する手順(正当性の確認の手順)があるので、先にPGP鍵をインストールしておきます。

PGP鍵の取得
# wget https://nginx.org/keys/nginx_signing.key

PGP鍵のインストール
# apt-key add nginx_signing.key

問題なくインストールできれば「OK」と表示されます。PGP鍵がインストールできたか確認してみます。

PGP鍵の確認
# apt-key list

いくつか鍵が表示されるのですが「/etc/apt/trusted.gpg」のところに以下のようなnginxの鍵が表示されていれば大丈夫です(「不明」って言葉があるのだけど、あまり意味がわかってはない)。有効期限も設定されているのですね。。

次に、パッケージの取得元をリポジトリに登録します。/etc/apt 配下にある sources.list ファイルを編集します。一応、sources.listはバックアップを取っておきましょう。

sources.listファイルのバックアップ
# cd /etc/apt
# cp -p sources.list sources.list.bkup

sources.listファイルには以下の2行を末尾に追加します。

# vi sources.list
===== 末尾に追加する行 =====
deb http://nginx.org/packages/ubuntu/ bionic nginx
deb-src http://nginx.org/packages/ubuntu/ bionic nginx
=========================

ubuntu/ と bionic の間は半角スペースを入れます。またbionicはubuntu18.04のコードネームで、ubuntuの他のバージョンの場合はここを変える必要があります。ubuntuのコードネームは以下のようなので自分の環境に応じて書き換えてください。

16.04 xenial
16.10 yakkety
17.04 zesty
17.10 artful
18.04 bionic
18.10 cosmic
19.04 disco
19.10 eoan
20.04 focal

sources.listを編集して保存したら、リポジトリを更新して最新化します。

リポジトリのアップデート
# apt update

ここでインストールされるnginxのバージョンを確認してみます。

インストールされるパッケージの確認
# apt show nginx

2019年12月29日現在では1.16.1のバージョンがインストールされるみたいです。ちなみに「N: 追加レコードが 6 件あります。表示するには ‘-a’ スイッチを付けてください。」とメッセージが出ているので以下のコマンドを打ってみました。すると、他のバージョンもあるよ、みたいなものが表示されました。

インストールされるパッケージの確認(詳細)
# apt -a show nginx

※表示される内容は省略します。。

では、nginxをインストールしてみようと思います。準備はもう整っているので以下のコマンドを打つだけです。

nginxのインストール
# apt install nginx

インストール処理が進むごとにメッセージが表示されます。ログを取得しているのでここに貼り付けても良ったのですが、省略しました。インストールが終わったらバージョンを確認してみます。

nginxのバージョンの確認
# nginx -v

「nginx version: nginx/1.16.1」と表示されました。インストールはこれで完了です。nginxをインストールした直後だとnginxが立ち上がっていないので起動させます。

nginxの起動
# systemctl start nginx

nginxの起動の確認
# systemctl is-active nginx

「active」と表示されれば起動できています。
ちなみにですが、インストール直後はnginxは起動していないのですが自動起動は「enabled」になっています。OSがを再起動したときなどnginxが自動起動するかどうかは以下で確認できます。

nginxの自動起動の確認
# systemctl list-unit-files | grep nginx

自動起動させるかどうかは以下で設定してください。

nginxを自動起動する
# systemctl enable nginx

nginxを自動起動させない
# systemctl disable nginx

nginxにアクセスして画面が表示されるか確認してみます。ブラウザを立ち上げて以下のURLを打ち込みます。

http://localhost/

nginxが問題なく動いていれば「Welcome to nginx!」の画面が表示されます。

最後に、nginxの公式サイトのダウンロードのURLを載せておきます。

ダウンロードのURL
https://nginx.org/en/download.html

2019年12月29日現在では以下です。

ここを見ると「Mainline version」と「Stable version」というのがあるのですが、上記の方法でパッケージをインストールするとStable versionがインストールされるみたいです。Mainline versionとStable versionの違いですが、nginxの新機能やバグ修正はまずMainline versionに反映されて、後にStable versionに反映されるようです。Mainline versionは新機能がどんどん追加されていくためAPIの互換性がたまに崩れることがあるとのこと。Stable versionは原則深刻なバグや脆弱性の修正に限っていてAPIの互換性は保たれるらしい(Stable versionはAPIの互換性を重視している)。こう書くとStable versionのほうが良さそうに思えるのだけれども、Mainline versionのほうが推奨されているようです。個人的にはStable versionで良いかな、と思っています。

Linuxのfreeコマンドの見方

Linuxにメモリの空き容量を確認する「free」というコマンドがあるのですが、その見方について書いておきます。CentOS6での表示を理解していたら、CentOS7およびubuntu18.04では表示のされ方が違いました。

まずCentOS6でfreeコマンドをしたときの表示は以下です。単位はバイトで表示されています。

このサーバーはメモリが1ギガなので「Mem:」行のtotalを見ると、1019792バイトとなっています。

この1ギガバイトの内訳は以下です。
used(837576) + free(182216) = total(1019792)

空きメモリ(free)が182216バイトしかないように見えますが実際に使用できる空きメモリは「-/+ buffers/cache:」行にある855772バイトになります。

この実際に使用できる空きメモリの内訳ですが以下です。
free(182216) + buffers(152184) + cached(521372) = 「-/+ buffers/cache:」のfree(855772)

buffersとcachedってなんだ?ってことですが、buffersもcachedもディスクIOを低減するためのいわゆるバッファとキャッシュです。buffersがブロックデバイス用、cachedが通常ファイルのようです。名前の通りbuffersがバッファでcachedがキャッシュかと思っていたら違うみたいです。ブロックデバイス用のバッファ/キャッシュがbuffersで、通常ファイルのバッファ/キャッシュがcachedみたいです。いずれにせよbuffersとcachedに使われている領域はメモリが足りなくなったらOSが解放して使用できる領域なので、ここに割り当てられている分はfreeとみなして良いことになります。

ちなみにfreeコマンドに「-m」オプションをつけるとメガバイト単位での表示になります。どちらかというとこちらのほうが見やすいです。

上の2つの結果は同じ状態のものなのですが、このサーバーの実際に使える空きメモリは835メガバイトということになります。

なお「Swap:」行にも値がありスワップが発生しているのか?と思うのですが、メモリ全体に対してわずかな値なら気にしなくて良いようです。OSがよっぽど使わない分をディスクに追いやってるっぽいです。

[広告]

次に、CentOS7およびubuntu18.04でfreeコマンドを実行したときの表示です。

「-/+ buffers/cache:」行がなくなって「Mem:」行だけの表示になりました。このサーバーもメモリは1ギガなので「Mem:」行のtotalを見ると、1014180バイトとなっています。

この1ギガバイトの内訳は以下です。
used(143772) + free(127524) + buff/cache(742884) = total(1014180)

CentOS6のときの考え方からすると、free(127524) + buff/cache(742884) = 870408バイトが空きメモリとして使える容量になるのですが、そうではないみたいです。新しいfreeコマンドにはavailableという列があり、こちらの値を空きメモリ量として見るようです。この場合では689392バイトになります。どういうことかと言うと、バッファとキャッシュは解放して良いメモリではあるものの即時で解放すると困る分もあり(まさに今、使っているものがあるということだろう)、それを考慮して本当に使えるメモリ量をavailableに表示しているようです。正直、availableの算出方法はよくわかりませんでしたが・・。

ただそうやって考えると、CentOS6のときのfreeコマンドで表示された「-/+ buffers/cache:」のfreeの値については、この値より少し少なめに見積もった値が本当のメモリの空き容量なのかな?とも思いました。まぁ、だいたいの量が分かれば良いのだけれど。

今後、availableについてもう少し理解できたら追記します。