WEBサービス創造記

WEBサービスを作ったり保守したりしてる人のメモブログです。

WebDAVの導入で外部からファイルやフォルダを編集できるように設定する

      2012/12/09

WebDAVとは?

WebDAVとは、通常ドキュメントを閲覧する機能しかもたないWebサーバーの機能を拡張し、ファイルやフォルダをクライアント(Webブラウザ)から管理できるようにした仕様のことです。

WebDAVは、Webで用いられるプロトコルであるHTTPを拡張したものです。
従って、ポートもHTTPで用いられる80番(HTTPSの場合は443番)を利用するので、ファイアウォールで新規にポートを開放する必要がありません。

WebDAVの基本的な設定

WebDAVモジュールの有効化

Apacheの設定ファイルを開き、WebDAVモジュールが組み込まれているかを確認します。
Apache2.0系ではWebDAVを標準でサポートしているため、デフォルトでWebDAVモジュールが有効となっています。

# vi /etc/httpd/conf/httpd.conf
- 以下の2行が存在するか確認(行頭に#がある場合は#を削除すること) -
LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so

ロックファイルディレクトリの確認

WebDAVでロックを行うためのロックファイルを作成するディレクトリがどこに指定されているかを確認します。

Apache2.2の設定ファイルでは以下のようなになっていました。

# vi /etc/httpd/conf/httpd.conf
- DAVLockDBディレクティブを確認 -
#
# WebDAV module configuration section.
#

    # Location of the WebDAV lock database.
    DAVLockDB /var/lib/dav/lockdb

___EOD___;
echo htmlspecialchars($codeBlock);
?>

最近のApacheではデフォルトでこの記述があるようですが、もし見当たらなかった場合は上記を設定ファイル内に追記しておきます。

WebDAV用Apache設定ファイル作成

ここでは/var/www/webdav/をWebDAVでの共有ディレクトリとして利用し、ベーシック認証は/var/www/.htpasswd/の内容をもとすることにして、WebDAV用のApache設定ファイルを生成します。

# vi /etc/httpd/conf.d/webdav.conf
Alias /webdav/ "/var/www/webdav/"


    AuthName "This directory requires user authentification."
    AuthType Basic
    AuthUserFile "/var/www/.htpasswd"
    Require valid-user
    Order deny,allow
    Deny from all
    Allow from all



        Dav on

___EOD___;
echo htmlspecialchars($codeBlock);
?>

ディレクトリの設定

WebDAVで使用するディレクトリの設定を行います。

WebDAVを用いて公開しているディレクトリ内のフォルダやファイルを編集する際は、Apacheの実行ユーザーとしてアクセスしなければならないため、ディレクトリの所有者をApacheの実行ユーザーのものに変更します。

なお、Apacheの実行ユーザーはApacheの設定ファイルで確認できます。

# vi /etc/httpd/conf/httpd.conf
- Apacheの実行ユーザーを確認 -
User apache
Group apache
- WebDAVで使用するディレクトリを新規作成 -
# mkdir -m 700 /var/www/webdav
# chown apache.apache /var/www/webdav

続いて、ファイルロック用のディレクトリの設定を行います。

# mkdir -m 700 /var/lock/dav
# chown apache.apache /var/lock/dav

ベーシック認証の設定

このままでは誰でもアクセスできてしまうので、ベーシック認証による制限をかけます。

# htpasswd -c /var/www/.htpasswd username
New password:
Re-type new password:
Adding password for user username

また、ここでは行いませんでしたが、機密度の高いファイルを置く場合はSSLなどで暗号化することが望ましいです。

ここまで設定が完了したら、Apacheを再起動させてWebDAVクライアントの設定を行えばOKです。

# /etc/init.d/httpd restart

WebDAVクライアントの設定

ここまでやったところでWebDAVのクライント設定を行いますが、WebDAVの最大のメリットはクライアントの設定次第で共有しているファイルを直接開いて編集したり上書き保存したりできることです。
専用のソフトウェアを別途インストールすることなく、Windows なら Explorer、Mac なら Finder でファイル、フォルダを管理できます。

WindowsのWebDAV接続

ここではWindowsXPでの例を解説します。

1.「マイネットワーク」の「ネットワーク プレースの追加」をダブルクリック
ネットワーク プレース追加のウィザードが立ち上がったら「次へ」をクリック

2.そのまま「次へ」をクリック

3.「インターネットまたはネットワークのアドレス」へ共有するディレクトリをURL指定して記述
ここで注意!アドレスの末尾に?をつけないと接続できない場合があります。?なしでも接続できる場合もあるのですが、原因がわかりません。
接続できない場合はアドレスの末尾に?をつけてやってみましょう。
記述したら「次へ」をクリック
Basic認証による制限をかけている場合は、ID・パスワードの入力も行います。

4.上記で設定したディレクトリのWindows上での名前を入力
わかりやすい名前を付け、「次へ」をクリック

5.「完了」をクリック

エクスプローラーで設定したディレクトリに書き込みができるかチェックする(右クリック → 新規作成 でファイルやフォルダを作成してみる)

WindowsのWebDAV実装に関してはWEB上でも何かと批判も多いようなので、Windowsの場合はCarotDAVというフリーのWebDAVクライアントソフトを利用するのもおすすめです。
WebDAVクライアントソフト CarotDAV

MacでのWebDAV接続

OSXのFinderはデフォルトでWebDAVをサポートしているようです。

Finderの”移動”メニューから”サーバへ接続…”を選択。WebDAVフォルダのアドレスを入力し、BASIC認証を設定している場合はアカウントを入力します。

これだけでWebDAVフォルダをマウントできます。

 - WEBサーバ構築 , , ,