【3/18〜】Amazon、VMwareが語る『クラウドの未来』 スラッシュドット    はてなブックマーク  Yahoo!ブックマークに登録  印刷

Apache 2.0でWebDAV
変更点と日本語リソース問題の解決

Apache 2.0の正式リリースにより、WebDAVも新たな段階に入った。拡張性が加わり可能性が広がった一方で、1.3時代のmod_encodingがうまく機能しないといった問題も浮上した。

宮本 久仁男<miyamotokn@nttdata.co.jp>
NTTデータ システム開発事業本部
基盤システム事業部 第一ソリューション技術担当
2002/6/25

待望のApache 2.0正式リリース

 いささか旧聞に属しますが、2002年4月にApache 2.0が「2.0.35」として正式リリースされました。2002年6月現在は、「2.0.39」が最新となっています。Apache 2.0になって、Apache 1.3では別リリースだったWebDAVサポートが含まれるようになりました。

 WebDAVサポートを含むApache 2.0の新機能は、大ざっぱにはApache 2.0の新機能とその実力によくまとまっています。ただし、正式リリースまでに機能追加が行われた部分や不安定になってしまった部分がいくつか見受けられます()。

注:それらの中には、安定すればWebDAVを利用するに当たって非常に有用なものも見られます。

 本稿では、

  • Apache 2.0でWebDAVを利用するには?
  • 日本語リソース名の問題とその解決

といった点について紹介しますが、「安定すれば有用なものは何か?」についても解説します。また、バージョニングの実装であるSubversionについても、回を改めて紹介する予定です。

 なお、WebDAVプロトコルそのものおよびApache 1.3での日本語リソース名の利用については、手前味噌ではありますが次世代プロトコルWebDAVの可能性で詳細に解説していますので、そちらの記事を参照してください。

mod_dav on Apache 2.0概要

 冒頭で述べたように、Apache 2.0になってWebDAVプロトコルをサポートするためのモジュールであるmod_davが同梱されるようになりました。Apache 1.3までは1モジュールでWebDAV機能を提供していたmod_davですが、Apache 2.0からは「mod_dav」と「mod_dav_fs」という2つのモジュールに分割されました。

  • mod_dav
    WebDAV機能のフロントエンドモジュール。WebDAVプロトコルを解釈し、バックエンドのモジュールに引き渡す。
  • mod_dav_fs
    WebDAV機能のバックエンドモジュール。mod_davから指示を受け、実際の動作を行う。

 mod_dav_fsはその名が示すとおり、mod_davの命令をファイルシステム上のファイル操作に置き換えて実行します。

 モジュールが2分割されたことにより、プロトコル処理部分とそれ以外のバックエンドの部分が明確に分離されました。これにより、例えばDBMSのアクセスを行うバックエンドのモジュールを作り、mod_davと組み合わせるといったことも可能になりました。

 フロントエンドモジュールとバックエンドモジュールの関係を簡単にまとめた例を図1に示します。

図1 フロントエンドモジュールとバックエンドモジュール

 図中の「mod_dav_db」というバックエンドモジュールは、「DBをアクセスするためのバックエンドモジュールの例」として出したものであり、そのようなモジュールが存在するわけではありません。もしかしたら、どこかで開発されているかもしれませんが……。

Apache 2.0へのWebDAV機能の組み込み

 同じソースツリーにmod_dav(とmod_dav_fs)が組み込まれているため、コンパイル自体は非常に簡単になりました。ここでは、Apache 2.0.39をベースに、実際のインストールについて解説します。

ソースコードの展開とconfigure

 ソースコードをhttp://www.apache.org/dist/httpd/などから入手し、適当なディレクトリに保存・展開して生成されたディレクトリに移動します。

$ gzip -dc httpd-2.0.39.tar.gz | tar xvf -
$ cd httpd-2.0.39

 次に、configureとmakeを行います。

