iCalのカレンダーをWebDavで共有しよう

$Date: 2003/02/02 11:01:35 $

Apache Module mod_davをインストールしよう


http://www.webdav.org/mod_dav/ から最新版のソースコードをダウンロードしよう.".tar.gz"という拡張子 のファイルだ.ダウンロードしたらStuffitでソースコードを解凍 & 展開しよう. そしたらTerminalを実行し,ソースコードのあるディレクトリに移動して, 以下のコマンド群(まじない)を実行する

$ ./configure
$ make
$ sudo make install

するとモジュールが正しい場所にインストールされるはずである. あとはその機能を有効にするために設定ファイルを編集する必要がある.

参考リンク

Apacheの設定ファイルを編集し,WebDav機能を有効にしよう


Apacheの設定ファイルは/etc/httpd/httpd.conf.編集する前にバックアップを取ろう そしたら編集を始める.一般ユーザでは編集できないのでTerminalで以下のように 実行する

$ sudo emacs /etc/httpd/httpd.conf

そしたら,ファイルの最後尾に以下の記述を追加する

DAVLockDB /usr/share/httpd/conf/DAVLock
 DAVMinTimeout 600
 <Location "/dav">
   DAV on
 </Location>

一行目は誰がどのファイルを編集しているかを追従するためのWebDavデータベース ファイルを指定するものである.二行目は相手からの反応がない時に接続を維持する 最大時間を指定している.残りの行はWebDav機能を有効にし,その機能を指定した ディレクトリ配下だけに制限している.

注意: これは安全な設定ではありません.このままだと誰でもあなたのカレンダを 更新したり,上書きすることができます.安全性を強化するには以下のような 指示を追加する必要があるでしょう.

DAVLockDB /usr/share/httpd/conf/DAVLock
 DAVMinTimeout 600
 <Location "/dav">
   DAV on
   AllowOverride AuthConfig
   AuthType Basic
   AuthName "DAV Restricted"
   AuthUserFile /Library/WebServer/users
   LimitXMLRequestBody 0
   DAVDepthInfinity off
   <Limit PUT POST DELETE PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
     Require valid-user
   <Limit>
 </Location>

上記のように設定すると,適切なユーザ名とパスワードを作成することにより, 認証をパスしたユーザしかiCalのカレンダーを更新できなくなる.

ディレクトリの設定


まずはじめに文書を置く場所を用意しよう.場所は設定ファイルで好きな場所に できるが,上の設定ではWebサーバのDocumentRoot配下の"/dav"という 名のディレクトリになる.なので,DocumentRoot(普通,Mac OS Xでは /Library/WebServer/Documents)に移動し,"dav"という 名のディレクトリを作成しよう.作成したらWebサーバが書き込み可能なように グループと許可権も変更しておく.

$ sudo mkdir /Library/WebServer/Documents/dav
$ sudo chgrp www /Library/WebServer/Documents/dav
$ sudo chmod 775 /Library/WebServer/Documents/dav

次にWebDavのLockデータベースをファイルを置くための場所も用意しておこう. 今回は安易に/usr/share/httpd/confにしておく.作成したら,同様にグループと 許可権を変更しておこう

$ sudo mkdir /user/share/httpd/conf
$ sudo chgrp www /user/share/httpd/conf
$ sudo chmod 775  /user/share/httpd/conf

セキュリティ対策


カレンダを更新する時に,そのユーザが正当な権限を持つユーザかを確認するために ユーザ情報とパスワードを作成しておこう.ここで注意して欲しいことは, 間違っても実際にサーバ計算機で使用している実在のアカウントとパスワードと 同じものを使用してはいけない.残念ながらこれらの情報は盗聴される危険性が高い からである.ユーザ名はWebDavにだけ有効な名前にし,侵入者にとって有用な 情報とならないようにしなければいけない.

では,パスワードファイルを以下のように作成しよう.作成する場所(Directory)は /Library/WebServerである.そのディレクトリに移動し,以下のコマンドを実行しよう.

$ htpasswd -c users webdav

するとパスワードを入力しろと促される.このパスワードとユーザ名 "webdav"はあとでiCalでサーバに接続するのに必要になる情報である.

次に/Library/WebServer/Documents/davに移動し,".htaccess"ファイル を作成して,その中に以下の記述を追加する

AuthName "Dav Restricted"
AuthType Basic
AuthUserFile /Library/WebServer/users
require valid-user

Webサーバがそのファイルを読めるようにグループと許可権を設定しておこう.

Webサーバの再起動


計算機を再起動してもいいが,よりよい方法はkillコマンドを使う方法である. -HUPオプションをつけてWebサーバを再起動し設定ファイルを 読み込みなおす方法である.まずはじめにWebサーバのProcess IDを以下のような 方法で知ろう.

$ ps -ax | grep httpd
2622  ??  Ss    0:00:08 /usr/sbin/httpd
2623  ??  S     0:00:00 /usr/sbin/httpd

いくつかのhttpdプロセスがあるが,もっともProcess IDの小さいもに対してだけ killコマンドで再起動をさせればよい.上の例ではProcess ID 2622が該当する Process IDである.

$ sudo kill -HUP 2622 

さーて,カレンダーを公開しよう


iCalに戻り,公開したいカレンダを選択してメニューから Calender->public... を選択する.

すると二つのオプションが選択するウィンドウが現れる.

自分のWebサーバで公開する時には「.Macに公開」ではなく, 「Webサーバに公開」を選択する.
するとさらにいくつかの入力欄が現れる.

URL欄には公開するカレンダーを置くURLを正確に入力しよう. ログイン名とパスワードは以前に作成したWebDavのユーザ名と パスワードを入力する.さ,これで準備はできた!

僕はこんなカレンダーを公開しているんだ.よかったらためしに見てみて

Cal. for Home / Cal. for Work

自分自身のカレンダーを参照することだってできるよ.
うまく参照できない場合は/var/log/httpd/error_logを見ると問題解決のための ヒントがわかるかもしれないね.さ,みんなで予定確認のメールを書くかわりに カレンダーを共有してみよう


Last update: $Date: 2003/02/02 11:01:35 $