LoginSignup
8
3

More than 3 years have passed since last update.

WebDAVをnginxだけで作る備忘録

Posted at

はじめに

この記事はdebian系列(Ubuntu系列)をベースに解説しています。

WebDAVのメソッドはnginxの標準debパッケージにも搭載されていますが、一部機能のメソッド(PROPFIND,OPTIONS)がなく、一部アプリではうまく動作しなかったりするのでそのメソッドを追加するための記事を書いてます。

※nginx公式のリポジトリを追加していることが前提です。

記事に書いてある*にはバージョンが入ります。

ビルド

デフォルトのモジュールには搭載されていないため、モジュールを追加してnginxをビルドをする必要があります。

ソースコードを入手

aptコマンドでnginxのソースコードを取り寄せます。
ディレクトリは特に問いませんが、/usr/src/あたりに置いておくといいでしょう。

# apt source nginx

取り寄せが終わるとカレントディレクトリにソースコード(nginx-*.*.*)が置かれます。

ビルド依存パッケージのインストール

ソースルートディレクトリのdebian/controlっていうファイルのBuild-dependsに依存パッケージが書かれているのでそれを頼りにインストールします。
なお、今回インストールしたバージョン(1.16.1)の依存パッケージは以下のとおりです。

# apt install debhelper dh-systemd dpkg-dev quilt lsb-release libssl-dev libpcre3-dev zlib1g-dev

build-essentialも入れておくと無難です。

WebDAV拡張モジュールの取り込み

ソースルートディレクトリで以下のコマンドを実行します。

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

そのあと、debパッケージにするために少しだけ内容を変更します。

debian/rules
# 省略
# 39~41行目付近
config.status.nginx: config.env.nginx
        cd $(BUILDDIR_nginx) && \
        # 最後の方に" --add-module=/path/to/nginx-*.*.*/nginx-dav-ext-module "を追加。
        # ディレクトリは適宜変更。
        CFLAGS="" ./configure --prefix=/etc/nginx ... --add-module=/path/to/nginx-*.*.*/nginx-dav-ext-module
        touch $@

# 44~46行目付近
config.status.nginx_debug: config.env.nginx_debug
        cd $(BUILDDIR_nginx_debug) && \
        # 上と同様のものを追加。
        CFLAGS="" ./configure --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx ... --add-module=/path/to/nginx-*.*.*/nginx-dav-ext-module
        touch $@
# (省略)

ビルドタイム

これを実行してあとは待つだけです。

# dpkg-buildpackage -uc -b

無事に終わるとdebパッケージがソースルートディレクトリの1つ上にできます。

インストールして確認

あとはできたものをdpkgでインストールするだけです。

# dpkg -i nginx_*.*.*_*.deb

インストールが終わったら以下のコマンドを実行して確認します。

$ nginx -V

configure arguments--with-http_dav_module--add-module=/path/to/nginx-*.*.*/nginx-dav-ext-moduleが入っていれば完了です。

設定する

大まかな設定は割愛します。任意で変更してください。

location / {
  # 必要であれば設定
  # auth_basic "Authorize dialog message";
  # auth_basic_user_file /path/to/.htpasswd;

  # 標準搭載のメソッドと追加モジュール分のメソッドの設定
  dav_methods PUT DELETE MKCOL COPY MOVE;
  dav_ext_methods PROPFIND OPTIONS;

  # ファイル一覧を表示する設定
  autoindex on;
  autoindex_exact_size off;
  autoindex_localtime on;

  # 読み書きの権限設定
  dav_access user:rw group:rw all:r;

  # 一時ファイル・ディレクトリ作成の許可
  client_body_temp_path /var/www/.webdavtmp;
  create_full_put_path on;
}

nginx再起動して、おしまい。

参考文献

8
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
3