« こばと。 | Main | 自前でビルドしたApacheに対するモジュールのビルド »

2010.09.23

ApacheのWebDAVでの容量制限

ApacheでWebDAVサーバを簡単に構築することができます。が、問題点は、容量制限を行うことができないこと。パーティションを分けることができるのであれば、データを格納するディレクトリを別パーティションにすることで、結果として容量制限を行うことができますが、VPSタイプのレンタルサーバーなどではそもそもパーティションを自由に設定できないことも。

で、調べてみると、WebDAV( apache 2.0.45-2.0.63,2.2.0-2.2.16 )のディスク容量制限パッチというのを見かけました。このパッチを当てたApacheを利用すると、DAVSATMaxAreaSize を設定するで容量制限を行うことが可能となります。

ただ、ソースコードに対するパッチ&コンパイルが必要となるので、CentOSなどでパッケージで提供されているApacheは使用できません(自分で環境を構築する必要があります)。実は今までApacheは常にパッケージで提供されているものを使っていましたので、Apacheをソースコードからインストールするのは初めて(^^;

【パッチコマンドをインストール】
ServersMan@VPSのシンプルセットの場合、patchがインストールされていないので、patchをインストール。

# yum -y install patch

【Apacheのソースコード取得】
Apacheのサイトからダウンロード。今回は、2.2系で現時点での最新版である2.2.16を使用することにしました。

# cd /usr/local/src/
# wget http://ftp.riken.jp/net/apache//httpd/httpd-2.2.16.tar.gz
# tar zxvf httpd-2.2.16.tar.gz
# cd httpd-2.2.16

【パッチの適用】

# wget http://leche.goodcrew.ne.jp/webdav/webdav-2.2.16-quota-2.4.txt
# patch -p2 < webdav-2.2.16-quota-2.4.txt

【コンパイル&インストール】
基本的にDSOモードでインストール。mpmはpreforkのままとします(--with-mpm=worker などは指定しない)。その他、基本的な内容は、極力パッケージインストールしたhttpdと同様になるようにしています(100%一致させているわけではありませんが)。SSLやLDAP、Proxyなども使用するので、いろんなものをenabledで組み込んでいます。

# ./configure --enable-so --enable-mods-shared=all --enable-ssl=shared --enable-suexec=shared --enable-proxy=shared --enable-cache=shared --enable-disk-cache=shared --enable-file-cache=shared --enable-mem-cache=shared --enable-authnz-ldap=shared --enable-ldap=shared
# make
# make install
# make clean
# chown -R apache /usr/local/apache2/
# chgrp -R apache /usr/local/apache2/

【/etc/init.d/httpd の編集】
apachectlおよびhttpdの行を書き換えます。

apachectl=/usr/local/apache2/bin/apachectl
httpd=${HTTPD-/usr/local/apache2/bin/httpd}

その他いくつかの設定を行い、Apacheを起動。ログファイルなどで、2.2.3(CentOS5のパッケージに含まれているバージョン)ではなく、2.2.16が起動していることを確認します。

【容量制限の動作確認】
WebDAVの設定を行っているところに DAVSATMaxAreaSize ディレクティブを指定し、容量を指定。その後、WebDAVクライアントからファイルをアップロードし、容量制限が機能しているかどうかを確認。
コピーした結果、容量制限を超えてしまった場合、「エラーが発生しました」となり、コピーがキャンセルされます。なお、コピー完了時に容量チェックが行われるため、大きなファイルをコピーして、ぎりぎり容量制限を超えてしまったような場合、かなり待たされることになってしまいます。
コピーする前に容量を超えるかどうかをチェックできれば理想的だとは思うのですが、「どの程度のサイズが送られてきているか」がわかるとは限らないため、仕方がないところなんでしょうね。

【補足】
ついでに、Apacheを実行するユーザーをdaemonからapacheに変更。必要に応じて、Apacheが参照するフォルダに対して chown -R apache:apache を実行します。
(参考)
ServersMan@VPS Apache設定
ServersMan@VPSのセットアップ – Apacheの設定

|

« こばと。 | Main | 自前でビルドしたApacheに対するモジュールのビルド »

Linux」カテゴリの記事

Comments

Post a comment



(Not displayed with comment.)


Comments are moderated, and will not appear on this weblog until the author has approved them.



TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/3959/49507078

Listed below are links to weblogs that reference ApacheのWebDAVでの容量制限:

« こばと。 | Main | 自前でビルドしたApacheに対するモジュールのビルド »