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[実践]運用/管理』