カテゴリー
FreeBSD

WebDAV with Apache2.4 on FreeBSD

この前から遊んでいるJail祭り。今度は「自宅にWebDAVを作りたい」と思った。
というのも、iPadで使っている読書ソフトの「i文庫HD」は、種々のクラウドストレージに対応しているのだが、メインで使っている「SkyDrive」は、毎秒1MByteしか速度が出ないので、自炊した本1冊を取ってくるのに1分とかかかってしまう。そこで、WebDAVを使って取ってくれば、少なくとも自宅内ではもっと速くなるのではないだろうか、と思ったわけだ。
WebDAV自体は前にも作ったことがあるが、Apacheの一機能として動くので、どうしても設定が他のApacheの設定とごっちゃになってしまうのが気に入らなかった。今回はJail環境なので、贅沢にも「WebDAVのための仮想マシン」を切り出すことにする。

www/apache24をインストール……する前に、まず devel/apr1 をインストールして欲しい。なぜかというと、ここであるHackをしなければならない。WebDAVの認証をダイジェスト認証で行うのだが、どうやら「Jail環境下では、デフォルトのコードではダイジェスト認証がうまく動かない」のである。詳しくはこちらを参照されたい。
Apache 2.4 in a jail with Digest auth
ということで、/usr/local/include/apr-1/apr.h にある「#define APR_HAS_SHARED_MEMORY 1」を0にすること。この作業を行ってから、www/apache24をインストールして欲しい。

(2014/11/24追記: 現在では上の書き換えは必要なくなった模様。したがってaprもapacheもpkgからインストールして良い)

さて設定だ。まずは/usr/local/etc/apache24/httpd.confにある以下の行のコメントアウトを削除して有効にすること。

LoadModule dav_module libexec/apache24/mod_dav.so
LoadModule dav_fs_module libexec/apache24/mod_dav_fs.so
Include etc/apache24/extra/httpd-dav.conf

次に/usr/local/etc/apache24/extra/http-dav.confの途中部分(「# “Dav On” is specified.」と「# The following directives」の間)を以下のように書き換える。

<VirtualHost *:80>
ServerName ibunko.vegalta.org
DocumentRoot "/var/www/html/dav"
DavLockDB /var/spool/lock/dav/Lock
  <Directory "/var/www/html/dav">
    Dav On
    AuthType Digest
    AuthName Vegalta.org-WebDAV
    AuthUserFile "/usr/local/etc/apache24/.htdigest"
    Require user ibunko
  </Directory>
</VirtualHost>

次にロックの設定。

# mkdir /var/spool/lock/dav
# chown www:www /var/spool/lock/dav

ディレクトリ名に注意。DavLockDBに指定するのは「ファイル名のプレフィックス」なので、/var/spool/lock/dav/ に Lock*** というファイルが作成可能なようにする必要がある。

最後ににパスワードの設定。

# cd /usr/local/etc/apache24
# htdigest -c .htdigest 'Vegalta.org-WebDAV' ibunko
(パスワードを入力)
# chown www:www .htdigest
# chmod 640 .htdigest

htdigestにある’Vegalta.org-WebDAV’は、AuthNameで指定した文字列と同じであること。

これで設定は終わり。apacheを起動し、Windowsやi文庫HDでアクセスに成功すれば完了だ。

Share this...