FreeBSD 6.0,Apache2.2,Subversion のめも
以下をためしたつもり。
- ファイルシステムベースの DAV のインストール
- Subversion ベースのDAV のインストール
- 日本語ファイル名が扱えるように (mod_encoding)
- Apache2.0, 2.2 で試行
- mod_encoding 以外は apache2.0 と同じ.
設定
''http.conf'' の ''LoadModule'' ''dav_module'', ''dav_fs_module'' がコメントアウトされたら外す。
''http.conf'' に以下を追加
Alias /webdav "/home/www/webdav" <Directory "/home/www/webdav"> DAV on DAVMinTimeout 1800 Options Indexes IndexOptions FancyIndexing AuthType Basic AuthName "Please Input ID and Password" AuthUserfile "/usr/local/webdav.passwd" Require valid-user Order allow,deny Allow from all </Directory> DAVLockDB /usr/local/var/apache2/DAVLock
必要なファイル/ディレクトリを作成
% mkdir /home/www/webdav % mkdir /usr/local/var/apache2 % chown www:www /home/www/webdav % chown www:www /usr/local/var/apache2 % htpasswd -c /usr/local/webdav.passwd webdav password: ********
日本語のファイル名を扱えるように。
コンパイル&インストール
ports ''www/mod_encoding'' はコンパイルエラー。apache13 用か。
http://webdav.todo.gr.jp/download/ から ''mod_encoding.apache2.20020611a-2'' を ダウンロード
- ''<MOD_ENCODING>/mod_encoding.c'' を置きかえる。
% cd <MOD_ENCODING> % cp mod_encoding.apache2.20020611a-2 mod_encoding.c % ./configure % make または % cd /usr/ports/www/mod_encoding % make check-sanity fetch checksum extract patch % cp mod_encoding.apache2.20020611a-2 work/mod_encoding-xxxxx/mod_encoding.c % make
これではまだ mod_encoding.so ができない。
このファイルの依存関係にある、iconv_hook をインストールする。
% cd <MOD_ENCODING>/lib % ./configure % gmake % gmake install
インストールできたら共有ライブラリを作成。
% cd <MOD_ENCODING> % gcc -shared -o mod_encoding.so mod_encoding.o -Wc,-Wall -L/usr/local/lib -Llib -liconv_hook % make install
http.conf の設定
以下を追加する。
LoadModule encoding_module libexec/apache2/mod_encoding.so <IfModule mod_headers.c> Header add MS-Author-Via "DAV" </IfModule> <IfModule mod_encoding.c> EncodingEngine on NormalizeUsername on SetServerEncoding UTF-8 DefaultClientEncoding JA-AUTO-SJIS-MS SJIS AddClientEncoding "cadaver/" EUC-JP </IfModule>
ポートが変になる?
現在以下のようにポートをフォワードしている。
VMWare[192.168.x.y:80] -> [localhost:10080]
localhost でブラウザから localhost:10080 を開くと mod_encoding の on/off 時でポート番号の表示が異なる。表示とは、サーバの情報(ディレクトリ表示やエラーメッセージの最後の行の表示) のことで殆ど実害はない。
ただし、wiliki はこの影響をモロに受けるようで、現在は、''192.168.x.y'' にアクセスしている。
apache2.2 について
マクロや型名に違いがあるためコンパイルできない。以下の4つの先頭に ''AP_'' をつけるといいのかな。適当。
- ''regx_t'' -> ''ap_regex_t''
- ''REG_EXTENDED'' -> ''AP_REG_EXTENDED''
- ''REG_ICASE'' -> ''AP_REG_ICASE''
- ''REG_NOSUB'' -> ''AP_REG_NOSUB''
--- mod_encoding.c.apache2.20040616 Sun Dec 4 06:52:38 2005 +++ mod_encoding.c Sun Dec 11 22:25:08 2005 @@ -232,7 +232,7 @@ for (i = 0 ; i < encmap->nelts ; i += 2) { - if (ap_regexec((regex_t *)list[i], lookup, 0, NULL, 0) == 0) { + if (ap_regexec((ap_regex_t *)list[i], lookup, 0, NULL, 0) == 0) { apr_array_cat(encs, (apr_array_header_t *)list[i + 1]); return encs; } @@ -290,7 +290,7 @@ /* register useragent with UserAgent: pattern */ if (*args && (arg = ap_getword_conf_nc(cmd->pool, &args))) { *(void **)apr_array_push(conf->client_encoding) = - ap_pregcomp(cmd->pool, arg, REG_EXTENDED|REG_ICASE|REG_NOSUB); + ap_pregcomp(cmd->pool, arg, AP_REG_EXTENDED | AP_REG_ICASE | AP_REG_NOSUB); } /* register list of possible encodings from above useragent */
他にも警告がたくさん出る。修正したかったら、右辺を''(char *)'' でキャストすればたいてい消える。
mod_dav_svn
apache を再コンパイル。''www/apache20'' をオプション付きでインストール
- ''WITH_BERKELEYDB=db42'' (もしくは db43)
''devel/subversion'' を 以下のオプション付きでインストール
- ''WITH_MOD_DAV_SVN=yes''
- ''WITH_SVNSERVE_WRAPPER=yes''
- ''APR_CONFIG=apr-1-config''
- ''APU_CONFIG=apu-1-config''
- ''APR_APU_DIR=/usr/local/bin''
- ''APXS=/usr/local/sbin/apxs''
オプションは環境変数か,pkgtools.conf の MAKE_ARGS によって与えてもいい。
http.conf の設定
以下が追加されていることを確認。dav_module が2回読みこまれるようなら後の方をコメントアウト。
LoadModule dav_svn_module libexec/apache2/mod_dav_svn.so LoadModule authz_svn_module libexec/apache2/mod_authz_svn.so
設定
ファイルシステムベースでの管理と異なる点は (1) 〜 (4) の4点
- DAV の種類
- svn リポジトリの場所。webdav データはここで版管理される。
- Webブラウザ から閲覧するためのスタイルシート
- WEBDAVクライアントから webdav を使うために必要。クライアントから行った、ファイルの追加、削除、移動1つ1つが1つのリビジョン単位として扱われる(辺りがautoversioning なのかな)。
<Location /webdav> DAV svn # (1) SVNPath /home/www/repos # (2) SVNIndexXSLT "/svnindex.xsl" # (3) SVNAutoversioning on # (4) AuthType Basic AuthName "Please Input ID and Password" AuthUserfile "/usr/local/user.passwd" <LimitExcept GET PROPFIND OPTIONS REPORT> Require valid-user </LimitExcept> </Location>
おわり.
参考にしたページ
- WebDAV Resources JP
- 日本語ファイル名の利用とバージョン管理
- mod_davを利用してWebフォルダなメモ. [FreeBSD](fkimura.com)
- Whiteのふりーとーく (Apache2 + Subversion)