Ubuntu12.04環境のApache2.2にWebDAVのインストール
- WebDAV(Web-based Distributed Authoring and Versioning)とは
- WebDAV の特徴
- 必要なモジュールの確認をする
- インストールをする前に、組み込まれていないだけでインストールされていないかを確認する
- dav モジュールと dav_fs モジュールの有効化
- apache 再起動
- モジュールが組み込まれているか確認
- WebDAV で共有するディレクトリを用意する
- httpd デーモン権限で書き込みができるように、権限の変更をする
- apache 実行ユーザとグループの作成
- apache の実行ユーザとグループの設定
- 【再】httpd デーモン権限で書き込みができるように、権限の変更をする
- ロックファイルの作成
- apache2.conf の設定
- apache2.conf ファイルの文法チェック
- apache 再起動
- ブラウザで確認
- ファイルのダウンロード・アップロードができるか確認
- 前回設定したダイジェスト認証でのユーザとパスワードを入力する
- アップロードができるよう、ディレクトリの権限を変更する
- Apache のエラーログを見てみる
- ロックファイルの権限を変更する
- apache 再起動
Digest 認証に続いて、WebDAV のインストールと設定を行った。設定までのメモ。
WebDAV(Web-based Distributed Authoring and Versioning)とは
WebDAV は HTTP1.1の拡張プロトコルで、Web サーバ上のコンテンツを管理できるよう、リモートファイルのアップデートや削除といった操作が行える。WebDAV に対応した Web サーバなら、コンテンツのアップロードや更新に、FTP や SCP のような従来のプロトコルを使うことなく実行できる。 Apache は Web サーバとしての HTTP のサポートに加え、分散ファイルシステムのための WebDAV もサポートしている。
WebDAV の特徴
- 必要とする TCP/IP ポートなどのネットワーク構成がシンプルであること
- SSL を使ったセキュリティの向上が容易であること
- 特定の OS やサーバの実装に依存しないこと
- 様々な認証プロバイダ(LDAP や RDBMS)を利用できること
必要なモジュールの確認をする
(1) mod_dav.so (2) mod_dav_fs.so
$sudo apache2ctl -M | grep dav
→ 両方とも見つからない
インストールをする前に、組み込まれていないだけでインストールされていないかを確認する
$ll /usr/lib/apache2/modules | grep dav
mod_dav.so
mod_dav_fs.so
mod_dav_lock.so
→ 両方見つかった
dav モジュールと dav_fs モジュールの有効化
$ sudo a2enmod dav
Enabling module dav.
To activate the new configuration, you need to run:
service apache2 restart
$ sudo a2enmod dav_fs
Considering dependency dav for dav_fs:
Module dav already enabled
Enabling module dav_fs.
To activate the new configuration, you need to run:
service apache2 restart
→ まとめて有効化してもよかったかな?
apache 再起動
$ sudo service apache2 restart
* Restarting web server apache2 ...
モジュールが組み込まれているか確認
$ sudo apache2ctl -M | grep dav
dav_module (shared)
dav_fs_module (shared)
Syntax OK
→ OK
WebDAV で共有するディレクトリを用意する
「/var/www/webdav/」を利用することにする。
sudo mkdir /var/www/webdav/
httpd デーモン権限で書き込みができるように、権限の変更をする
→ …の前に apache 実行ユーザの設定をしていなかったので、先に行う
apache 実行ユーザとグループの作成
sudo groupadd apache
sudo useradd -g apche apache
apache の実行ユーザとグループの設定
$sudo -H vim /ets/apache2/apache2.conf
※ UserディレクティブとGroupディレクティブを以下のように書き換える
# These need to be set in /etc/apache2/envvars
#User ${APACHE_RUN_USER}
#Group ${APACHE_RUN_GROUP}
User apache
Group apache
【再】httpd デーモン権限で書き込みができるように、権限の変更をする
$ sudo chown apache.apache /var/www/webdav/
$ ll /var/www/webdav/
合計 8
drwxr-xr-x 2 apache apache 4096 9月 16 11:05 ./
drwxr-xr-x 3 root root 4096 9月 16 11:05 ../
ロックファイルの作成
WebDAV の排他制御のために利用する。具体的には、あるユーザがファイルを操作している間に別のユーザがファイルを更新できないようにする、などのためである。 → これは、バイナリからインストールした場合には作らなくて良い(?)らしいのでとりあえずパス
apache2.conf の設定
$sudo -H vim /etc/apache2/apache2.conf
※ 以## 下の内容を追記する
# WebDAVの設定
LoadModule dav_module /usr/lib/apache2/modules/mod_dav.so
LoadModule dav_fs_module /usr/lib/apache2/modules/mod_dav_fs.so
# ロックファイル
<IfModule mod_dav_fs.c>
DAVLockDB ${APACHE_LOCK_DIR}/DAVLock
</IfModule>
Alias /webdav "/var/www/webdav"
<Location /webdav>
DAV on
AuthType Basic
AuthName "WebDAV Server"
AuthUserFile "/etc/apache2/htpasswd"
Require valid-user
</Location>
apache2.conf ファイルの文法チェック
$ sudo apachectl -t
[Mon Sep 16 11:51:09 2013] [warn] module dav_module is already loaded, skipping
[Mon Sep 16 11:51:09 2013] [warn] module dav_fs_module is already loaded, skipping
Syntax OK
→ モジュールは呼び出さなくて良いみたいだったのでこの箇所をコメントアウト
$ sudo apachectl -t
Syntax OK
→ OK、警告が消えた
apache 再起動
$ sudo service apache2 restart
* Restarting web server apache2 ...
ブラウザで確認
→ ロックファイルあたりがちゃんと聞いてるかどうかは不安だが、できたよう
ファイルのダウンロード・アップロードができるか確認
Finder > 移動 > サーバへ接続
サーバアドレス欄に「http://192.168.56.101/webdav/」と入力

前回設定したダイジェスト認証でのユーザとパスワードを入力する

ドラッグアンドドロップでダウンロードできた。 アップロードは…権限不足のためかできない。エラーが発生する。
アップロードができるよう、ディレクトリの権限を変更する
$sudo chmod 777 /var/www/webdav
→ 公開ディレクトリの権限変えてもダメ。さきほどと同じエラーが発生する
Apache のエラーログを見てみる
$ cat /var/log/apache2/error.log
[Mon Sep 16 12:34:07 2013] [error] [client 192.168.56.1] Could not open the lock database. [500, #400]
[Mon Sep 16 12:34:07 2013] [error] [client 192.168.56.1] (13)Permission denied: Could not open property database. [500, #1]
[Mon Sep 16 12:34:11 2013] [error] [client 192.168.56.1] The locks could not be queried for verification against a possible "If:" header. [500,
→ 上述のエラーが吐かれまくっている。やっぱりロックファイルまわりが怪しいようだ。
ロックファイルの権限を変更する
Permission denied と書かれているのでおそらく権限まわりのエラーだと予測
sudo touch /var/lock/apache2/DAVLock
sudo chown apache.apache /var/lock/apache2/DAVLock
apache 再起動
$ sudo service apache2 restart
* Restarting web server apache2 ...
→ アップロードできたー。とりあえずここまで。
※ 参考
- 『サーバ構築の実際がわかる Apache[実践]運用/管理』