Ubuntu22.04LTSでnginxを使ってWebDav

タイトルの通りです。
本件に関する情報は、まだそれほど多くはありません。
自分への備忘録をかねて、アップしておきたいと思います。

リポジトリを追加してソースをDLします。

Ubuntu22.04で、nginxを使ってWebDavする方法です。
aptからインストールするnginxには、WebDAVの機能が一部含まれていません。
したがって、ソースファイルからコンパイルする必要があります。

まずは、作業用のディレクトリをつくりましょう。
今回は、webikerというホームディレクトリに作成することで説明を進めます。

# cd /home/webiker
# mkdir nginx
# chown -R webiker:webiker nginx
# cd nginx

次に、ソースファイルを落とすためのリポジトリを追加します。

# vi /etc/apt/sources.list

まずは、deb-srcのコメントをすべて外します。
また、ファイルの末尾に以下を追記します。

deb [signed-by=/etc/apt/keyrings/nginx.gpg] http://nginx.org/packages/ubuntu/ jammy nginx
deb-src [signed-by=/etc/apt/keyrings/nginx.gpg] http://nginx.org/packages/ubuntu/ jammy nginx

ポイントは、右から2番目のjammyですね。
これを指定することで、22.04用のファイルがダウンロードされてきます。
もし、Ubuntuのバージョンが違うときは、ここを参考に書き換えてください。

次に、nginxのサイトからパッケージの公開鍵をダウンロードします。

# wget https://nginx.org/keys/nginx_signing.key

ダウンロードした公開鍵を、apt-keyで追加します。
このとき、suユーザーで実施するとrootディレクトリにキーが作成されてしまいます。
したがって、この操作は一般ユーザーで実施します。

# exit(一般ユーザーに戻る)
$ cd nginx
$ gpg --no-default-keyring --keyring temp-keyring.gpg --import nginx_signing.key
$ gpg --no-default-keyring --keyring temp-keyring.gpg --export --output nginx.gpg
$ sudo su

最後に作成したKeyを、keyringsディレクトリにコピーします。

# cd nginx
# cp -p nginx.gpg /etc/apt/keyrings/

これで、ソースファイルのダウンロード準備が整いました。

ソースファイル、その他必要なファイルをダウンロードします。

まず、パッケージを作るためのアプリをインストールします。

# apt update
# apt install dpkg-dev

次に、ソースファイルをダウンロードします。

# cd /home/webiker/nginx
# apt source nginx

ソースの次は依存ファイルです。
依存ファイルは、ソースルートディレクトリのdebian/controlのBuild-dependsに書かれています。

# apt install debhelper dpkg-dev quilt lsb-release libssl-dev libpcre2-dev zlib1g-dev build-essential

ビルドするためのライブラリをインストールします。

# apt install libxml2-dev libxslt-dev

最後に、WebDAV拡張モジュールをダウンロードします。

# git clone https://github.com/arut/nginx-dav-ext-module.git

これで、ダウンロード関係は終わりです。

nginxをコンパイルしてインストールします。

拡張モジュールを組み込むように、ruleファイルを変更します。
(*.*.*の部分は、ダウンロードしたバージョンに合わせて変更してください。)

# vi /home/webiker/nginx/nginx-*.*.*/debian/rules

ファイルの39~41行目付近、44~46行目付近に、config.statusの項目があります。
config.statusの項目は、nginxとnginx_debugの2か所あります。
それぞれの最後に、–add-module=/home/webiker/nginx/nginx-dav-ext-moduleを追記します。

config.status.nginx: config.env.nginx
        cd $(BUILDDIR_nginx) && \
        CFLAGS="" ./configure --prefix=/etc/nginx ... --add-module=/home/webiker/nginx/nginx-dav-ext-module
        touch $@

config.status.nginx_debug: config.env.nginx_debug
        cd $(BUILDDIR_nginx_debug) && \
        CFLAGS="" ./configure --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx ... --add-module=/home/webiker/nginx/nginx-dav-ext-module
        touch $@

ここまでくれば、あとはコンパイルしてパッケージをビルドするだけですね。
この作業は、ダウンロードしたソースファイルディレクトリで行います。

# cd /home/webiker/nginx/nginx-*.*.*
# dpkg-buildpackage -uc -b

ビルドされたファイルは、ソースディレクトリのひとつ上に作成されます。
通常用とデバッグ用のものが作成されますので、通常用のファイルからインストールします。

# dpkg -i /home/webiker/nginx/nginx_*.*.*_*~jammy_amd64.deb

これでインストールが完了です。
念のために、バージョンを確認します。

# nginx -V

おめでとうございます。
これで、WebDavが使えるnginxがインストールできました。