webdavを設定してみた

メモ。

apache22, subversionをインストールする。
subversionはpkgでなくportsからインストールして、オプション選択のところでmod_dav_svnを選ばないとダメ。

/usr/local/etc/apache22/httpd.confに以下の行があるか確認。
subversionをインストールするときに勝手に加えてくれるはず。

LoadModule dav_module         libexec/apache22/mod_dav.so
LoadModule dav_svn_module     libexec/apache22/mod_dav_svn.so
LoadModule authz_svn_module   libexec/apache22/mod_authz_svn.so

同じくhttpd.confで、httpd-dav.confを指定している行のコメントアウトを外す。

# Distributed authoring and versioning (WebDAV)
#Include etc/apache22/extra/httpd-dav.conf
Include etc/apache22/extra/httpd-dav.conf


以降、/usr/local/etc/apache22/extra/httpd-dav.conf を参照したり編集したりする。

# The User/Group specified in httpd.conf needs to have write permissions
# on the directory where the DavLockDB is placed and on any directory where
# "Dav On" is specified.

DavLockDB "/usr/local/var/DavLock"

まずロックファイルを置くディレクトリの指定があるので、作る。
パーミッションの設定も忘れないこと。
以下、実行例。

$ sudo mkdir /usr/local/var/DavLock
$ sudo chown www:www ./DavLock/
$ sudo chmod 750 ./DavLock/
$ ls -la
total 8
drwxr-xr-x   4 root  wheel  512 12 27 22:08 .
drwxr-xr-x  16 root  wheel  512 12 26 21:49 ..
drwxr-x---   2 www   www    512 12 27 22:08 DavLock


次に実際のDavの場所、Davアクセスするためのパスワードファイルの場所指定。デフォルトが気に入らなければ変える。
変えたらディレクトリは作っておくこと。
以下、httpd-dav.confの変更例。

#Alias /uploads "/usr/local/uploads"
Alias /uploads "/usr/local/www/uploads"
#<Directory "/usr/local/uploads">
<Directory "/usr/local/www/uploads">

    # You can use the htdigest program to create the password database:
    #   htdigest -c "/usr/local/user.passwd" DAV-upload admin
    #AuthUserFile "/usr/local/user.passwd"
    AuthUserFile "/usr/local/www/dav.passwd"

パスワードファイルの作成。
ユーザがharukiya、realmがDAV-uploadの場合の例。初めてパスワードファイルを作るときは-cをつける。
htdigestが使えるよ、と書いてあるので使ってみる。
以下、実行例。

$sudo htdigest -c "/usr/local/www/dav.passwd" DAV-upload harukiya
Adding password for harukiya in realm DAV-upload.
New password: 
Re-type new password: 

デフォルトだと、誰でもwebdavディレクトリを見られて、書き込みはadminだけOK、ただしパスワード要という設定。
とりあえず下記ではadminを上記でパスワードを設定したharukiyaに変更している。

    # Allow universal read-access, but writes are restricted
    # to the admin user.
    <LimitExcept GET OPTIONS>
        #require user admin
        require user harukiya
    </LimitExcept>

あとは/etc/rc.confにapache22_enable="YES"という一行を加え、/usr/local/etc/rc.d/apache22 startとやればOK。