DAViCAL によるカレンダーユーザーの管理は Web ブラウザを介して行います。特にカレンダーサービスという性質上、異なるネットワークからの利用が想定されますので通信経路の暗号化、つまり、https:// での接続を前提に説明しています。
不特定多数にカレンダーサービスを提供するケースや独自CAの管理が難しい場合は公の機関から証明書を取得するようにしてください。
ドキュメントでは専用のバーチャルホストとして caldav サービスを提供する例になっていますが、バーチャルホストを構築しなくても既存の公開ディレクトリに設置する事も出来ます。
専用ホスト(バーチャルホスト)にする事で WebDAV 設定ミスに伴う既存 Webサイト改ざんリスク、DAViCALインターフェイスをロボットから隠蔽しやすい、ログが分割できる、外部から見てくれがいい、といったメリットが あると思いますが、Bind (DNS) の設定も合わせて行う必要があるので面倒です。
ここで紹介している環境は複数の名前ベースのバーチャルホストが運用されており、 cadav サービスは https:// (SSL)で利用する事を第一の目的としているため、SSL 通信が可能な最初の名前ベースのバーチャルホストに設置するケースを想定しています。
どのように Apache で公開するかは、VirtualHost の運用の有無や実働しているサービス内容や管理の仕方によって変わってきますのでそのまま真似すれば良いという訳ではないので注意してください。
名前ベースのバーチャルホスト
http://httpd.apache.org/docs/2.2/ja/vhosts/name-based.html
Apache で名前ベースのバーチャルホストを導入している以上、メインホストもバーチャルホスト扱いになります。名前ベースで構成されるケースで SSLによる暗号化が行えるのは 最初の <VirtualHost *:80> ~ </VirtualHost> のドキュメントルート以下だけです。
また、<VirtualHost *:80> ~ </VirtualHost> の外で指定された公開ディレクティブ(/etc/httpd/conf.d/xxxx.conf) は、上記、最初のVirtualHost で指定された ServerName で指定されたホストで公開されるため SSL による暗号化保護が行えます。
以下の内容の /etc/httpd/conf.d/davical.conf を作成します。私の場合、システムメンテナンスに関連の深い Web ツールは、全て任意の一つのディレクトリ(例えば/var/www-system など)に配置し、設定もそれぞれ個別に/etc/httpd/conf.d で管理しています。
例えば、phpMyAdmin などセキュリティ上重要なサービスは、それぞれに /etc/httpd/conf.d/phpMyAdmin.conf といった設定ファイルを作成し、サービスの重要度に応じてクライアント認証や Digest / Basic 認証、アクセス制限など見落としのないように配慮しています。
名前ベースのバーチャルホスト<VirtualHost>~</VirtualHost> 外でディレクティブ設定を行う事で公開する Webサービス単位でセキュリティポリシを把握し易くなるというのが主な理由です。ドキュメントはこちらにあります。
Alias /davical/ /var/www-system/davical/
############################################## WebDAV を有効にする
<Location /var/www-system/davical>
DAV on
</Location>
############################################## 公開ディレクティブ設定
<Directory /var/www-system/davical/>
## 接続は SSL (https://) に限定する
SSLRequireSSL
## http:// で接続した場合の警告
ErrorDocument 403 http://www.hoge-hoge.com/ssl_only.html
## php の動作設定
php_value include_path "/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"
## アクセス制限
order deny,allow
deny from all
allow from localhost
</Directory>
上記例では取り敢えずローカルで使ってみてから、を想定しています。インターネット側に対して CalDAV サービスを提供する場合は以下のように変更します。
## アクセス制限
order deny,allow
all from deny
allow from all
SSL に限定する必要がない場合は、以下の部分は必要ありません。
SSLRequireSSL
ErrorDocument 403 http://www.hoge-hoge.com/ssl_only.html
DAViCAL の本体は /usr/share/rscds/htdocs になります。上記、/etc/httpd/conf.d/davical.conf の例では、/var/www-system/davical/ ディレクトリを Web 公開するように指定していますので、htdocs を davical という名前でここにシンボリックを張ります。
Apache を再起動します。
DAViCAL の設定ファイルのディレクトリは /etc/dacical ディレクトリ内に作成します。ファイル名は "公開するホスト名-conf.php" にする必要があります。/etc/dacical ディレクトリは rscds.rpm インストール時に作成されていますが中身は空っぽです。
www.hogehoge.com-conf.php の内容は以下の通りです。取り敢えずデータベース接続の部分だけでアクセスできる筈です。true (有効) となっている行は、コメントを外さなくてもデフォルトで有効です。無効にする場合は // を外して ture を false に変更します。
<?php
// $c->domain_name = "www.hoge-hoge.com";
// $c->sysabbr = 'davical'; ← デフォルト(デバッグメッセージ識別 1ホスト1システムなら指定の必要なし)
$c->admin_email = 'admin@hoge-hoge.com';
// $c->system_name = "DAViCal Server Administration";
// $c->collections_always_exist = true;
// $c->enable_row_linking = true;
// $c->default_locale = en_NZ.UTF-8;
$c->pg_connect[] = 'dbname=davical port=5432 user=davical_dba';
?>
$c->admin_email = 'admin@hoge-hoge.com'; はコメントを外さないと有効になりません。このメールアドレスはログインページに表示される管理者への連絡先メールアドレスを表示します。$c->default_locale = ja_JP.UTF-8; としても有効になりませんでした。
DAViCAL のコンフィギュレーションに関する説明は下記ドキュメントを参照して下さい。3種類の設定例に説明があります。LDAP 認証を使用する設定例もあります。
これで DAViCAL へアクセスする準備が全て整いました。次はローカルホストから実際に接続して確認を行います。