Ubuntu や debian 標準のパッケージリポジトリで提供される Nginx は、版数が若干古めのものになってしまっています。最新版の Nginx は、公式サイト (nginx.org) のリポジトリを追加することにより、使用することが出来ます。
しかし、公式サイトで提供されるバイナリパッケージのサポートプラットフォーム(x86_64, arm64 など)に該当していない場合などは、deb 形式ソースパッケージからビルドすることが必要になるため、その手順についてまとめます。
また、Ubuntu や debian 標準のパッケージリポジトリで提供される Nginx に、使いたいモジュール (例 ipv6 など) が含まれていない場合にも、本ビルド手順が参考になると思います。
1. 事前確認
まず、Nginx のダウンロードサイトで、最新版の版数を確認します。このとき、最新版が Mainline version なのか、Stable version (安定版) なのかにより、手順が若干変わるので注意が必要です。(2022/5/29時点の最新は、Stable 1.22.0)
通常は、Mainline が最新となっていますが、Stable にブランチしたタイミングで、一時的に Stable が最新になる場合がある様子です。Mainline と Stable の考え方は、こちらのサイトで説明が参考になります。
次に、Ubuntu 標準のパッケージリポジトリを使用してインストールできる Nginx の版数を確認します。
※もし、標準のパッケージリポジトリで 最新の Nginx が導入できるのであれば、ビルド作業は必要なく、” apt install nginx ” するのみでOKになります。
$ sudo -i ← これ以降 root で作業 # # apt update ← 標準パッケージリストを更新します # apt upgrade ← インストール済パッケージを更新しておきます # apt list nginx ← 標準パッケージリストよりインストール可能な Nginx を確認 一覧表示... 完了 nginx/jammy-updates,jammy-security 1.18.0-6ubuntu14.1 armhf ← 版数が古い #
2. deb パッケージ構築の必須ツールのインストール
deb 形式ソースパッケージをビルドするために必要になるツールパッケージ ” build-essential ” をインストールします。
# apt install build-essential
#
3. Nginx 前提条件パッケージのインストール
公式サイトのパッケージインストール手順を参考に、前提条件パッケージをインストールします。 参考まで Ubuntu Server 22.04 LTS の環境で、未インストールだったのは ” gnupg2 ” のみでした。
# apt install curl gnupg2 ca-certificates lsb-release ubuntu-keyring
#
4. 公式サイトのリポジトリ情報追加
apt がパッケージの信頼性を検証できるように、公式サイトのnginx署名キーをダウンロードしてインポートします。
# curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor | tee /usr/share/keyrings/nginx-archive-keyring.gpg > /dev/null
#
ダウンロードしたファイルに適切なキーが含まれていることを確認します。
# gpg --check-trustdb ← gpg の保持している鍵データベースの確認(次のコマンド実行時に " pubring.kbx " ファイルが無い旨のエラーを防ぐためだけのアクションです) # gpg --dry-run --quiet --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpg pub rsa2048 2011-08-19 [SC] [expires: 2024-06-14] 573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62 uid nginx signing key <[email protected]> #
※ 出力したフィンガープリントに “573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62″ が完全な状態で含まれている必要があります。
Nginx 公式サイトのソーススパッケージリポジトリの参照先情報を追加します。この時、最新版が Mainline なのか、Stable なのかで手順が異なりますで、選択して作業を行います。
※違いは ” /etc/apt/sources.list.d/nginx.list ” ファイルに書き込む URL の ” mainline/ ” の記載部分のみになります。後日、Mainline と Stable を切り替える場合も、同ファイルの URL 部分を修正のみで容易に行えます。
[Mainline] の場合
# echo "deb-src [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://nginx.org/packages/mainline/ubuntu `lsb_release -cs` nginx" | tee /etc/apt/sources.list.d/nginx.list
#
[Stable] の場合
# echo "deb-src [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" | tee /etc/apt/sources.list.d/nginx.list
#
パッケージリストを更新します。この操作で、Nginx 公式サイトのソースパッケージのリポジトリ情報が取り込まれます。
# apt update
#
5. 依存パッケージのインストール
Nginx ソースパッケージをビルドする際に、必要になる依存パッケージをインストールします。
# apt build-dep nginx
#
6. ソースパッケージをダウンロード
Nginx ソースパッケージのダウンロードおよび、ビルド作業用のディレクトリを作成し、カレントディレクトリを移動します。
※作業用のディレクトリは、環境に応じて修正願います。また、パーミッション設定を緩めているのは、ビルド時やインストール時に、同ディレクトリのファイルが ” _apt ” ユーザから「アクセスできない ~ 」といった旨のエラー発生を防ぐためになります。
# mkdir /usr/local/src/nginx # chmod 777 /usr/local/src/nginx # cd /usr/local/src/nginx #
作成した作業用のディレクトリに Nginx ソースパッケージをダウンロードします。
# pwd ← カレントディレクトリの確認 /usr/local/src/nginx # apt source nginx #
ビルド作業を実施するため、ダウンロードしたソースパッケージのディレクトリへ移動します。(下記は 1.22.0 の場合)
# cd nginx-1.22.0
#
7. 追加モジュールの設定
※追加モジュールが必要ない場合は、次の項に進んで下さい。
ここでは、Nginx を ipv6 に対応するため、ソースパッケージのビルド時に、モジュール追加される様に、debian ディレクトリの rules ファイルを編集します。
まず、編集前に内容を確認します。
# pwd ← カレントディレクトリの確認 /usr/local/src/nginx/nginx-1.22.0 # cat debian/rules #
./configure の行の後部に ” –with-ipv6 ” の記述を追加します。
下記の手順では、vi 等のエディタを使用せずに、sed コマンドを用いて該当箇所を編集する手法を使用しています。
# sed -i 's/--with-ld-opt="$(LDFLAGS)"/--with-ld-opt="$(LDFLAGS)" --with-ipv6/g' debian/rules
#
編集後の内容を確認します。
# cat debian/rules
#
8. ソースパッケージのビルド
ソースパッケージのディレクトリで、ビルドのコマンドを実行します。
# pwd ← カレントディレクトリの確認 /usr/local/src/nginx/nginx-1.22.0 # dpkg-buildpackage -uc -b #
ビルドが終了すると、親ディレクトリに deb パッケージファイルが作成されます。
※以下の青文字にした部分が、ビルド後に作成された deb パッケージファイルです。
# cd .. # pwd ← カレントディレクトリの確認 /usr/local/src/nginx # ls nginx-1.22.0 nginx_1.22.0-1~jammy_armhf.buildinfo nginx-dbg_1.22.0-1~jammy_armhf.deb nginx_1.22.0-1~jammy_armhf.changes nginx_1.22.0-1~jammy.debian.tar.xz nginx_1.22.0-1~jammy_armhf.deb nginx_1.22.0-1~jammy.dsc nginx_1.22.0.orig.tar.gz #
9. deb パッケージファイルのインストール
ここまでの手順で作成された、Nginx の deb パッケージファイルをインストールします。
# pwd ← カレントディレクトリの確認 /usr/local/src/nginx # apt install ./nginx_1.22.0-1~jammy_armhf.deb #
10. バージョン確認と起動設定
インストールした、Nginx のバージョン、モジュールは下記コマンドにて確認出来ます。
# nginx -V
#
Nginx 動作状態の確認します。
(下記コマンドを実行し、” Active: active (running) ” の表示があれば起動した状態です。)
# systemctl status nginx
#
Nginx が起動していない場合は、下記コマンドで起動します。
# systemctl start nginx
#
Nginx の自動起動設定状態の確認します。
(下記コマンドを実行し、” enabled ” が表示されればOKです。)
# systemctl is-enabled nginx
#
Nginx が自動起動設定になっていない場合は、下記コマンドで自動起動する状態に設定します。
# systemctl enable nginx
#
11. 動作確認
ブラウザから、Nginxをインストールした Ubuntu Server の ip アドレス指定でアクセスし、下記の初期画面の表示を確認できれば、Nginx のインストール確認完了です。