Sun Java System Web Server 7.0 管理ガイド

Web Server での FastCGI プラグインの構成

FastCGI プラグインは Web Server 7.0 にバンドルされています。このプラグインのインストール場所は次のとおりです。

32 ビットの FastCGI プラグインバイナリは、<install_dir>/plugins/fastcgi ディレクトリにインストールされます。

64 ビットの Solaris SPARC FastCGI プラグインバイナリは、<install_dir>/lib/plugins/fastcgi/64 ディレクトリにインストールされます。

インストールされる FastCGI バイナリは次のとおりです。

libfastcgi.so (Solaris/Linux 用)

fastcgi.dll (Windows 用)

Fastcgistub.exe (Windows 用)

libfastcgi.sl (HP-UX 用)

Fastcgistub (実行可能ファイル)

FastCGI プラグインを構成するには、<instance-dir>/config ディレクトリに格納されている Web Server 構成ファイルを使用します。FastCGI プラグインを構成するには、次の手順を実行します。

magnus.conf の変更

「load-modules」Init 関数を使って FastCGI プラグインの共有ライブラリを読み込みます。

Init fn=flex-init access="access" format.access="%Ses->client.ip%
- %Req->vars.auth-user% [%SYSDATE%] \"%Req->reqpb.clf-request%\"
%Req->srvhdrs.clf-status% %Req->srvhdrs.content-length%"

Init fn="load-modules" shlib="libJava EEplugin.so" shlib_flags="(global|now)"

Init fn="load-modules" shlib="libfastcgi.so" shlib_flags="(global|now)"

MIME タイプの変更 (省略可能)

mime.types ファイルを編集して MIME マッピングを指定します。MIME タイプのマッピングの変更は、省略可能な手順です。

次に例を示します。

#--Sun Microsystems Inc. MIME Information

# Do not delete the above line. It is used to identify the file type.

#

# Copyright 2006 Sun Microsystems, Inc. All rights reserved.

# Use is subject to license terms.

#


type=application/octet-stream exts=bin

type=application/astound exts=asd,asn

...

...

type=magnus-internal/fastcgi exts=php

...

...

obj.conf の変更

obj.conf ファイルを編集し、これまでの節で説明したプラグイン SAF を使って FastCGI に固有の要求を構成します。

変更後の obj.conf ファイルの例を、次に示します。

#

# Copyright 2006 Sun Microsystems, Inc. All rights reserved.

# Use is subject to license terms.

#


# You can edit this file, but comments and formatting changes

# might be lost when you use the administration GUI or CLI.



<object name = "default">

		AuthTrans fn="match-browser" browser="*MSIE*" 
						ssl-unclean-shutdown="true"
		NameTrans fn="ntrans-Java EE" name="Java EE"
		NameTrans fn="pfx2dir" from="/mc-icons" 
						dir="/ws7/lib/icons" name="es-internal"
		NameTrans fn="assign-name" from="/fcgi/*" name="fcgi.config"

</object>

<Object name="fcgi.config">

		AuthTrans fn="auth-fastcgi" app-path="/fastcgi/apps/c/simpleAuth" 
				bind-path="localhost:2111"
		Service fn="responder-fastcgi" 
						app-path="/fastcgi_enabled_php_installation_dir/bin/php" 
				app-env="name1=abc"

</object>
...

FastCGI の SAF は、URL パターンごとに異なるオブジェクトを定義したり、SAF を異なる MIME タイプにマップしたりするなど、さまざまな方法で呼び出せます。

obj.conf の構成や構文の詳細については、『Administration Configuration File Reference Guide』を参照してください。

FastCGI プラグインのトラブルシューティング

Fastcgistub は、FastCGI アプリケーションプロセスのライフサイクルを管理するプロセスマネージャーです。Fastcgistub は、Web Server の一時ディレクトリの下の Fastcgistub.log ファイルに、自身のメッセージを記録します。エラーが発生した場合、このファイルをチェックすると問題のデバッグが容易になる可能性があります。

問題: FastCGI の要求が処理されない

可能性のある原因とその解決法は、次のとおりです。

  1. FastCGI プラグインが読み込まれているかチェックします。Web Server の起動時に次のメッセージが表示されれば、このプラグインは正常に読み込まれています。そうでない場合は、magnus.conf でプラグインライブラリへのパスをチェックします。 FCGI1000: Sun Java System Web Server 7.0 FastCGI NSAPI Plugin <ビルド情報>

  2. obj.conf で要求のマッピングが正しく指定されているかチェックします。obj.conf ファイルの詳細については、『Sun Java System Web Server Administrator's Configuration Reference File』を参照してください。

  3. エラーログにエラーメッセージが含まれていないかチェックします。

  4. スタブバイナリと FastCGI アプリケーションのアクセス権をチェックします。十分なアクセス権が与えられていない場合、プラグインはスタブまたはアプリケーションの起動に失敗します。

  5. Fastcgistub.log ファイルにスタブ側のエラーが含まれていないかチェックします。

  6. 可能であれば、FastCGI アプリケーションをスタンドアロンモードで実行し、アプリケーションが問題なく実行されるかチェックします。

