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
Kahuaをセットアップする
準備
Gauche のインストール
Kahuaを動かすためには、0.8.9 以降のpthreadをサポートした Gauche がインストール済みである必要があります。最新のリリースバージョンを使うのがよいでしょう。また、特別な理由がなければ、内部文字エンコーディングにはUTF-8をお薦めします。
自分のシステムにどんなバージョンのGaucheがインストールされているかは以下のコマンドを実行すればわかります。
$ gosh -V Gauche scheme interpreter, version 0.8.10 [utf-8,pthreads]
適切なバージョンの Gauche がインストールされていなければ、インストールしてください。configureオプションに --enable-threads=pthreads を渡すのをお忘れなく。
Kahua 1.0.3からは、Gaucheが正しくインストールされているかどうかをconfigureスクリプトがチェックするようになりました。OSがLinuxの場合には、NPTL(Native POSIX Thread Library)が有効になっているかどうかもチェックします。
その他に必要なもの
Kahua自体のインストールには、
- configure スクリプトが動作する sh (bashやksh、BSD sh)
- make (GNUでもBSDでもAppleでもOK)
が必要です。普通のUNIX系OS環境であれば大丈夫だと思いますが、Linuxディストリビューションやインストール時の指定によっては、makeが入っていない場合があります。その場合はパッケージシステムなどを使って適宜インストールしておいて下さい。
また、自分でKahuaアプリケーションを開発する場合には、
- autoconf 2.59以降
が必要になります。適宜インストールして下さい。
とりあえず試す
実運用環境についてはさまざまな要素を勘案しながらインストール先や権限を検討する必要がありますが、その前にKahuaに慣れるためにも、まずは1ヶ所にKahua関連のファイルをまとめてインストールしてしまうのがいいでしょう。
$HOME/kahuaの下にインストール
とりあえずKahuaを体験してみたいのなら、自分のHOMEの下にインストールしてしまうことをお薦めします。後述のようなパーミッションやユーザ/グループの設定が不要になります。
% tar xvzf Kahua-1.0.6.tgz
% cd Kahua-1.0.6
% ./configure --prefix=${HOME}/kahua
% make
% make check
% make install
% make install-examples
これでKahuaを動かすのに必要なもの全てとサンプルアプリケーションとが、${HOME}/kahua の下にインストールされます。${HOME}/kahua/bin にPATHを通しておくと便利でしょう。また、Kahua組み込みのHTTPd(kahua-httpd)を使えば、ApacheなどのWebサーバを別途用意する必要はありません。
/usr/local/kahuaの下にインストール
システム領域にインストールしたいのであれば、/usr/local/kahua の下にまとめてインストールしてしまうのがいいでしょう。この場合も、サイトバンドルの機能を使えば、パーミッションやユーザ/グループなどの設定に煩わされることがありません。下記の例では、$HOME/siteというサイトバンドルを作ってその下にサンプルをインストールしています。
% tar xvzf Kahua-1.0.6.tgz % cd Kahua-1.0.6 % ./configure --prefix=/usr/local/kahua --with-site-bundle=$HOME/site % make % make check % sudo make install % /usr/local/kahua/bin/kahua-package create ~/site % rm ~/site/app-servers % make install-examples
この場合も、/usr/local/kahua/bin にPATHを通しておくと便利です。
サイトバンドルについてはSite Bundleを参照して下さい。
Kahuaを起動する
Kahuaを起動するには、以下のコマンドを実行します。
% kahua-spvr -H localhost:8888
-H(もしくは--httpd)オプションをつけると、Kahua組み込みのHTTPdであるkahua-httpdもいっしょに起動します。-Hの引数は[ホスト:]ポート番号です。ポート番号は必須ですので、非特権ポートから適当に決めて下さい。ホストは省略可能で、省略した場合には0.0.0.0(および可能なら[::])にkahua-httpdのサーバソケットがbindされます。適切にフィルタリングをしていない環境では外部から自由にアクセスできてしまうのでご注意ください。ホストには、サーバソケットをbindしたいIPアドレス、もしくはそれに対するホスト名を指定し、ポート番号との間は:(コロン)で区切ります。
サンプルアプリケーションをサイトバンドル$HOME/siteの下にインストールしている場合には、
% kahua-spvr -H localhost:8888 -S ~/site
として起動します。-Sはサイトバンドルに対してコマンドを起動することを指定し、その引数はサイトバンドルのパスです。フルパスもしくはカレントディレクトリからの相対パスでもOKです。
ブラウザで http://localhost:8888/ にアクセスしてみましょう。サンプルアプリケーションのlambdabooksが表示されたら成功です。いろいろ遊んでみてください。サンプルアプリケーションのソースコードは$HOME/kahua/var/kahua/checkoutの下、あるいは$HOME/site/appの下に、アプリケーション名と同じ名前のディレクトリごとに置かれています。
Kahuaをバックグラウンドで起動する
kahua-spvrには、自らバックグラウンドに移行する(daemonizeする)機能がありません。もっとも簡単にバックグラウンド実行するには、
% (kahua-spvr -H localhost:8888 -S ~/site >>~/site/logs/kahua.log 2>&1 &)
として実行するとよいでしょう。()でくくっているのは、制御端末を切り離すためです。kahua-spvrやその配下のサーバプロセスが異常終了した場合には、ログではなく、プロセスの標準エラー出力にメッセージが出力されることになるので、標準出力と標準エラー出力をどこかのログにリダイレクトしておくことをお薦めします。
実運用環境においては、上記のコマンドラインをrcから呼び出すようなスクリプトを用意するか、daemontoolsの下で稼働させるとよいでしょう。multilogを使えば、標準エラー出力に吐かれたメッセージも収集することができます。 また、開発環境においては、GNU screenを使って以下のように起動するのも手軽でお薦めです。
% screen -d -m kahua-spvr -H localhost:8888 ~S ~/site
必要な時にattachすることができます。
開発ユーザの作成
Kahuaでは、kahua-shellというコマンドを使って、動作中のワーカプロセスに接続して式を評価したり、内部の状態を変更したりすることができます。kahua-shellはワーカに接続する際、「開発ユーザ」の認証を行いますので、まずはそのための開発ユーザを作成する必要があります。Kahuaの開発ユーザは、管理者/開発者のUNIXログインアカウントとは独立に、使用するKahuaのワーキングディレクトリ、もしくはサイトバンドルごとに作成しなければなりません。
まず、Kahuaサーバ群を管理するためのコマンドであるkahua-adminを起動します。以降、kahua-adminコマンドがインストールされているディレクトリにパスが通っているものとします。
% kahua-admin spvr>
サイトバンドルを使う場合には-Sつきでkahua-adminを使用するか、環境変数 KAHUA_DEFAULT_SITEにサイトバンドルのパスを設定して下さい。
このプロンプトに以下のコマンドを入力します。
spvr> adduser ユーザ名 パスワード done spvr>
例えば、追加したいユーザ名が taro、パスワードが secret の場合は、
spvr> adduser taro secret
done
spvr> lsuser
("steel" "sussman" "taro")
spvr>
となるでしょう。steel、sussmanというのはサンプルとして登録されているユーザなので、削除してしまってかまいません。サイトバンドルにはデフォルトのユーザは存在しないので、taroだけが表示されるはずです。
spvr> deluser steel done spvr> deluser sussman done spvr>
EOF(Ctrl-D)を入力すれば kahua-admin を抜けられます。
さぁ、これで kahua-shell を使えるようになりました。試してみましょう。サイトバンドルを使用する際は-Sをつけるか、環境変数KAHUA_DEFAULT_SITEを適切に設定するのをお忘れなく。
% kahua-shell
Welcome to Kahua.
username: taro
password:
wno type since wid
0 lambdabooks Sep 27 16:19 gje:2ft3z
1 wiki-iki Sep 27 16:19 dej:inai
2 login Sep 27 16:19 90j:5hwlk
select wno> 0
lambdabooks(gje:2ft3z)> (map (cut ref <> 'login-name) (make-kahua-collection <kahua-user>))
("admin" "guest")
lambdabooks(gje:2ft3z)>
サンプルアプリケーションのlambabooksに接続し、式を評価したところです。
きちんとインストールする(Obsolete)
システムの公共の場所にroot権限でKahuaをインストールする際には、 多少の手順と、Kahuaの仕組みを少し覗いてみる必要があります。
Kahuaの役割分担を理解する
Kahuaは、大きく3つに分類されるプロセス群が、それぞれの権限 (UNIXユーザ)で、相互に通信しながら動作します。
- Kahuaサーバ群(kahua-spvr、kahua-server、kahua-keyserv)
- Kahuaブリッジ(kahua.cgi, kahua.fcg, kahua-httpd)
- Kahua管理者(kahua-admin)および開発者(kahua-shell)
この3者は、同じUNIXドメインソケットを読み書きできる必要があります。 また、Kahuaサーバ群とKahuaブリッジとは、同じ場所でテンポラリファイル の読み書きができる必要があります。
グループ kahua を作成する
3つの役割のプロセス同士がUNIXドメインソケットを通じてやり取りをする ためには、それぞれのプロセスの実行ユーザが同一のグループに属している 必要があります。そのためのグループ kahua を新規に登録しましょう。 root権限が必要です。
# groupadd kahua
OSによっては違うコマンドを使う必要があるかも知れません。 OSのマニュアルを参照してください。
ユーザ kahua を作成する
上記の3種類のプロセスのうち、Kahuaサーバ群は一体となって動きます。 セキュリティ上、Kahuaサーバ群は独自のユーザ権限の下で動かすことが 望ましいでしょう。ここでは、そのユーザを kahua として新規に作成します。 プライマリグループは上記で作成したグループ kahua でいいでしょう。
# useradd -g kahua kahua
グループ kahua に他のユーザを登録する
次に、Kahuaブリッジの実行ユーザとKahua管理者/開発者であるユーザをkahua グループに登録しましょう。
Kahuaブリッジのうち、kahua.cgiやkahua.fcgは、通常CGIスクリプトを実行する Webサーバと同じ権限で動作します(ここではsuEXECは使っていないものとします)。 Webサーバの実行ユーザが www だとすると、
# usermod -G kahua www
を実行します。この変更をWebサーバの動作に反映させるには、いったんWebサーバを 再起動する必要があります。なお、Kahua内蔵のHTTPdを使用し、外部のWebサーバを 使用しない場合はこの設定は不要です。
次に、Kahua管理者/開発者について考えます。これはおそらく、あなた自身 (+他の誰か)のログインユーザでしょう。例えばあなたが taro だとすると、
# usermod -G kahua taro
で kahua グループに taro を追加することができます。
注意: usermodコマンドの挙動は、OSごとに微妙に違っています。NetBSDでは セカンダリグループを追加するだけですが、Ubuntu Linux や Fedora Coreなどでは セカンダリグループを上書きしてしまいます。必ずお使いのusermodコマンドの挙動 を確認してから実行してください。
ビルドする
ビルドといっても、KahuaはほとんどがGaucheスクリプトであり(一部shスクリプト)、 ./configure のオプションに気をつけさえすれば特に問題はありません。以下は 筆者があるサイトにKahuaをインストールするためにビルドを行う様子です。
% tar xzvf Kahua-1.0.4.tgz
% cd Kahua-1.0.4
% ./configure \
--with-kahua-user=kahua --with-kahua-group=kahua --with-cgi-user=www \
--prefix=/usr/local/kahua \
--sysconfdir=/usr/local/etc \
--localstatedir=/var/local \
--with-cgidir=/var/local/www/cgi-bin \
--with-cgilogdir=/var/log/kahua/cgi \
--with-staticdir=/var/local/www/htdocs/kahua-data \
--with-fastcgi=yes
% make
makeはGNU makeでもBSD makeでも大丈夫なはずです。もし、BSD makeでうまく 行かない場合は GNU make を試してみてください。そして、BSD makeでどう うまくいかなかったのかをしらせてください。
configureのオプション
configureのオプションの詳細については、
% ./configure --help
で見ることができますが、ここでは特に設定することが多いであろうオプション について解説します。
--with-kahua-user
Kahuaサーバ群を動かすためのユーザ名。デフォルトは指定なし。
--with-kahua-group
Kahuaサーバ群を動かすユーザ、Kahua管理者/開発者、Kahuaブリッジの
実行ユーザが所属しなければならないグループ名。デフォルトは指定なし。
--with-cgi-user
Kahuaブリッジ(kahua.cgi/kahua.fcg)の実行ユーザ名。通常はCGIを起動
するWebサーバの実行ユーザになる。デフォルトは指定なし。
--with-cgidir
KahuaブリッジであるCGIスクリプトのインストール先となるディレクトリ。
Webサーバの設定による。デフォルトでは ${libexecdir}/kahua となる。
--with-cgilogdir
KahuaブリッジであるCGIスクリプトがログを出力するディレクトリ。
指定したディレクトリはCGIスクリプトの実行権限で書き込みができな
ければならない。デフォルトは ${localstatedir}/kahua/cgilog。
--prefix, --exec-prefix, ...
configureの標準オプション。設定することが多いのは--prefixの他、
--localstatedir、--sysconfdirあたり。${localstatedir}/kahua に
Kahuaアプリケーションやデータベース、ログディレクトリなどが配置
され、標準の設定ファイルが${sysconfdir}/etc/kahua.conf に置かれる。
--with-staticdir
Kahuaサーバ群が静的コンテンツを探すディレクトリ。デフォルトは
/var/www/kahua。この値はインストール後設定ファイルで変更できる。
--with-fastcgi
FastCGI対応のKahuaブリッジ(kahua.fcg)をインストールする。この
オプションを使うためには、あらかじめ Gauche-fastcgi をインスト
ールしておく必要がある。
セルフテスト
以下のコマンドでテストを実行します。
% make check
インストール
以下のコマンドでKahuaシステムとして必要なファイル群をインストールします。
% su # make install
サンプルアプリケーションをインストールする際は root ではなく、Kahua 管理者/開発者の権限で行います。
% make install-examples
この後、サンプルとしてインストールされたデータベースディレクトリの オーナー/グループ/パーミッションを以下のように変更します。上記の configureオプションでビルドをしたのであれば、データベースディレクトリ は /usr/local/kahua/var/kahua/db になります。
% su # chown -R kahua:kahua /usr/local/kahua/var/kahua/db*
最後の*(アスタリスク)をお忘れなく。
Kahuaサーバ群の起動
お疲れさまでした。ようやくKahuaを起動する準備が整いました。 Kahuaサーバ群をkahuaユーザ権限で起動しましょう。
# su kahua -c ${prefix}/bin/kahua-spvr
このコマンドでKahuaスーパバイザ(kahua-spvr)が起動し、スーパバイザが 必要に応じてワーカ(kahua-server)やキーサーバ(kahua-keyserv)を起動 します。内蔵HTTPdつきで起動するなら、
# su kahua -c ${prefix}/bin/kahua-spvr --httpd localhost:8888
のようにします。バックグラウンドで動かしたい場合は
# su kahua -c "(${prefix}/bin/kahua-spvr >>${localstatedir}/kahua/logs/kahua-error.log 2>&1 &)"
のようにすればいいでしょう。
現在のKahuaには、各種OSのrcスクリプト(init.dスクリプト)にこのような 起動コマンドを登録する仕組みは(まだ)ありません。上記のコマンドラインを 参考に作成するか、daemontools を使うとよいでしょう。
Subversionによるソースコードの取得とビルド
2007年7月29日から、KahuaのソースコードはSubversionリポジトリで管理されています。リポジトリはAnonymous SVNで公開されていますので、以下のようにしてソースコードをチェックアウトすることができます。
### trunk(CVSで言うHEAD)を取得する % svn co http://svn.kahua.org/Kahua/trunk Kahua ### stable1_0ブランチの先端を取得する % svn co http://svn.kahua.org/Kahua/branches/stable1_0 Kahua_STABLE
リポジトリから取得したソースからビルド/インストールを行うには、autoconf 2.59以降が必要になります。また、trunkを試すのなら、GaucheもCVS HEADのものを使用した方がよいでしょう。
CVSからチェックアウトしたソースからビルドするには、以下のコマンドでconfigureスクリプトを生成する必要があります。
% ./DIST gen
あとはリリース版のビルド/インストールと同様の手順です。