Ubuntu 9.10で DAViCAL 9.7.0 を試す

infoScoop CalendarはCalDAVサーバーとして前の日記でも紹介したBedeworkを採用していますが、CalDAVサーバーの選定にはいくつかのサーバーを試しました。
試したのは、Bedeworkの他にPHPのCalDAVサーバー実装のDAViCalChandler Server(cosmo)Dawing (AppleのCALDAVサーバー)を試しました。
せっかくなので、DAViCalのインストールについて改めてまとめておこうと思います。
OSはUbunutu9.10インストールしてみました。

モジュールのダウンロードはSourceForgeからできます。2010年4月22日現在の最新は0.9.8.4です。

DAViCalを採用しなかった理由には、CalDAV Schedulingが未実装であることとが大きかったわけですが、開発サイトを見ていたら0.9.9で実装されるらしいです。
この記事も0.9.9がリリースされてから書いた方が良かったような気がしますが、またリリースされたら改めてまとめたいと思います。ちなみに、CalDAV Schedulingはまだドラフトで、Google CalendarのCalDAVも実装されていないですし、今後実装が進むかどうかは、まだ微妙なところかもしれません。

では、インストールについてまとめて行きます。

前提条件

前提条件は、以下のソフトウェアが必要になります。
予めインストールしておいてください。

  • Apache2
  • PHP5.1以上($apt-get install php5-pgsql)
  • PostgreSQL 8.1以上(sudo apt-get install postgresql)

Ubuntu 9.10では、Apacheは2.2、PHPは5.2.10、PostgreSQLは8.4が入ります。
データベースの初期化バッチで必要な、以下のライブラリもインストールしておく必要があります。

$sudo apt-get install libdbi-perl libdbd-pg-perl libyaml-perl pwgen

用意ができたら、DAViCalをセットアップしていきます。

DAViCalのインストール

ダウンロードサイトから入手できるモジュールの方が新しいですが、Ubuntuなので他のパッケージ同様apt-getでインストールしてしまいます。

$ sudo apt-get install davical

ubuntu 9.10では、0.9.7.0が入りました。

データベースの準備

次に、DAViCal用のデータベースを用意します。

$ sudo -su postgres
$ /usr/share/davical/dba/create-database.sh

"davical"というデータベースが作成されます。
シェルが終わると、データベースユーザ"davical_dba"と"davical_app"にデータベース"davical"へのアクセスを許可するようにph_hga.confに設定せよ。と言われます。

ここは、INSTALLテキストに書いていないので注意です。サイトのインストールガイドにはちゃんと書いてありました。
以下のエントリーをpg_hba.confファイルに追加します。

$sudo vi /etc/postgresql/8.4/main/pg_hba.conf
# local      DATABASE  USER  METHOD  [OPTIONS]
# host       DATABASE  USER  CIDR-ADDRESS  METHOD  [OPTIONS]
# hostssl    DATABASE  USER  CIDR-ADDRESS  METHOD  [OPTIONS]
# hostnossl  DATABASE  USER  CIDR-ADDRESS  METHOD  [OPTIONS]
local   davical    davical_app   trust
local   davical    davical_dba   trust
#

インストールガイドには先頭に追加しろと書いてあったので、"# hostnossl DATABASE.."と書いてある後ろに追加してみました。

PostgreSQL再起動します。

$sudo /etc/init.d/postgresql-8.4 restart
Apacheの設定

次に、INSTALLドキュメントの通りApacheのVirtual Hostを設定します。

$ sudo vi /etc/apache2/sites-available/default

以下はドキュメントの設定をコピペして、IPアドレスだけ変えました。

#
# Virtual Host def for Debian packaged DAViCal
<VirtualHost 192.168.1.2 >
  DocumentRoot /usr/share/davical/htdocs
  DirectoryIndex index.php index.html
  ServerName davical.example.net
  ServerAlias calendar.example.net
  Alias /images/ /usr/share/davical/htdocs/images/
  php_value include_path /usr/share/davical/inc:/usr/share/awl/inc
  php_value magic_quotes_gpc 0
  php_value register_globals 0
  php_value error_reporting "E_ALL & ~E_NOTICE"
  php_value default_charset "utf-8"
</VirtualHost>

a2ensiteで設定を有効にします。

$ sudo a2ensite
DAViCalの設定ファイルを作成

次に、DAViCalの設定ファイルを作成します。
設定ファイルは、/etc/davical/-conf.phpです。とりあえずデフォルトのdavical.example.netをそのままドメイン名に使います。

$ sudo vi /etc/davical/davical.example.net-conf.php
<?php
   $c->pg_connect[] = 'dbname=davical user=davical_app';
?>

以上で、セッティングは終了です。

動作確認

http://192.168.1.2/にアクセスしてみます。
以下のようなログイン画面が表示されればセットアップは成功です。

デフォルトの管理者ユーザは、"admin"/"Ni4Eo-P<"です。
ユーザの追加は、[Users]タブの[New User]から行えます。

CalDAVのURLは、こちらになります。

http:///caldav.php//home

Sunbirdに追加してみます。
Sunbirdの[ファイル]→[新しいカレンダー]→[ネットワークサーバーに保存する]→[CalDAV]と選択して上記のURLを指定します。

繰り返しなどもちゃんと入りました。
空き時間検索はスケジューリングの機能になるのでやはり動かないですね。
データベースの中身を見ると、参加者はLOBデータのiCalのテキストにのみ格納されています。今後、空き時間検索やスケジュールメッセージなど実装することになるとカラムに展開するとかになるんでしょうか。0.9.9はほとんど実装が終わってるようなのでリポジトリ見てみれば良いんですが今日はここまで。