$ ./configure --enable-shared=yes --enable-dav=yes
$ make

 単にWebDAV機能を有効にするだけでしたら、--enable-shared=yesというオプションは必要ないのですが、この後でmod_encodingやバージョニング拡張の機能を組み込むときに、DSO(Dynamic Shared Object)対応になっていないといささか面倒なので、今回はあえてこの指定をします。また、mod_davとmod_dav_fsは、--enable-dav=yesと指定することで、両方とも組み込まれます。

インストールとモジュールの確認

 makeが終わったら、rootになってインストールします。

$ su root
# make install

 ここまでで、WebDAVとDSOに対応したApache 2.0がインストールできます。configureでインストール先のディレクトリを指定しない場合は、/usr/local/apache2配下に実行ファイル、設定ファイル、開発ツール、ドキュメント類などの一式がインストールされます。

 インストールされた実行ファイル(httpd)を-lオプション付きで実行すると、組み込まれているモジュールが分かります。今回の場合、mod_so.c、mod_dav.c、mod_dav_fs.cの3つが組み込まれていれば問題ありません。以下は、筆者がコンパイルしたApache 2.0での実行結果です。

# /usr/local/apache2/bin/httpd -l
Compiled in modules:
  core.c
  mod_access.c
  mod_auth.c
  mod_include.c
  mod_log_config.c
  mod_env.c
  mod_headers.c
  mod_setenvif.c
  prefork.c
  http_core.c
  mod_mime.c
  mod_dav.c
  mod_status.c
  mod_autoindex.c
  mod_asis.c
  mod_cgi.c
  mod_dav_fs.c
  mod_negotiation.c
  mod_dir.c
  mod_imap.c
  mod_actions.c
  mod_userdir.c
  mod_alias.c
  mod_so.c

Apacheの設定と注意

 上記の例のとおりにconfigure && make && make installした場合は、/usr/local/apache2/confにhttpd.confがあると思います。

 WebDAVの使用設定については、Apache 1.3+mod_davと変わっていません。通常のHTTPサーバとしての設定に加えて、例えば、

 Alias /davtest "/home3/dav"
 <Location /davtest>
   DAV on
 </Location>
 DAVLockDB  /usr/local/apache2/var/DAVLock

と書けば、/davtestに対するDAVアクセスが可能になります。

 この例において、DAVアクセスされるディレクトリである/home3/davおよびロックファイルが作成される/usr/local/apache2/varについては、httpdが走行するユーザー権限()で書き込み可能にしておく必要があります。

注:httpd.confファイル内で、UserディレクティブとGroupディレクティブを用いて指定します。

 なお、アクセスコントロールの必要性については、WebDAV時代のセキュリティ対策でその危険性と対処方法について解説していますので、ここでは割愛させていただきます。

 単にWebDAV機能を使うだけであれば、ここまでの設定でほとんど問題ありません。ただし、ServerNameディレクティブの設定を行っていないと、IPアドレスを使ったWebフォルダの指定で不具合が出ることがあります。このような場合は、ServerNameディレクティブに、

 ServerName:192.168.1.2:80

のような形で「自身のIPアドレス:ポート番号」を記述することで回避できました。ServerNameの詳細については、サンプルのhttpd.confなどに詳細な記述があるので参考にしてください。

 
1/2

Index
Apache 2.0でWebDAV
 変更点と日本語リソース問題の解決
Page 1
待望のApache 2.0正式リリース
mod_dav on Apache 2.0概要
Apache 2.0へのWebDAV機能の組み込み

 ソースコードの展開とconfigure
 インストールとモジュールの確認
Apacheの設定と注意
  Page 2
日本語リソース名の取り扱い
 Apache 1.3における日本語リソース名
 Apache 2.0での問題
 mod_encodingのその後の機能拡張
mod_encodingのインストールと設定
 mod_encodingのApache 2.0対応化
 iconv_hookライブラリのコンパイルとインストール
 mod_encodingのコンパイルとインストール
 トラブルシューティング
 mod_encodingの設定と使用
