Kahua Release
- Release Note
- Download
- Current Version 1.0.7.3 (2008-05-08)
kahua-web Release
- kahua-webとは
- Release Note
- Download
- Current Version 0.3.1 (2007-06-12)
Security Advisory
Event Log
Documentation
For developers
Site info
Related Site
[module] kahua.config
Kahuaサーバ、ツール群で共通して使われる設定パラメータを 統一的に扱うためのモジュールです。
Kahuaサーバ、ツール群(Scripts参照)は、起動時にコンフィグレーショ ンファイルを読み込みます。デフォルトは${prefix}/etc/kahua.confですが、 多くのツールは-cオプションで替わりのファイルを指定することもできます。
また、サイトバンドルを使用している場合は、 ${path_to_site}/etc/kahua.conf が使われ、システムの設定ファイルは無視さ れます。
コンフィグレーションファイルはSchemeスクリプト片で、単にloadされるだけ です。それは、<kahua-config>クラスのシングルトンインスタンスを生成する 式を含んでいなければなりません。
(make <kahua-config> :sockbase .... :working-directory ...)
ソースアーカイブ(tarball)の中のsrc/kahua.conf.sample にサンプルの設定ファ イルがあります。
[class] <kahua-config>
gauche.mop.singletonの<singleton-mixin>を継承しており、makeすると単一の インスタンスが作成されます。このクラスには、初期化可能な以下のスロット が定義されています。kahua.conf中でこれらのスロットに初期値を与えること で、Kahuaの設定を行うわけです。
これらのスロットは、プログラムの動作中に値を変更することを想定していま せん。プログラム中では、後述のアクセッサやユーティリティ手続き等で参照 するだけにとどめておくべきです。
[slot] site-root
サイトバンドルを使用する場合、そのサイトバンドルのrootにあたるディレク トリのフルパス名が設定されます。この値のみは、設定ファイル内で明示的に 設定すべきではありません。サイトバンドル使用時に自動的に設定されます。 サイトバンドルを使用しない場合(つまり、システムの設定ファイルを使用する 場合)は、このスロットは #f で初期化されます。
[slot] sockbase
初期化キーワードは :sockbase で、Kahuaサーバ群がサーバソケットを作成す るディレクトリのパスを以下の書式で設定します。
:sockbase unix:''dir''
dirが相対パスである場合、
- サイトバンドル使用時は、スロットsite-rootの値からの相対パスとして扱われます。
- サイトバンドルを使用していない場合は、カレントディレクトリからの相対パスとして扱われます。 unix:というプレフィックスをつけるのは将来TCPソケットなどを使えるように するためですが、現在はUNIXドメインソケットのみがサポートされていま す。dirの直下にソケットファイルが作成されます。dirはKahuaコマン ド実行時にあらかじめ存在していなければならず、Kahuaサーバの実行権限で書 き込み可能でなければなりません。
サイトバンドル使用時のデフォルトは unix:socket、サイトバンドル不使用時 のデフォルトは unix:${prefix}/tmp/kahua です。
[slot] working-directory
初期化キーワードは :working-directory で、Kahuaサーバ群が使用するワーキ ングディレクトリのパスを指定します。このディレクトリはKahuaサーバ群起動 時にはあらかじめ存在して、Kahuaサーバの実行権限で書き込み可能でなければ なりません。
Kahuaサーバ群は、この下にアプリケーションコードや、ファイルシステムデー タベースを保存します。
サイトバンドル使用時のデフォルト値は . で、これはサイトバンドルのトップ ディレクトリを意味します。サイトバンドル不使用時のデフォルト値は ${localstatedir}/kahuaです。
[slot] app-servers
初期化キーワードは :app-servers で、kahua-spvrが使用するapp-serversファ イルのパスを指定します。
サイトバンドル使用時のデフォルト値は app-servers で、サイトバンドル不使 用時のデフォルト値は ${localstatedir}/kahua/app-servers です。
[slot] application-directory
初期化キーワードは :application-directory で、アプリケーションコードが 置かれるベースディレクトリのパスを指定します。
サイトバンドル使用時のデフォルト値は app で、サイトバンドル不使用時のデ フォルト値は ${localstatedir}/kahua/checkout です。
[slot] plugin-directory
初期化キーワードは :plugin-directory で、プラグインコードが置かれるディ レクトリのパスを指定します。
サイトバンドル使用時のデフォルト値は plugins で、サイトバンドル不使用時 のデフォルト値は ${localstatedir}/kahua/plugins です。
[slot] template-directory
初期化キーワードは :template-directory で、XMLテンプレートファイルを置 くディレクトリのパスを指定します。
サイトバンドル使用時のデフォルト値は templates で、サイトバンドル不使用 時のデフォルト値は ${localstatedir}/kahua/templates です。
[slot] static-document-path
初期化キーワードは :static-document-path で、静的なコンテンツを保持する ディレクトリを指定します。このディレクトリの下に置かれたファイルは、次 に述べる static-document-url を起点とするURLで、直接HTTPd経由で読み取ら れることを意図しています。
このディレクトリはあらかじめ存在して、(Kahuaサーバ群ではなく)HTTPdが読 み取り可能でなければなりません。また、Kahuaアプリケーションがこのディレ クトリに書き込みを行う場合(例えばKahua アプリケーションでこのディレクト リにファイルをアップロードするなど)、Kahuaサーバ群の実行権限で書き込み 可能でなければなりません。
サイトバンドル使用時のデフォルト値は static です。サイトバンドル不使用 時のデフォルト値は ${localstatedir}/kahua/static です。
[slot] static-document-url
初期化キーワードは :static-document-url で、静的なコンテンツにアクセス するためのURLのベースパスを指定します。この値は、Kahuaアプリケーション 内で静的コンテンツのURL(のパス部分)を生成する際に使用します。
デフォルトは/kahuaです。
※kahua-httpdにおいてはこのURLから静的コンテンツファイルのパスへのマッ ピングは自動的に行われますが、ApacheなどのHTTPdでは、下記のような設定を HTTPdの設定に加える必要があります。
Alias /kahua/ "/usr/local/kahua/var/kahua/static/"
[slot] database-directory
初期化キーワードは :database-directory で、ファイルシステムデータベース が置かれるディレクトリのパスが指定されます。
サイトバンドル使用時のデフォルト値は database で、サイトバンドル不使用 時のデフォルト値は ${localstatedir}/kahua 、つまりworking-directoryと同 じ値です。
[slot] default-database-name
初期化キーワードは :default-database-name で、デフォルトで使用するデー タベースの名前を指定します。デフォルト値は "db" で、database-directory からの相対パスとして扱われます。絶対パスを指定したり、RDBMSを使用するた めのDSNを指定することもできます。
[slot] temporary-directory
初期化キーワードは :temporary-directory で、一時ファイルを書き込むディ レクトリのパスが指定されます。
サイトバンドル使用時のデフォルト値は "tmp" で、サイトバンドル不使用時の デフォルト値は ${localstatedir}/kahua/tmp です。
[slot] log-directory
初期化キーワードは :log-directory で、Kahuaサーバ群がログを書き出すディ レクトリのパスを指定します。
デフォルト値は logs で、サイトバンドル使用時は site-root の値からの相対 パス、サイトバンドル不使用時は working-directory からの相対パスとして扱 われます。絶対パスも指定できます。
[slot] run-directory
初期化キーワードは :run-directory で、Kahuaサーバ群がPIDファイルを書き 出すディレクトリのパスを指定します。
デフォルト値はサイトバンドル使用時は run で site-root の値からの相対パ スとして扱われ、サイトバンドル不使用時は . で working-directory の値か らの相対パスとして扱われます。絶対パスも指定できます。
[slot] secure-sandbox
モジュールの読み込みや使える手続きに制限のあるさんどボックス機構を有効 にするかどうかを#tか#fで指定します。デフォルト値は#tです。
[slot] userconf-file
開発ユーザのデータベースファイルのパスを指定します。
サイトバンドル使用時のデフォルト値は #`",(ref (kahua-config) 'etc-directory)/user.conf"、 サイトバンドル不使用時のデフォルト値は ${localstatedir}/kahua/user.confです。
[slot] spvr-concurrency
kahua-spvrが使用するスレッドプールの大きさ(起動するスレッドの数)を指定 します。デフォルト値は10です。
[slot] timeout-mins
セッションの生存時間を分で指定します。デフォルトは60分です。
[slot] ping-timeout-sec
廃止されました。後方互換性のためだけに残っています。
[slot] ping-interval-sec
廃止されました。後方互換性のためだけに残っています。
[slot] auto-restart
意図せずに終了した worker プロセスを自動的に再起動する場合には #t を設 定します。デフォルトでは #f になっています。
アクセス手続き
各スロットを直接指定せずに済むように、以下のアクセス手続きが定義されて います。いずれも、引数なしで呼び出すと、対応するスロットの値が得られま す。
kahua-site-root kahua-sockbase kahua-working-directory kahua-app-servers kahua-application-directory kahua-plugin-directory kahua-template-directory kahua-database-directory kahua-temporary-directory kahua-log-directory kahua-run-directory kahua-etc-directory kahua-default-database-name
ユーティリティ手続き
Kahuaアプリケーションを書く際、単にkahua-configのスロット値を得るのでは なく、その値を元にパスを組み立てることがよくあります。そういったパスの 組み立てを行うためのユーティリティ手続きが提供されています。
[procedure] kahua-sockbase-abs-path sockbase
プレフィックスのついた相対パス(ex. unix:socket)をプレフィックスつきのフ ルパスに展開します。現在の実装では、unix:以外のプレフィックスがついた文 字列がsockbaseとして渡されたときは、sockbase自身を返します。また、プレ フィックスのないパスがsockbaseとして渡されると、unix:がプレフィックスと して付加されます。
[procedure] kahua-tmpbase
sys-mkstempに渡すためのテンプレートをフルパスで生成します。
[procedure] kahua-dbpath dbpath
プレフィックスのついた相対パスをdbpathとして渡すと、 (kahua-database-directory) が返す値からの相対パスと見なして、プレフィッ クスつきの絶対パスに展開します。パス展開が行われるプレフィックスは、現 状ではefs:とfs:のみです。
プレフィックスがついていないパスが渡されると、同様に絶対パスに展開し、 プレフィックスefs:を付加します。efs:やfs:ではないプレフィックスが dbpathに含まれている場合、dbpathの値をそのまま返します。
[procedure] kahua-logpath filename
filenameを(kahua-log-directory)の値が示すディレクトリからの相対パスと見 なして絶対パスに展開します。
[procedure] kahua-spvr-pidpath
[procedure] kahua-keyserv-pidpath
[procedure] kahua-httpd-pidpath
それぞれ、kahua-spvr、kahua-keyserv、kahua-httpdのPIDを含むファイルの絶 対パスを返します。
[procedure] kahua-static-document-path . path-components
引数は0個以上のパス要素。スロット static-document-path の後ろにパス要素 を付加する形で絶対パスを構築します。以下と同じ意味です。正規化は行われません。
(apply build-path (ref (kahua-config) 'static-document-path) path-components)
[procedure] kahua-static-document-url . path-components
引数は0個以上のパス要素で、URIエンコード済みでなければなりません。以下 と同じ意味で、URLの絶対パス部分を構築します。正規化は行われません。
(apply build-path (ref (kahua-config) 'static-document-url) path-components)
その他の手続き
[procedure] kahua-common-init site-path conf-file
Kahuaの各プログラムはは最初にこの手続きを呼びだして初期化を行います。ア プリケーションコードの中でこの手続きを呼ぶ必要は通常ありません。
コンフィグレーションクラス<kahua-config>のシングルトンインスタンスを初 期化します。site-pathが真値であればその値をサイトバンドルのパスとし て使用して初期化します。site-pathが偽値の時はconf-fileが真値で あればその値をKahua設定ファイルのパスと見なしてloadしま す。conf-fileが偽値なら、デフォルトのKahua設定ファイル (/etc/kahua.conf) のloadを試み、それが見つからなければ警告を出して適当 な初期値を設定します。
[procedure] kahua-config
<kahua-config>のシングルトンインスタンスを返します。通常、シングルトン インスタンスのスロットに直接slot-refでアクセスするより、上記のアクセス 手続きやユーティリティ手続きを使うことが推奨されます。