2013年6月21日金曜日

apacheでWebDAV(その3)

いよいよapache + WebDAVの設定に入ります。

まずはデフォルトで用意されているWebDAの設定を使ってみる。

1.httpd.confの修正

 httpd.confにてWebDAV用モジュールと設定ファイル、あとそのWebDAV設定ファイルに記載
 されている、必要モジュールの有効化をする(コメントを外す)。

>>
LoadModule dav_module modules/mod_dav.so

LoadModule dav_fs_module modules/mod_dav_fs.so



LoadModule auth_digest_module modules/mod_auth_digest.so

Include conf/extra/httpd-dav.conf
<<

2.WebDAVのデフォルト設定ファイル(httpd-dav.conf)の確認

httpd-dav.confを見ると、
 ・対象フォルダをDocumentRoot外のフォルダ(/usr/local/apache2/uploads)をAliasで
  /uploadsと見せかけている
 ・Digest認証が設定されている。プロバイダはファイル。
 ・以下の条件をいずれかを満たせばアクセスOK。
  -メソッドがGET POST OPTIONSであること
  -userはadminであること
となっていますね。この設定のまま使ってみよう。

3.ディレクトリの作成

httpd-dav.confにあったディレクトリを作成する。まずはDavLockDB用のディレクトリ。

# mkdir /usr/local/apache2/var

# chown apache:apache /usr/local/apache2/var

次はWebDAV用のディレクトリ。

# mkdir /usr/local/apache2/uploads

# chown apache:apache /usr/local/apache2/uploads

4.Digest認証のアカウントの作成

# /usr/local/apache2/bin/htdigest -c "/usr/local/apache2/user.passwd" DAV-upload admin

でパスワードを求められるので設定。

これで完了いうことで、ブラウザからつついてみる。あれ??403が返ってくる。
認証の問題なのか?と思い、digest認証部分をすべて外してみるが、やはり変わらない。
ということで調査開始。

5.apacheのログをデバックモードに変更

httpd.confに記載されている個所を変更

>>
#LogLevel warn
LogLevel debug
<<

apacheを再起動。

# service httpd graceful

これで再度ブラウザから試してみると、ログ(/usr/local/apache2/logs/error_log)に以下の
エラーメッセージが出ていました。

Cannot serve directory /usr/local/apache2/uploads/: No matching DirectoryIndex (index.html) found, and server-generated directory index forbidden by Options directive

ディレクトリ参照が禁止されてとのことらしい。DocumentRootには

Options Indexes FollowSymLinks

がついているし、なぜディレクトリ参照が禁止されているのだろう。。。あっ!今回使ったapacheの
サンプルは、aliasを使ってDocumentRoot配下以外のディレクトリを参照させる設定になってまし
たね。ということは、そこにもOptionsを記載をしないと、そもそも参照ができないってことですね。

サンプルのhttpd-dav.confを使っているので、そこに追記し、再起動してみる。

>>
<Directory "/usr/local/apache2_2/uploads">
    Dav On

    AuthType Digest
    AuthName DAV-upload
    # You can use the htdigest program to create the password database:
    #   htdigest -c "/usr/local/apache2/user.passwd" DAV-upload admin
    AuthUserFile "/usr/local/apache2/user.passwd"
    AuthDigestProvider file

    # Allow universal read-access, but writes are restricted
    # to the admin user.
    <RequireAny>
        Require method GET POST OPTIONS
        Require user admin
    </RequireAny>
    Options Indexes FollowSymLinks ★
</Directory>
<<

再起動後にブラウザでアクセスすると、、無事アクセスができました。
そこで改めて、Windows8からWebDAVとしてアクセスをしてみると、認証後(admin)無事アクセスが
できました。

ちなみに、、上記の★が本当に必要なのか?今一度はずしてみると、ブラウザはアクセスはできませんが、WebDAVは参照できました!
ということで、デフォルトの設定でWebDAVをアクセスすることができました。

めでたしめでたし。

0 件のコメント:

コメントを投稿