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上からなんでもファイルが置けてしまうというのは危険なわけで・・・。
実運用しようかマイキャビで我慢しようかどうしようか迷い中ではあります。(汗)
| 固定リンク
「Apache」カテゴリの記事
- VineLinux4.2でSSLの証明書を更新する(2009.07.26)
- Ubuntuサーバー版でWebDAV環境を構築する(2008.10.19)
- Webサーバ構築時の全コマンド(2008.08.06)
- VineLinux4.2でWebDAVを使用する。(2008.03.23)
- SSLの証明書を作成する(2006.11.03)
「VineLinux」カテゴリの記事
- ゼビウスちっくなゲーム、XBat を ジョイスティック対応させる(2014.10.14)
- Let'snote CF-R3 に Vine Linux 6.2 をインストールする(2014.05.11)
- Linux で Kega Fusion を使う(2009.12.31)
- VineLinux5.0インストール(2009.10.12)
- VineLinux4.2でSSLの証明書を更新する(2009.07.26)
「WebDAV」カテゴリの記事
- Ubuntu8.04でSSLのWebDAVに接続する(2009.02.16)
- Ubuntuサーバー版でWebDAV環境を構築する(2008.10.19)
- Webサーバ構築時の全コマンド(2008.08.06)
- VineLinux4.2でWebDAVを使用する。(2008.03.23)
- WebサーバのWebDAV化に挑戦(2006.07.24)
コメント