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を動かしてみましょう。
サイトバンドルを作成する。
まずはサイトバンドルを作ります。 $HOME/workに移って、kahua-package create を実行します。サイト名 は site とでもしておきましょう。
% cd ~/work % kahua-package create site %
ちゃんと中身ができているか見てみましょう。
% find site site site/app site/app-servers site/database site/etc site/etc/kahua.conf site/etc/user.conf site/logs site/plugins site/run site/socket site/static site/templates site/tmp %
次に、このサイトバンドルに対してkahua-spvrを起動してみます。 まずはコマンドラインオプションからサイトバンドルを指定して みましょう。
% kahua-spvr -S ~/work/site -H localhost:8088
これで http://localhost:8088/ にWebブラウザでアクセスして みましょう。
404 Not Found The requested URL / was not found on this server.
という画面が表示されれば成功です。まだ何のアプリケーション も登録、起動していないため、この画面が出るのです。端末に 戻って Ctrl-C で kahua-spvr を中断しましょう。
それでは、このサイトバンドルをデフォルトにすべく、 環境変数を設定します。
% KAHUA_DEFAULT_SITE=$HOME/work/site; export KAHUA_DEFAULT_SITE
この設定を $HOME/.profile あたりに書いておけば、次回以降 ログインした時、自動的に $HOME/work/site がデフォルトのサイト バンドルとして扱われます。
% kahua-spvr -H localhost:8088
ブラウザでアクセスすると、先ほどと同じ画面が見えるはずです。 今度はこのままkahua-spvrを起動しておきましょう。別の端末を 起動して、以降の作業はそちらで行います。
アプリケーションのスケルトンを生成する
今作り上げたサイトバンドルに、0からアプリケーションコードを 書いていくこともできますが、ここでは kahua-package generate コマンドを使って、アプリケーションのスケルトン(骨組み)を 生成してみましょう。このチュートリアルでは、共有ブックマーク アプリケーションを作るつもりなので、名前はbookmarksとします。
% kahua-package generate bookmarks Creator Name> Tatsuya BIZENN E-Mail Address> bizenn@example.org %
どんなものが生成されているのか、ちょっと覗いてみましょう。
% find bookmarks bookmarks bookmarks/bookmarks bookmarks/bookmarks/bookmarks.css bookmarks/bookmarks/bookmarks.kahua bookmarks/bookmarks/version.kahua.in bookmarks/test bookmarks/test/test.conf.in bookmarks/test/test.scm.in bookmarks/plugins bookmarks/plugins/bookmarks.scm bookmarks/templates bookmarks/templates/page.xml bookmarks/AUTHORS bookmarks/ChangeLog bookmarks/DIST bookmarks/DIST_EXCLUDE bookmarks/INSTALL bookmarks/Makefile.in bookmarks/README bookmarks/MESSAGES bookmarks/app-servers bookmarks/configure.ac bookmarks/install-sh bookmarks/bookmarks-start.in bookmarks/bookmarks-stop.in bookmarks/bookmarks.conf.in bookmarks/COPYING %
ずいぶんどっさりと生成されています。これは、単独で配布可能な アプリケーションのスケルトンとなるように意図しているためです。
さて、このアプリケーションは、すでにそのままインストールして 実行可能なコードになっています。先ほどのサイトバンドルに インストールして動かしてみましょう。例によって適当に折り返しています。
% ./DIST gen %
まず、DISTはユーティリティスクリプトで、./DIST gen でconfigure.ac からconfigureを生成します。ここでautoconfが呼ばれているわけです。
% ./configure --prefix=/usr/local/kahua --with-site-bundle=$HOME/work/site checking for gosh... /usr/local/bin/gosh checking for kahua-install... /usr/local/kahua/bin/kahua-install checking for a BSD-compatible install... /usr/bin/install -c configure: creating ./config.status config.status: creating Makefile
生成したconfigureを起動してビルドの準備をします。--prefixには Kahuaをインストールする際にconfigureに渡したのと同じ値を渡します。 --with-site-bundleには、インストール先となる先ほど作成したサイト バンドルのパスを指定します。
% make
sed -e "s@##GOSH##@/usr/local/bin/gosh@" -e "s@##PLUGINS##@@" \
-e "s@##KAHUA_WORKING##@/usr/local/kahua/var/kahua@" \
-e "s@##KAHUA_LIB##@/usr/local/kahua/lib/kahua@" \
-e "s@##BOOKMARKS_VERSION##@0.0.0@" test/test.scm.in > test/test.scm
sed -e "s@###BOOKMARKS_INPLACE###@/home/bizenn/work/bookmarks@" bookmarks-start.in > bookmarks-start
chmod +x bookmarks-start
sed -e "s@###BOOKMARKS_INPLACE###@/home/bizenn/work/bookmarks@" bookmarks-stop.in > bookmarks-stop
chmod +x bookmarks-stop
sed -e "s@###BOOKMARKS_INPLACE_SOCKETBASE###@/home/bizenn/work/bookmarks/tmp@" \
-e "s@###BOOKMARKS_INPLACE_WORKING###@/home/bizenn/work/bookmarks@" \
-e "s@###BOOKMARKS_INPLACE_DOCPATH###@/home/bizenn/work/bookmarks@" bookmarks.conf.in > bookmarks.conf
rm -rf tmp
mkdir tmp
test -L checkout || ln -s . checkout
% make check
rm -rf tmp
mkdir tmp
test -L checkout || ln -s . checkout
rm -f test/test.log
cd test; /usr/local/bin/gosh -I/usr/local/kahua/lib/kahua ./test.scm > test.log
Testing bookmarks ... passed.
%
普通にmakeしてmake checkします。あとはインストールするだけ。 インストールは、サイトバンドルを作成したのと同じユーザで 行わなければなりません。
% make install
/usr/local/kahua/bin/kahua-install -S /home/bizenn/work/site -t script bookmarks/bookmarks.kahua bookmarks/version.kahua
/usr/local/kahua/bin/kahua-install -S /home/bizenn/work/site -t script --no-overwrite
/usr/local/kahua/bin/kahua-install -S /home/bizenn/work/site -t static --no-overwrite bookmarks/bookmarks.css
/usr/local/kahua/bin/kahua-install -S /home/bizenn/work/site -t plugin -r bookmarks.scm \
plugins/bookmarks.scm
for f in ; do \
/usr/local/kahua/bin/kahua-install -S /home/bizenn/work/site -t plugin -r $f plugins/$f;\
done
mkdir -p /usr/local/kahua/bin
for f in page.xml; do \
/usr/local/kahua/bin/kahua-install -S /home/bizenn/work/site -t template -r bookmarks/$f templates/$f;\
done
================================================================================
Please edit app-servers in the Kahua working directory to add
"bookmarks" entry.
(bookmarks :arguments () :run-by-default 1)
================================================================================
最後のメッセージに注目してください。これは、アプリケーションbookmarksを 有効にするためには、まだ作業が必要なことを示しています。
まず、$HOME/work/site/app-servers を開きます。そして、
(bookmarks :arguments () :run-by-default 1)
のエントリをそこに書き込みます。こんな具合になるはずです。
;; -*-scheme-*- ;; Application Service Configuration alist. ;; (;;Each entry follow this format: ;;(<type> :arguments (<arg> ...) :run-by-default <num> ;; :profile <path-to-profile-base> ;; :default-database-name <path-to-database>) (bookmarks :arguments () :run-by-default 1) )
保存したら、kahua-adminコマンドを起動してapp-serversファイルを reloadコマンドで再読み込みします。
spvr> ls wno pid type since wid spvr> reload (bookmarks) spvr>
どきどきしながらブラウザで http://localhost:8088/ にアクセス してみます。「Hello Kahua」が表示されましたか? 表示されたら、 「version」リンクをつついてみましょう。「bookmarks: version 0.0.0」 と表示されたら、bookmarkアプリケーションは正常に動作しています。
EmacsからKahuaにつなぐ
せっかくEmacsに連携のためのコードをインストールしたのですから、 EmacsからKahuaに(そしてbookmarks)につないで制御してみましょう。
まず、Emacsに使うべきサイトバンドルを教えてやる必要があります。コマンド ラインからEmacsを起動しているのなら環境変数がそのまま引き継がれますが、 そうでない場合にも使えるよう、.emacsに以下のフォームを追加します。追加 する箇所は (require 'kahua) よりも後ろにしてください。
(setq kahua-site-bundle (expand-file-name "~/work/site"))
第3回Kahuaセミナーではcustom-set-variablesを使っていましたが、 こちらの方がシンプルでわかりやすいでしょう。expand-file-nameは、「~」を ホームディレクトリに展開するための関数です。これでEmacsを再起動すれば、 $HOME/work/site をデフォルトのサイトバンドルとして使用するようになります。
kahua-adminを使う
Emacsを再起動したら、まずはM-x run-kahuaでkahua-adminを使ってみましょう
spvr> ls wno pid type since wid 0 15469 bookmarks Jan 23 18:30 bxp:3v9qg spvr>
Emacsからkahua-adminを使うメリットはたくさんありますが、特にヒストリ とヒストリサーチは便利です。
M-p --> ヒストリを遡る M-n --> ヒストリを進む M-r --> ヒストリを検索する
さて、このサイトバンドルは新たに作成したものなので開発ユーザがまだ ありません。kahua-shellを使うのには必要になりますので登録しておきま しょう。
spvr> adduser gon hogehoge
done
spvr> lsuser
("gon")
spvr>
bizennがユーザ名、hogehogeがパスワードです。
kahua-shellを使う
さらに便利なのがkahua-shellです。M-x run-kahua-shellで kahua-shellをEmacs内で起動します。すると、ミニバッファ内に
hostname:
というプロンプトが出ます。これはssh経由でリモートのKahuaに接続 する際に指定するものですから、今回は単にEnterキーを押します。
Welcome to Kahua. username: gon password: ;; <- パスワードhogehogeを入力する wno type since wid 0 bookmarks Jan 23 18:30 bxp:3v9qg select wno> ;; <- 0を入力する bookmarks(bxp:3v9qg)>
これで、bookmarksのワーカプロセスに接続してREPLが使える状態に なっています。
bookmarks(bxp:3v9qg)> (+ 1 2 3) 6 bookmarks(bxp:3v9qg)> greeting #<closure #<identifier kahua.server#x>> bookmarks(bxp:3v9qg)> version #<closure #<identifier kahua.server#x>> bookmarks(bxp:3v9qg)>
ここから、いよいよこのbookmarksアプリケーションをソーシャル ブックマークに仕立て上げていきますが、その前に、Kahuaの アプリケーションの概要を把握しておきましょう。