Apache2のWebDAV機能を使う
Apache2はWebDAVサーバとして使えます。 WebDAV(Web Distributed Authoring and Versioning)とは、HTTP(HyperText Transfer Protocol)を拡張したプロトコルで、 それは言うなればサーバ→クライアントの一方向だったHTTPに、クライアント→サーバのアップロード機能を追加し、 Web上で共有ファイルシステムを構築することを可能にしたものです。
FTP、NFS、SMB/CIFSなどの類似技術と比較したWebDAVの特徴としては、次の事柄が挙げられます。

  • インターネット接続できる場所ならどこからでもアクセス可能
  • Windows、LinuxなどOSを問わず広く利用が可能
  • ファイルのバージョン管理が可能
  • HTTP/HTTPSのポートを使うので、ファイアウォールやルーターに追加の設定が不要


サーバ側の設定
では基本的な設定ということで、httpd.confを編集します。ServerNameとListenは少なくとも設定しないといけません。 ここでは、Apache httpdのソース配布からコンパイル、インストールしたデフォルトの設定での例をご紹介します。 従って、httpd.confのパスは /usr/local/apache2/conf/httpd.conf になっています。
設定が必要なのは以下。全てコメントになっているのを解除して有効にします。

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

※ mod_auth_digest は、後述の httpd-dav.conf 内の AuthDigestProvider の設定に必要になります。
次に、上で参照されている /usr/local/apache2/conf/extra/httpd-dav.conf を編集します。以下は抜粋した部分です。

DavLockDB "/usr/local/apache2/var/DavLock"
Alias /uploads "/usr/local/apache2/uploads"
    AuthUserFile "/usr/local/apache2/user.passwd"
        Require user admin

公開するWebDAV領域の名前が標準ではuploadsとなっていますが、 エンドユーザーからのアップロード用途とは限らない場合は適当な名前に変更しましょう。 ここではdavspaceと改名します。
また、デフォルトでアクセス可能なローカルユーザーの指定が「user admin」となっています。 これは「admin」というユーザーのみアクセス可能という意味です。
複数のユーザーに許可する場合は「valid-user」などが通常かもしれません。
次にこれらの場所やファイルは事前には一つもないので、自分で作ります。 その際にhttpd.confのUserとGroupを確認して、ディレクトリはhttpdの実行ユーザーで読み書きが可能になるようにしておきます。 例えばデフォルトのhttpdでは、

User  daemon
Group daemon

となっているので、2つのディレクトリはdaemon:daemonで読み書きが可能な必要があります。

cd /usr/local/apache2
sudo mkdir var davspace
sudo chown daemon:daemon var davspace
sudo htdigest -c /usr/local/apache2/user.passwd DAV-upload admin
(パスワードを入力します)

※htdigestの-cは新規作成の意味(追加なら不要)、 引数はRealmとユーザー名でhttpd-dav.confの記述と一致している必要があります。

SELinuxが有効な場合はさらに下記も必要です。

sudo chcon -R -t httpd_sys_rw_content_t /usr/local/apache2/davspace
sudo semanage fcontext -a -t httpd_sys_rw_content_t /usr/local/apache2/davspace

これでようやく設定完了です。文法チェックをして「Syntax OK」と出るのを確認してhttpdを再起動します。

/usr/local/apache2/bin/httpd -t
sudo /usr/local/apache2/bin/apachectl restart

サーバー側からWebDAV領域にファイルを書くことも、もちろんできます。
実際の運用ではdaemon以外の業務アプリケーションのOSユーザーがファイルを読み書きするのだと思いますが、 ここではdaemonにsuできるユーザーがファイルを直接生成しています。

cd /usr/local/apache2/davspace
sudo -u daemon /bin/sh -c "echo 'Hello! WebDAV world.' > hello.txt"


Windows11クライアント側の設定
Windows11のエクスプローラーをクライアントとして使う場合、追加のソフトは何もいりません。 httpdが稼働するサーバ側の文字コード(LANG)がUTF-8ならば、普通に操作すれば日本語のファイル名にも対応しています。
エクスプローラーから「...」⇒ネットワークの場所の追加でウィザードが起動するので、 場所を 「http://{サーバ名}:{ポート}/davspace」と入力し、次に上で設定したユーザー名(admin)とそのパスワードを入力すると、 ファイルのコピーや参照などのアクセスができるようになります。

Open Source Web Architecture Top

(first uploaded 2004/09/12 last updated 2025/01/26, URANO398)