Raspbian Buster に最新版 Nginx をインストール(2019/10)

過去に Raspbian Stretch 環境へのインストール記事を投稿していますが、現状に相違点がないかの確認を含めて、インストール手順を再投稿します。

Raspbian のデフォルトパッケージリポジトリを使用して Nginx をインストールすると、Nginx 版数が古いものになってしまいます。
internet へ接続し、web 公開時のセキュリティを考慮すると、最新版を使うことが望ましいと考えます。
2019/10/22時点の Nginx の最新版(mainline)は、1.17.5 になっています。
しかし、Raspberry Pi のプラットフォーム(armhf)用のバイナリパッケージは、残念ながら公式サイトでも配布されていないので、ソースパッケージからビルドして Deb パッケージを作成し、導入する手順を記載します。

1. 事前確認

Nginx の公式サイトで、最新版(mainline)の版数を確認します。

次に、Raspbian Buster のデフォルトパッケージリポジトリを使用して、インストールできる Nginx の版数を確認します。
※ 版数の確認結果が、同じであれば apt install nginx するのみでOKです。

# apt update
# apt list nginx
一覧表示... 完了
nginx/stable 1.14.2-2+deb10u1 all   版数が古い
#

2. Debian パッケージ構築の必須ツールのインストール

ソースパッケージをビルドするために必要になるツールパッケージ ” build-essential ” をインストールします。
参考まで ” Raspbian Buster ” の、2019-09-26 版では ” build-essential ” は導入済みでしたが、他の環境での作業時の参考として手順化しておきます。

# apt install build-essential
#

3. Nginx 前提条件パッケージのインストール

Nginx 公式サイトのパッケージインストール手順に、前提条件パッケージの記載があるため、インストールします。 参考まで ” Raspbian Buster ” の、2019-09-26 版で未導入だったのは ” gnupg2 ” のみでした。

# apt install curl gnupg2 ca-certificates lsb-release
#

4. 公式サイトのリポジトリ情報追加

Nginx 公式サイトの PGP 公開鍵を登録します。

# wget -O - http://nginx.org/keys/nginx_signing.key | apt-key add -
#

Nginx ソースパッケージのリポジトリ情報を追加し、パッケージ・リストの更新を行います。

# echo "deb-src http://nginx.org/packages/mainline/debian `lsb_release -cs` nginx" >> /etc/apt/sources.list.d/nginx.list
# apt update
#

5. 依存パッケージのインストール

Nginx ソースパッケージをビルドする際に、必要となる依存パッケージをインストールします。

# apt-get build-dep nginx
#

6. ソースパッケージをダウンロード

Nginx ソースパッケージのダウンロード+ビルド作業用のディレクトリを作成し、そこに移動します。
下記の手順では、版数 1.17.5 の例としています。

# mkdir /usr/local/src/nginx
# mkdir /usr/local/src/nginx/1.17.5
# chmod 777 /usr/local/src/nginx/1.17.5
# cd /usr/local/src/nginx/1.17.5
#

Nginx ソースパッケージをダウンロードします。

# apt source nginx
#

ビルド作業を実施するため、ダウンロードしたソースパッケージのディレクトリへ移動します。

# cd nginx-1.17.5
#

7. 追加モジュールの設定

※追加モジュールが必要ない場合は、次の項に進んで下さい。

ここでは、Nginx を ipv6 に対応するため、ソースパッケージのビルド時に、モジュール追加される様に、debian/rules ファイルを編集します。
まず、編集前に内容を確認します。

# 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. ソースパッケージのビルド

ソースパッケージのディレクトリで、ビルドのコマンドを実行します。

# dpkg-buildpackage -uc -b
#

ビルドが終了すると、親ディレクトリにDebパッケージファイルが作成されます。

# cd ..
# ls
nginx-1.17.5                         nginx_1.17.5-1~buster_armhf.buildinfo
nginx-dbg_1.17.5-1~buster_armhf.deb  nginx_1.17.5-1~buster_armhf.changes
nginx_1.17.5-1~buster.debian.tar.xz  nginx_1.17.5-1~buster_armhf.deb
nginx_1.17.5-1~buster.dsc            nginx_1.17.5.orig.tar.gz
#

9. Debパッケージファイルのインストール

ここまでの手順で作成された、Nginx Debパッケージファイルをインストールします。

# apt install ./nginx_1.17.5-1~buster_armhf.deb
#

10. バージョン確認と起動設定

インストールされた、Nginx のバージョン、モジュールは下記コマンドにて確認出来ます。

# nginx -V
#

Nginx 起動状態の確認します。
(下記コマンドを実行し、「 Active: active (running) 」の表示があれば起動状態OKです。)

# systemctl status nginx
#

Nginx が起動していない場合は、下記コマンドで起動します。

# systemctl start nginx
#

Nginx の自動起動設定状態の確認します。
(下記コマンドを実行し、「 enabled 」が表示されればOKです。)

# systemctl is-enabled nginx
#

Nginx が自動起動設定になっていない場合は、下記コマンドで設定します。

# systemctl enable nginx
#

11. 動作確認

ブラウザから、Nginxをインストールした Raspberry Pi の ip アドレス指定でアクセスし、下記の初期画面の表示を確認できれば動作確認完了です。