ライブラリの依存関係に関するエラーがスローされた場合には、LD_LIBRARY_PATH=<依存関係のあるライブラリのパス> を値に持つ app-env パラメータとして、obj.conf 内で LD_LIBRARY_PATH を指定します。

問題: FastCGI アプリケーションが起動されない。

可能性のある原因とその解決法は、次のとおりです。

Fastcgistub.log ファイルに次のログメッセージが含まれていないかチェックします。

..
<pid> process startup failure, trying to restart
...
Even after trying <n> time(s), <application path> process failed to start...no more retries

起動が失敗する原因の 1 つとして、依存関係のあるライブラリの読み込みに失敗していることが考えられます。obj.conf ファイル内で構成されている FastCGI アプリケーションへの app-env パラメータの値として、適切なライブラリパスを指定すれば、この問題を解決できます。次に例を示します。


Service fn="responder_fastcgi" app-path="/fastcgi/c/tux-app" bind-path="localhost:2112" 
app-env="LD_LIBRARY_PATH=/tuxedo/lib"

FastCGI アプリケーションの開発

FastCGI アプリケーションの開発は、Perl、PHP、C、および Java を使って行えます。次の各節では、広く普及しているいくつかのプログラミング言語を使ってアプリケーションを開発する手順について、簡単に説明します。

ProcedureFastCGI アプリケーションの実行

  1. Web Server を停止します。

  2. Web Server を再起動します。

  3. 「fcgi」をアプリケーションルートに持つアプリケーションにアクセスします。

    例: http://localhost/fcgi/ListDir.php

FastCGI アプリケーションの構造

典型的な FastCGI アプリケーションのコードは、次の構造を持ちます。

初期化コード

応答ループの開始
		応答ループの本体
応答ループの終了

初期化コードが実行されるのは、アプリケーションの初期化時に 1 回だけです。初期化コードは通常、データベースのオープンや、テーブルまたはビットマップの値の計算など、時間のかかる処理を実行します。CGI プログラムを FastCGI プログラムに変換する場合の主なタスクは、初期化コードと、要求ごとに実行する必要のあるコードとを分離することです。

応答ループは継続的に実行され、クライアント要求が到着するのを待ちます。このループはまず、FastCGI ライブラリのルーチン FCGI_Accept を呼び出します。FCGI_Accept ルーチンは、クライアントが FastCGI アプリケーションを要求するまで、プログラムの実行をブロックします。クライアント要求が到着すると、FCGI_Accept はブロックを解除し、応答ループの本体を 1 回実行したあと再度ブロックし、別のクライアント要求の到着を待ちます。このループが終了するのは、システム管理者または Web Server が FastCGI アプリケーションを終了した場合だけです。

Perl の使用

最新の FCGI モジュールを CPAN からダウンロードしてインストールします。ActivePerl については、http://aspn.activestate.com/ASPN/Downloads/ActivePerl/PPM/Zips からモジュールをダウンロードできます。

Perl を使って FastCGI アプリケーションを記述する方法の詳細については、http://www.fastcgi.com/devkit/fastcgi-prog-guide/ch3perl.htm#3659 を参照してください

PHP の使用

PHP 4.3.0 以降、FastCGI が PHP エンジンのサポートされた構成の 1 つになりました。PHP 4.3.x 以上のエンジンを FastCGI サポートを有効にしてコンパイルするには、次のように、構成スイッチ --enable-fastcgi をビルド処理の一部として含めます。


./configure <other-options> --enable-fastcgi
gmake

コンパイルが完了すると、php バイナリが FastCGI 対応になります。

PHP バージョン 5.1.2 以前 (PHP 4.x を含む) を使用する場合は、host:port 形式の bind-path を使って FastCGI プラグインを構成するようにしてください。たとえば、bind-path = “localhost:3333”のようにします。

PHP バージョン 5.1.3 以降の場合、bind-path は省略可能になります。指定する場合は、「host:port」形式を使用しないようにしてください。文字列で表します。たとえば、bind-path = “myphpbindpath”のようにします。

C/Java の使用

FastCGI 開発キットは、FastCGI C/Java アプリケーションを開発するための API を提供します。このキットは http://www.fastcgi.com/devkit/doc/fcgi-devel-kit.htm からダウンロードできます。

ダウンロードした FastCGI 開発キットをビルドするには、次の手順を実行します。

  1. tar ファイルを展開します。このアクションにより、fcgi-devel-kit という名前の新しいディレクトリが作成されます

  2. fcgi-devel-kit ディレクトリ内で次の一連のコマンドを実行します。

    1. ./configure

    2. make

C を使って FastCGI アプリケーションを記述する方法の詳細については、http://www.fastcgi.com/devkit/doc/fcgi-devel-kit.htm#S3 を参照してください

Java を使って FastCGI アプリケーションを記述する方法の詳細については、http://www.fastcgi.com/devkit/doc/fcgi-java.htm を参照してください