CGIを使うための準備


ここでは、プロバイダのサーバーなどにユーザレベルでGaucheを インストールする際の注意点を挙げておきます。ユーザはサーバーに ログインしてシェルが使えるものとします。 また、そのサーバでの基本的なCGIのセットアップは出来るものとします。

1. ライブラリのチェック

まず、サーバーに必要なライブラリがあるかどうかを調べます。 Gauche本体は最低限のライブラリさえあればビルドできますが、 CGIとして使いたい場合、次のようなライブラリが入っていることが 望ましいでしょう。

これらのライブラリがシステムに無い場合は、自分のホーム ディレクトリの下などにインストールしておいてください。 基本的には、ソースを展開したディレクトリで、

 ./configure --prefix=$HOME
 make
 make install

で良いはずです。

2. Gaucheのビルド

Gaucheのディストリビューションをサーバーにコピーして 展開し、次のようにconfigureします。

 ./configure --prefix=$HOME --with-local=$HOME --with-iconv=$HOME --with-rpath=$HOME/lib

ここで、それぞれのオプションの役割は以下の通りです。

--prefix=$HOME

ホームディレクトリの下にGaucheをインストールします。

--with-local=$HOME

ホームディレクトリの下にインストールされた 外部ライブラリを使います。gdbmを自前でインストールした場合などに 必要です。

--with-iconv=$HOME

ホームディレクトリの下にインストールされた iconvを使います。iconvを自前でインストールした場合のみに必要です。

--with-rpath=$HOME/lib

このオプションは、ホームディレクトリ以下に インストールされた外部ライブラリを正しくダイナミックリンク できるようにします。gccでしか動作を確認していません。

続いてビルドします。

 make

goshのリンク時に、「-Wl,-rpathなんてオプション知らん」と 怒られた場合は、--with-rpathを外してconfigureしなおしてみて下さい。

ビルドが終わったらテストしときましょう。

 make test

OSによっては、いくつかのテストに失敗するかもしれません。 http://www.shiro.dreamhost.com/scheme/gauche/features-j.html#ports を参照してください。

 make install

でGaucheが$HOME/bin, $HOME/lib, $HOME/share の下にインストール されます。

3. テスト

まずはシェルから起動してちょっと遊んでみます。

 % $HOME/bin/gosh
 gosh> (use gauche.charconv)
 (#<module gauche.interactive> #<module gauche.charconv>)
 gosh>

(use gauche.charconv)が使えるかどうかは重要です。 ここで、「libiconv.soが見つからないよん」などと言われて しまった場合、ダイナミックリンクローダがiconvライブラリを 見つけられていません。普通、LD_LIBRARY_PATHとかLD_RUN_PATH などの環境変数を設定する必要があります。 (--with-rpath configure オプションが使えていればこの エラーは出ないはずです)。 man rldとかman ld.soとかを見て調べてください。

ただ問題は、シェルから起動してそれらの環境変数を設定して 動いたとしても、CGIとしてWebサーバから起動された場合に やはり環境変数が設定されずに動作しない可能性があることです。 Webサーバによっては、.htaccessファイルなどでそのディレクトリ内の CGIプログラムの起動の際の環境変数を設定できるようにしてある かもしれません。プロバイダに尋ねてみてください。

--with-rpath が使えず、CGIの実行時の環境変数も設定できない場合は、 一度シェルスクリプトを起動してそこからSchemeスクリプトをキックする というようなトリックが必要になるでしょう。

次に、簡単なcgiを動かしてみます。たとえばこんなの。

 #!/home/shiro/bin/gosh
 (display "Content-type: text/plain\r\n\r\nHello, world.\r\n")

/home/shiro/binのところは自分のパスに変えといて下さい。 これに実行権限を出して、Webブラウザからアクセスして

  Hello, world

というページが出れば成功です。


Last modified : 2002/12/19 05:22:51 UTC