2007/4/20 金曜日

apache1.3にwebdav

このエントリをはてなブックマークに追加apache1.3webdavのはてなブックマーク被リンク数
Filed under: 未分類 — akky @ 0:00:00

CentOS4 をEUCで動かしているサーバにapache1.3でWebDavをインストールする手順。
自分のためのも記録として残しておく。主に http://www.futurewave.co.jp/linux/webdav.html を参考

mod_encodingをインストール

ソースをダウンロード
iconv_hookをコンパイル
$ tar xvfz mod_encoding-20021209.tar.gz
$ cd mod_encoding-20021209/lib
$ ./configure
$ make
$ su
# make install
mod_encodingをコンパイル
$ cd mod_encoding-20021209/
$ ./configure --with-apxs=/usr/local/apache/bin/apxs --with-iconv-hook=/usr/local/include/iconv_hook
$ make
$ su
# make install
ソースをダウンロード

mod_dav-1.0.3-1.3.6-l10n.diffはサーバへファイルを保存するときの文字コードをEUCにするために必要

ソースの展開とパッチ
$ tar zxvf mod_dav-1.0.3-1.3.6.tar.gz
$ cd mod_dav-1.3.0-1.3.6
$ patch -p1 < mod_dav-1.0.3-1.3.6-l10n.diff

mod_dav-1.0.3-1.3.6-l10n.diffを当てるとmod_encoding-20021209/libにあるiconv_hook_default.c、iconv_hook_ja_auto.c、iconv_hook_mssjis.c 、identify_encoding.cを使う事になる。configureが作成するmakefileがこれらを参照できるようにMakefile.inを編集

SRCS = ・・・
     iconv_hook_default.c \
     iconv_hook_ja_auto.c \
     iconv_hook_mssjis.c \
     identify_encoding.c

SRCS = ・・・
     ../mod_encoding-20021209/lib/iconv_hook_default.c \
     ../mod_encoding-20021209/lib/iconv_hook_ja_auto.c \
     ../mod_encoding-20021209/lib/iconv_hook_mssjis.c \
     ../mod_encoding-20021209/lib/identify_encoding.c

に変更。その後に

$autoconf

/etc/ld.so.confを編集

configureのテストで/usr/local/lib/libiconv_hook.so.1.oを参照できずに失敗する。LDFLAGS=’-L/usr/local/lib -liconv_hook’を指定してもだめ。/etc/ld.so.confを編集する必要がある。下の行を追加

/usr/local/lib

そのあと、

# ldconfig

を実行してキャッシュを更新

コンパイル
$ ./configure CFLAGS=-I/usr/local/include/iconv_hook LIBS='-L/usr/local/lib -liconv_hook' --with-apxs=/usr/local/apache/bin/apxs
$ make
$ make install

httpd.confを編集

認証もするべきなのだけど、今回は省略。

# モジュール読み込み
LoadModule dav_module         libexec/libdav.so
LoadFile  /usr/local/lib/libiconv_hook.so.1
LoadModule encoding_module    libexec/mod_encoding.so

AddModule mod_dav.c
AddModule mod_encoding.c

## for WebDav
# WebDAVとして公開するディレクトリ
alias /dav /usr/local/dav
<Location /dav>
        DAV On
</Location>

<IfModule mod_dav.c>
  # ロックDBの場所
  DAVLockDB logs/DAVLock/lockfiles
  # apache側のタイムアウトは10分
  DAVMinTimeout 600
  # サーバ側のエンコーディング 保存されているファイルの漢字コード
  DAVServerEncoding EUC-JP
</IfModule>

<IfModule mod_headers.c>
   Header add MS-Author-Via "DAV"
</IfModule>

<IfModule mod_encoding.c>
   EncodingEngine on
   # WindowsXPでホスト名を除いて認証させる
   NormalizeUsername on
   # サーバ側のエンコーディング 保存するファイルの漢字コード
   SetServerEncoding EUC-JP
   DefaultClientEncoding JA-AUTO-SJIS-MS SJIS
   AddClientEncoding "Microsoft .* DAV 1.1" ASCII MSSJIS UTF-8
   AddClientEncoding "Microsoft .* DAV" UTF-8 MSSJIS
   AddClientEncoding "(Microsoft .* DAV $)" UTF-8 MSSJIS
   AddClientEncoding "(Microsoft .* DAV 1.1)" MSSJIS UTF-8
   AddClientEncoding "Microsoft-WebDAV*" UTF-8 MSSJIS
   AddClientEncoding "RMA/*" MSSJIS
   AddClientEncoding "xdwin9x/" MSSJIS
   AddClientEncoding "cadaver/" UTF-8 EUC-JP
   AddClientEncoding "Mozilla/" EUC-JP MSSJIS UTF-8
</IfModule>

はまったこと。

  • mod_dav-1.0.3-1.3.6-l10n.diffのパッチと<IfModule mod_dav.c>ディレクティブでDAVServerEncoding を指定しなとサーバから読み込んだときに正しく表示されない。
  • /etc/ld.so.confを編集しないとmod_davのconfigureが失敗する。

今後の課題

このサーバにはmediawikiを同居させたいのだが、mod_encodingの副作用でページ名をUTF-8で渡されるのだがmod_encodingがEUCに変換するで、日本語のページを表示できない。http://www.namazu.org/ml/namazu-win32-users-ja/msg01596.html のパッチを当てればいいのだが、mediawikiはindex.php?wiki名ではなくindex.php/wiki名になっているので、副作用を回避できない。

コメント (2) »

  1. はじめまして!

    mod_encodingがうまくいかずこちらのakkyさんのサイトがヒットしました!
    webdav+digest認証をやっていますがファイルが存在しているはずなのに
    File does not existのエラーが出たりログで日本語ファイル名が文字化けして
    いろいろ悩んでいました。。。w

    # まだ解消されていませんけど。。。(^^;

    akkyさんのおかげでだいぶ解消できましたm(_ _)m

    ありがとうございますm(_ _)m

    コメント by NOCCHI — 2008/1/23 水曜日 @ 3:03:28

  2. N俟返gをしてF壓s2定Uち N俟 ます。兜めてカウンセリングにLれたときにはメリットばかりをし、もっとも嶷勣なデメリット?リスクについては畠くh苧がなかった並N俟に謹富の音佚を宇N俟きました。カウンセリングは飛い溺來スタッフが嶄伉で枠伏のはほんの富しでした。暴はN俟のカウンセリングでこのクリニックをLれたのですが、兜めてのカウンセリングということもあり。

    コメント by N俟 — 2008/7/5 土曜日 @ 20:51:37

コメント RSS

コメントをどうぞ