Hatena::ブログ(Diary)

MERの日記 このページをアンテナに追加 RSSフィード

2011-02-11

WebDav を使えるようにする

WebDavはHTTPを拡張して、サーバ上のファイル管理をHTTPで済ませられるようにしたものです。

課題

  • WebDavサーバはApache2 + mod_dav モジュール on CentOS5.5で構築
  • http://development.example.com/dav/ 以下を WebDav で管理できるようにする
  • 日本語のファイル名はWebDavでは扱わない (ASCIIのみ)
  • 認証はDigest認証を使うけど、このエントリーではHTTP認証の設定方法等は扱わない
  • WebDavクライアントに関して今回は MacOSXFinder のみを対象とする (それ以外は確認してない)

最終的に、Finder からファイルをアップロードし、 http://development.example.com/dav/hoge.html 等にWEBブラウザアクセス出来ればOK。

設定

apache の設定ファイルを編集して mod_dav と mod_dav_fs モジュールを有効にします。

コメントアウトされていたり、インストールされていない場合は、コメントを外したり、インストールしたり(標準モジュールなので、まず入ってると思いますが)、 /usr/sbin/httpd -l (パスはいろいろでしょうが)で静的にリンクしていないか確認するなどしてください。

# httpd.conf
LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so 

次に、WebDavで管理するディレクトリと、操作の競合を防ぐためのロック状態を管理するファイルが作成されるディレクトリの2つを作ります。

# http://development.example.com/dav でアクセスできるパスに作りました
mkdir /var/httpd/development.example.com/public/dav
# オーナーをwebサーバ実行ユーザー(ここではapache)にする
sudo chown apache:apache /var/httpd/development.example.com/public/dav

mkdir /var/dav
sudo chown apache:apache /var/dav

WebDavの設定をApacheの設定ファイルに書きます。

http://d.hatena.ne.jp/MER/20110126/1296053652 の記事の設定を下書きにして、同じホストでWebDavが使えるようにしています。

# グローバルエリアにロックファイルのパスを書く
# lockは管理用にapacheによって実際に作成されるファイルのベース名
# /var/dav/lock.ext といった感じで拡張子の違う複数のファイルが作成されます
DavLockDB /var/dav/lock

<VirtualHost *:80>
  ServerName development.example.com
  ServerAdmin info@development.example.com
  DocumentRoot /var/httpd/development.example.com/public
  ErrorLog /var/httpd/development.example.com/logs/error_log
  CustomLog /var/httpd/development.example.com/logs/access_log combined

  #/以下に認証をかける
  <Location />
    Order allow,deny
    Allow from all

    AuthType Digest
    AuthName "private web"
    AuthDigestDomain /
    AuthUserFile /var/httpd/.htdigest
    Require valid-user
  </Location>

  <Location /dav>
    # DavディレクティブでWebDavを有効にしている
    Dav On

    # davでは認証を解除する (LimitExceptが効いているかを確認するためで、しないといけないわけではない)
    Satisfy any
    Order allow,deny                                                                                                                                         
    Allow from all

    # GET HEAD OPTIONS メソッド以外は認証を有効にする (WebDavによるファイル操作は認証をパスする必要がある)
    <LimitExcept GET HEAD OPTIONS>
      require valid-user
    </LimitExcept>
  </Location>                                                                                                                                             
</VirtualHost>

MacOSX の Finder から確認

Finder の移動メニューから、「サーバへ接続…」と進み、サーバアドレスに http://development.example.com/dav と自分の環境に合わせて入力。

接続ボタンでマウントされるので、あとはファイルシステムと同様の操作で扱えます。

適当なところにファイルを起きましょう。今回は、マウントしたディレクトリに hoge.jpg というファイルを置いたことにします。

最後に

確認します。WEBブラウザから、 http://development.example.com/dav/hoge.jpg にアクセスし、画像が表示されたらOKです。

テキストファイルを作成し、変更したら反映されているか、等確認するのも良いと思います。

自分の環境構築時のメモのため、認証周りが無駄に複雑なエントリーになってしまいましたが、WebDav自体にも色々設定変更箇所があるので、マニュアルにも目を通してみてください。

http://httpd.apache.org/docs/2.0/ja/mod/mod_dav.html