« USB-KNOPPIXを使用する | トップページ | カスペルスキー インターネットセキュリティ5 購入 »

2006/07/24

WebサーバのWebDAV化に挑戦

WebサーバのBasic認証で、Basic認証はうまくいったのですが、ファイルサーバの代わりにはいま一歩でした。
マイキャビをネットワークフォルダから使用するで、マイキャビがWindows2000でもネットワークフォルダとして使用可能になりましたが、日本語のフォルダ名やファイル名にするとマイキャビが破壊されるという非常にリスキーなものでこちらも使い物になりませんでした。

・・・そんな紆余曲折を経て、WebサーバをWebDAV化しようと思ったわけです。

WebDAV化するにはApacheにモジュールを追加するのですが、それが普通のWebコンテンツに影響を与えないのかが心配です。でも、ネットで調べてもどこにも情報が無いんですよね・・・。

ま、なんとかなるさ。やってみるべ。
ちなみに、今回の環境です。
VineLinux2.6
ApacheはVineLinux2.6インストール時に付いて来た物。(1.3系です)
SSLを使ったBasic認証までは設定が済んでいます。

ところで、VineLinux2.6のApacheでWebDAV化できるのか?と思い、VineのミラーサイトのVinePLUSを見たところ、mod_dav-1.0.3-4vl4.i386.rpm と mod_encoding-20021209-0vl2.i386.rpm が見つかったので問題なさそうです。

ネットで調べていると、Vine2.6でmod_davという非常に都合のいいページを見つけて、今回参考にさせて頂きました。


まず、VineLinux2.6 のAPTには、PLUSが含まれていないので、/etc/apt/sources.list を編集します。
上記ミラーサイトのPLUS部分
#rpm http://www.ring.gr.jp/pub/linux/Vine/apt 2.6/$(ARCH) main plus plus-noarch
#rpm-src http://www.ring.gr.jp/pub/linux/Vine/apt 2.6/$(ARCH) main plus
のコメント#をはずします。

# apt-get update
で、aptデータベースの更新

mod_davパッケージがあるか検索
# apt-cache search mod_dav
mod_dav - A DAV module for Apache.
mod_encoding - Apache mod_dev 用日本語エンコーディングモジュール mod_encoding.

ちゃんとありますね!

mod_dav と mod_encodingをインストールします。
# apt-get install mod_dav
# apt-get install mod_encoding
でインストールします。
mod_davインストール時に、依存する libiconv_hook パッケージのインストールもするか聞かれました。もちろん一緒にインストールします。

さて、Apache側の設定変更です。
/etc/httpd/conf/httpd.conf を編集
<IfDefine HAVE_DAV>
LoadModule dav_module         modules/libdav.so
</IfDefine>
これはもともとありました。
この下に以下を追加
<IfDefine HAVE_ENCODING>
LoadModule encoding_module    modules/mod_encoding.so
</IfDefine>

<IfDefine HAVE_DAV>
AddModule mod_dav.c
</IfDefine>
の下に以下を追加
<IfDefine HAVE_ENCODING>
AddModule mod_encoding.c
</IfDefine>

これで、mod_davとmod_encodingのモジュールが追加されます。

さらに、以下を追加
mod_encodingの設定です。
<IfModule mod_encoding.c>
  EncodingEngine    on
  NormalizeUsername on
  SetServerEncoding     EUC-JP
  DefaultClientEncoding JA-AUTO-SJIS-MS SJIS
  AddClientEncoding  "cadaver/" EUC-JP
</IfModule>

SetServerEncodingは、Vineの文字コードがEUCなんでEUCにします。
NormalizeUsername onは、WindowsXP使用時にユーザー名に余分なドメイン名が引っ付いてくるのをカットしてくれます。
ClientEncodingの設定に関しては、Windowsの設定をしてます。cadaverの設定は、他の方の設定を見るとたいてい付いているので付けときました。(おいおい) Linuxで使われるWebDAV用のクライアントソフトの設定だそうです。


mod_davの設定です。
<IfModule mod_dav.c>
DAVLockDB /var/lock/apache/DAVLock
DAVMinTimeout 600
DavServerEncoding EUC-JP
</IfModule>

DAVLockDB は、ロックファイルの位置です。後でディレクトリを作ります。
どこに作ってもいいのですが、Vineだとここに作るのが無難でしょう。

<IfModule mod_headers.c>
Header add MS-Author-Via "DAV"
</IfModule>
ここは「WebDAVサーバの構築」の説明によると、このヘッダを付けないと、変なファイルを要求されてしまうそうです。
ここを省くと、確かに_vti_inf.htmlファイルをくれ!みたいなのがログに出てました。
WebDAV設定時のお約束なんですかね。

<IfModule mod_dav.c>
<Location WebDAVディレクトリのロケーション(Webから見たディレクトリの位置)>
  DAV On
  SSLRequireSSL
  AuthUserFile /etc/httpd/.htpasswd←Basic認証設定時に作成したパスワードファイルの場所
  AuthGroupFile /dev/null
  AuthName "Private Area"
  AuthType Basic
  Require user 許可するユーザー名
</Location>
</IfModule>

SSLRequireSSLで、SSLを使用しない通信は接続不可にしました。
Basic認証を使用して、許可したユーザーしか入れなくしています。


ロック用ディレクトリを作成します。
# mkdir -p /var/lock/apache
# chown apache.apache /var/lock/apache

dav用のディレクトリも作成します。
# mkdir WebDAV用のディレクトリ
# chown apache.apache WebDAV用のディレクトリ

ロック用ディレクトリもDAV用ディレクトリも、Apacheが使用するのでApacheのユーザーが書き込めなくてはいけません。
Apacheのユーザーは、httpd.confのUserです。VineLinux2.6はデフォルトでapacheです。

Apacheを再起動します。
# /etc/init.d/httpd restart
httpdを停止中:          [ OK ]
httpdを起動中:          [ OK ]


後はマイキャビをネットワークフォルダから使用するみたいな感じでネットワークフォルダを作成すれば使用できます。
ただし、SSL必須なので、URLは https:// から始まります。


以上で設定完了。
他のWebコンテンツにも、今の所副作用は出ていないようです。

でも、Web上からなんでもファイルが置けてしまうというのは危険なわけで・・・。
実運用しようかマイキャビで我慢しようかどうしようか迷い中ではあります。(汗)

|

« USB-KNOPPIXを使用する | トップページ | カスペルスキー インターネットセキュリティ5 購入 »

Apache」カテゴリの記事

VineLinux」カテゴリの記事

WebDAV」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/54336/11076873

この記事へのトラックバック一覧です: WebサーバのWebDAV化に挑戦:

« USB-KNOPPIXを使用する | トップページ | カスペルスキー インターネットセキュリティ5 購入 »