mod_davによるperchild MPMの活用

Linux Square全記事インデックス


 Linux Squareフォーラム WebDAV関連記事
特集:次世代プロトコルWebDAVの可能性[前編]
技術仕様徹底解説

将来、SambaやCVSを不要にする可能性を秘めた「WebDAV」。このプロトコルの仕様から実用化までを徹底解説。今回は、技術仕様を明らかにする
特集:次世代プロトコルWebDAVの可能性[中編]
WebDAVクライアント/サーバ環境の構築
WebDAVの実装はすでに存在する。LinuxによるWebDAVサーバの構築とクライアントの整備を行い、実際に使ってみよう
特集:次世代プロトコルWebDAVの可能性[後編]
日本語ファイル名の利用とバージョン管理
日本語ファイル名を扱えるようにするほか、WebDAVの「V」を司るバージョン管理機能を実現。WebDAV解説完結編!
特集:WebDAV時代のセキュリティ対策[前編]
WebDAVのメソッドは便利な反面、セキュリティホールとなり得る。しかし、適切な対策を講じることでメソッドの危険性は取り除くことができる
特集:WebDAV時代のセキュリティ対策[後編]
WebDAVの使用に際し、包括的な対策を行っておくのも重要である。何をどのように設定すればよいのかをここで明らかにする
特集:Apache 2.0でWebDAV
Apache 2.0の正式リリースでWebDAVも新たな段階に入った。一方で、1.3時代のmod_encodingがうまく機能しないという問題も浮上した
特集:Subversionによるバージョン管理
DeltaVがRFCとしてリリースされ、WebDAVのバージョン管理機能も足元か固まった。DeltaVの実装である「Subversion」を導入しよう
Linux Squareフォーラム全記事インデックス

MONOist組み込み開発フォーラムの中から、Linux関連記事を紹介します

ホワイトペーパーTechTargetジャパン

Linux Square フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

スキルアップ/キャリアアップ(JOB@IT)



- PR -
- PR -

お勧め求人情報

キャリアアップ 〜JOB@IT
@IT Special -PR-
  TomcatやJBossなどAPサーバ環境に関する
情報を集約! “業務”用APサーバ大百科

New!
  一気に解説! 最新のクラスタストレージ
「RAIDを超えたストレージ基準」……など

New!
  クラウド的ユーザー体験の変化は脅威か?
仮想化技術を使いこなす運用管理術を紹介

New!

  上司や部下、部署内メンバーとの情報共有
を“ガラッ”と変えるコラボツールとは?

New!
  おばかアプリ選手権、第4弾開催中!!
ムダにカッコよくてくだらない作品求ム!

  社内ファイルサーバを“クラウド”に統合
VPN直結「クラウド型ストレージ」を紹介

  Twitterのアカウントはなぜ突破された?
メールによる新手の攻撃手法とその対策

  もう仮想化のお試しフェイズは終わりだ!
Hyper-V 2.0が基幹システムも仮想化

  美人!? まあまあ? 気になる いやし系!!
PV急増で「美人時計」がとった手段とは?

  クライアント企業から求められる人材
⇒IT技術と経営戦略を併せ持つ「戦略家」

  .NET編集長が実践する「技術情報検索術」
サンプル・コードを簡単に探す“技”は?

  業務効率と情報セキュリティ対策を両立!
手間なく確実に機密情報を守る方法とは?

  進化を続ける富士通ストレージETERNUS DX
製品開発者の自信を裏付けるものとは何か

  運用管理の課題を“2つの観点”から分析
ユーザー満足度の高い「仮想環境」とは?

  【CTC事例】約30の基幹システムを統合!
膨大なバッジジョブを制御した方法は?

  仮想化すればコストは削減できるか?
仮想化に必要な「3つの視点」を解説する

  その数、なんと400台以上! グループ内
サーバの「統合管理」によるメリットは?