Sun ONE ロゴ     前へ      目次      索引      次へ     
Sun ONE Application Server 7 Web アプリケーション開発者ガイド



CGI の使用法

CGI (Common Gateway Interface) プログラムは、サーバー上で動作し、要求を送信したクライアントへ返す応答を生成します。CGI プログラムは、C、C++、Perl、シェルスクリプトなどいくつかの言語で作成できます。CGI プログラムは、URL を呼び出すことにより起動します。

CGI プログラムの作成については数多くの情報があります。最初に次の Web サイトの「The Common Gateway Interface」を参照することをお勧めします。

http://hoohoo.ncsa.uiuc.edu/cgi/overview.html

Sun ONE Application Server は、CGI バージョン 1.1 仕様に準拠しています。

サーバーは CGI スクリプトやプログラムを実行するたびにプロセスを起動するため、サーバーのプログラミング手法としてはコストが高くなります。

CGI スクリプトのセキュリティは、サーバーのセキュリティ設定次第です。詳細については、「SHTML と CGI のセキュリティ」および『Sun ONE Application Server セキュリティ管理者ガイド』を参照してください。

このmoduleでは、次のトピックについて説明します。

CGI と J2EE Web アプリケーション

Sun ONE Application Server では、CGI プログラムと J2EE Web アプリケーションの相互運用はできません。特に、次の点に注意してください。

  • CGI プログラムを Web アプリケーションのコンテキストルートに置かない
  • CGI プログラムの出力をサーブレットや JSP に取り込まない
  • CGI プログラムへサーブレットや JSP から要求を転送しない
  • J2EE の security-constraint 機能や filter-mapping 機能は、CGI プログラムには適用できない

CGI の有効化

Sun ONE Application Server では、次の方法で CGI プログラムを識別できます。

CGI 用ディレクトリを指定する

CGI プログラムだけを格納する、CGI 専用のディレクトリを指定するには、次の手順を実行します。

  1. 使用中のコンピュータ上に CGI ディレクトリを作成します。このディレクトリは、ドキュメントルートディレクトリのサブディレクトリ以外でもかまいません。手順 7 で URL プレフィックスを指定するのはこのためです。
  2. 管理インタフェースで、サーバーインスタンスの下の HTTP サーバーコンポーネントを開きます。
  3. 「仮想サーバー」ページに移動します。
  4. CGI ディレクトリを指定する仮想サーバーの名前をクリックします。
  5. 「CGI」タブをクリックします。
  6. 「CGI ディレクトリ」オプションをクリックします。
  7. このディレクトリに対して使用する URL プレフィックスを「URL プレフィックス」フィールドに入力します。つまり、ここに入力したテキストは、CGI プログラム用のディレクトリとして URL に表示されます。
  8. たとえば、URL プレフィックスとして「cgi-bin」と入力すると、これらの CGI プログラムを指す URL はすべて次のような形式になります。

    http://yourserver.domain.com/cgi-bin/program-name



    ここで指定する URL プレフィックスは、前の手順で指定した実際の CGI 用ディレクトリとは同じでなくてもかまいません。



  9. ディレクトリの場所を示す絶対パスを「CGI ディレクトリ」テキストフィールドに入力します。
  10. 「了解」ボタンをクリックします。
  11. サーバーインスタンスページに移動し、「変更の適用」ボタンを選択します。

サーバーは、これらのディレクトリにあるすべてのファイルを CGI プログラムとして扱います。

既存の CGI 用ディレクトリを削除するには、「CGI ディレクトリ」ページでそのディレクトリの「削除」ボタンをクリックします。既存のディレクトリの URL プレフィックスや CGI 用ディレクトリを変更するには、そのディレクトリの「編集」ボタンをクリックします。

指定したディレクトリに CGI プログラムをコピーします。CGI 用ディレクトリにあるファイルはすべて CGI プログラムとして処理されるため、CGI 用ディレクトリに HTML ファイルを置かないでください。

obj.conf ファイルには、各 CGI 用ディレクトリに対応する NameTrans 指令があります。この指令は、そのディレクトリ内のリソースに対する各要求に cgi という名前を関連付けます。これらの指令は、管理インタフェースで CGI 用ディレクトリを指定すると自動的に obj.conf に追加されます。必要に応じて、指令を obj.conf に手動で追加することもできます。

たとえば、次の命令は、http://server-name/cgi-local にあるリソースに対する要求はすべて、C:/SunServer/docs/mycgi ディレクトリにある CGI プログラムを呼び出す要求として解釈されます。

NameTrans fn="pfx2dir" from="/cgi-local" dir="C:/SunServer/docs/mycgi" name="cgi"

obj.conf ファイルには、次の名前付きのオブジェクトが必要です。


<Object name="cgi">
ObjectType fn="force-type" type="magnus-internal/cgi"
Service fn="send-cgi"
</Object>

このオブジェクトを obj.conf から削除しないでください。このオブジェクトを削除すると、管理インタフェースで CGI 用ディレクトリを指定したり、NameTrans 指令を obj.conf に手動で追加したりしても、サーバーは CGI 用ディレクトリを認識しなくなります。

CGI ファイル拡張子を指定する

ファイルがどのディレクトリに置かれていても、特定の拡張子を持つすべてのファイルをサーバーが CGI プログラムとして扱うようにするには、次の手順を実行します。

  1. 管理インタフェースで、サーバーインスタンスの下の HTTP Server コンポーネントを開きます。
  2. 「Virtual Servers」ページに移動します。
  3. CGI ファイルタイプを指定する仮想サーバーの名前をクリックします。
  4. 「CGI」タブをクリックします。
  5. 「CGI File Type」オプションをクリックします。
  6. この変更を適用するリソースを「Editing picker」から選択します。
  7. 「ファイルの種類として CGI を有効」の下の「はい」ラジオボタンをクリックします。
  8. 「了解」ボタンをクリックします。
  9. サーバーインスタンスページに移動し、「変更の適用」ボタンを選択します。

デフォルトの CGI 拡張子は、.cgi.bat、および .exe です。

CGI プログラムを表す拡張子を変更するには、mime.types 内の次の行を編集して、目的の拡張子を指定します。mime.types を編集した後は、必ずサーバーを再起動してください。

type=magnus-internal/cgi exts=cgi,exe,bat

適切な拡張子を持ったファイルをすべて CGI プログラムとして扱うようにサーバーに指示した場合、obj.conf ファイルには次の Service 指令が追加されます。

Service fn="send-cgi" type="magnus-internal/cgi"

CGI プログラムのカスタム実行環境の作成 (UNIX のみ)

カスタム実行環境を作成するには、ルートユーザーとして suid Cgistub をインストールして実行する必要があります。

  1. スーパーユーザーとしてログインします。
  2. su

  3. Cgistub 用に private ディレクトリを作成します。
  4. cd instance_dir

    mkdir private

  5. Cgistubprivate ディレクトリにコピーします。
  6. cd private

    cp install_dir/lib/Cgistub

  7. サーバーユーザーを private の所有者に設定します。
  8. chown username

  9. private にアクセス権を設定します。
  10. chmod 500 .

  11. ルートを Cgistub の所有者に設定します。
  12. chown root Cgistub

  13. Cgistub にアクセス権を設定します。
  14. chmod 4711 Cgistub

  15. obj.conf 内の send-cgi 関数 への各参照に user パラメータを指定します。次に例を示します。
  16. Service fn="send-cgi" user="username"

    変数置換も使用できます。たとえば、server.xml で、virtual-server 要素に次の property サブ要素を指定します。

    <property name="user" value="username"/>

    これにより、obj.confsend-cgi 関数行を次のように記述できます。

    Service fn="send-cgi" user="$user"

    send-cgiobj.conf の詳細については、『Sun ONE Application Server Developer's Guide to NSAPI』を参照してください。server.xml の詳細については、『Sun ONE Application Server Sun ONE Application Server 管理者用設定ファイルリファレンス』を参照してください。

  17. これらの変更を有効にするためにサーバーを再起動します。


  18. Cgistubinstance_dir/private ディレクトリにインストールすることをお勧めします。ほかの場所にインストールする場合は、Cgistub へのパスを init.conf 内の init-cgi 関数に指定する必要があります。詳細については、『Sun ONE Application Server Developer's Guide to NSAPI』を参照してください。





    NFS マウントには suid Cgistub プログラムをインストールできないことがあります。suid Cgistub を使用するには、サーバーインスタンスをローカルファイルシステムにインストールする必要があります。



Cgistub は、次のセキュリティ制限を適用します。

  • CGI プログラムを実行するユーザーの uid は 100 以上であること。この制限は、第三者が Cgistub を使って root アクセス権を取得することを防止する
  • CGI プログラムを実行するユーザーはその所有者であること。また、所有者以外が CGI プログラムを書き換えることはできない。この制限は、第三者が密かにプログラムを挿入し、リモートで実行することを困難にする
  • Cgistub は、UNIX 待機ソケットを作成してアクセス権 0700 を設定する


  • SunOS/Solaris の現在のバージョンも含む UNIX 系環境の多くで、ソケットのアクセス権は考慮されません。悪意のあるユーザーが Cgistub を利用できないようにするには、init.conf TempDir ディレクティブを使って、サーバーの一時ディレクトリをサーバーユーザーだけがアクセスできるディレクトリに変更します。詳細については、『Sun ONE Application Server 管理者用設定ファイルリファレンス』を参照してください。



Cgistub のインストールを完了したら、次の方法でカスタム実行環境を作成できます。

仮想サーバーに一意の CGI 用ディレクトリと UNIX ユーザーおよびグループを指定する

仮想サーバーの CGI プログラムがほかのユーザーと干渉しないようにするには、プログラムを一意のディレクトリに保存し、一意の UNIX ユーザーおよびグループの権限を使って実行されるようにする必要があります。

最初に、UNIX ユーザーおよびグループを作成します。ユーザーおよびグループの詳細な作成手順は、オペレーティングシステムによって異なります。詳細については、オペレーティングシステムのマニュアルを参照してください。

次に、仮想サーバーの cgi-bin ディレクトリを次の手順で作成します。

  1. スーパーユーザーとしてログインします。
  2. su

  3. 仮想サーバーのディレクトリに移動します。
  4. cd vs_dir

  5. cgi-bin ディレクトリを作成します。
  6. mkdir cgi-bin

    chown user:group cgi-bin

    chmod 755 cgi-bin

仮想サーバーの CGI 用ディレクトリ、ユーザーおよびグループを次のいずれかの方法で設定します。

  • obj.conf ファイル内の send-cgi 関数のパラメータ diruser、および group を使用する。詳細については、『Sun ONE Application Server Developer's Guide to NSAPI』を参照
  • 管理インタフェースを使って、次の手順でこの情報を入力する
    1. サーバーインスタンスの下の HTTP サーバーコンポーネントを開きます。
    2. 「仮想サーバー」ページに移動します。
    3. CGI ディレクトリを指定する仮想サーバーの名前をクリックします。
    4. 「一般」タブをクリックします。
    5. 「ディレクトリ」、「ユーザー」、および「グループ」の各フィールドに値を入力します。
    6. 「保存」ボタンをクリックします。
    7. サーバーインスタンスページに移動し、「変更の適用」ボタンを選択します。

    詳細については、『Sun ONE Application Server 管理者ガイド』を参照してください。

仮想サーバーディレクトリを chroot で指定する

セキュリティ向上のために、仮想サーバーディレクトリの上位および外部にあるデータに CGI スクリプトがアクセスできないようにする必要があります。

最初に、chroot 環境を設定します。chroot 環境の詳細な設定手順は、オペレーティングシステムによって異なります。詳細については、オペレーティングシステムのマニュアルを参照してください。最初に、ftpdchroot のマニュアルページを参照することをお勧めします。

Solaris バージョン 2.6 から 8 での手順は次のとおりです。

  1. スーパーユーザーとしてログインします。
  2. su

  3. chroot ディレクトリに移動します。通常、このディレクトリは前節で説明した vs_dir ディレクトリです。
  4. cd chroot

  5. chroot ディレクトリに tmp を作成します。
  6. mkdir tmp

    chmod 1777 tmp

  7. chroot ディレクトリに dev を作成します。
  8. mkdir dev

    chmod 755 dev

  9. /dev/tcp の内容を一覧表示し、出力結果のメジャー番号とマイナー番号を書き留めます。この例では、メジャー番号は 11、マイナー番号は 42 です。
  10. ls -lL /dev/tcp

    crw-rw-rw-   1 root     sys       11, 42 Apr  9  1998 /dev/tcp

  11. メジャー番号とマイナー番号を使って tcp デバイスを作成します。
  12. mknod dev/tcp c 11 42

    chmod 666 dev/tcp

  13. 次の各デバイスについて手順 5 と 6 を繰り返します (デバイスごとにメジャー番号とマイナー番号は異なります)。
  14. /dev/udp
    /dev/ip
    /dev/kmem
    /dev/kstat
    /dev/ksyms
    /dev/mem
    /dev/null
    /dev/stderr
    /dev/stdin
    /dev/stdout
    /dev/ticotsord
    /dev/zero

  15. chroot ディレクトリの dev にあるデバイスにアクセス権を設定します。
  16. chmod 666 dev/*

  17. chroot ディレクトリに libusr/lib を作成し、内容を設定します。
  18. mkdir usr

    mkdir usr/lib

    ln -s /usr/lib

    ln /usr/lib/* usr/lib

    このコマンドで生成されるメッセージは無視してかまいません。

    /usr/lib ディレクトリが別のファイルシステムにある場合は、最後のコマンドを次のように置き換えます。

    cp -rf /usr/lib/* usr/lib

  19. chroot ディレクトリに binusr/bin を作成し、内容を設定します。
  20. mkdir usr/bin

    ln -s /usr/bin

    ln /usr/bin/* usr/bin

    このコマンドで生成されるメッセージは無視してかまいません。

    /usr/bin ディレクトリが別のファイルシステムにある場合は、最後のコマンドを次のように置き換えます。

    cp -rf /usr/bin/* usr/bin

  21. chroot ディレクトリに etc 作成し、内容を設定します。
  22. mkdir etc

    ln /etc/passwd /etc/group /etc/netconfig etc

  23. chroot 環境をテストします。
  24. chroot chroot bin/ls -l

    出力結果の例を次に示します。

       total 14
       lrwxrwxrwx    1 root    other     8 Jan 13 03:32 bin -> /usr/bin
       drwxr-xr-x    2 user     group      512 Jan 13 03:42 cgi-bin
       drwxr-xr-x    2 root    other     512 Jan 13 03:28 dev
       drwxr-xr-x    2 user     group      512 Jan 13 03:26 docs
       drwxr-xr-x    2 root    other     512 Jan 13 03:33 etc
       lrwxrwxrwx    1 root    other     8 Jan 13 03:30 lib -> /usr/lib
       drwxr-xr-x    4 root    other     512 Jan 13 03:32 usr

仮想サーバーの chroot ディレクトリを次のいずれかの方法で設定します。

  • obj.conf ファイル内の send-cgi 関数の chroot パラメータを使用する。詳細については、『Sun ONE Application Server Developer's Guide to NSAPI』を参照
  • 管理インタフェースを使って、次の手順でこの情報を入力する
    1. サーバーインスタンスの下の HTTP サーバーコンポーネントを開きます。
    2. 「仮想サーバー」ページに移動します。
    3. CGI ディレクトリを指定する仮想サーバーの名前をクリックします。
    4. 「一般」タブをクリックします。
    5. 「ディレクトリ変更」フィールドに値を入力します。
    6. 「保存」ボタンをクリックします。
    7. サーバーインスタンスページに移動し、「変更の適用」ボタンを選択します。

    詳細については、『Sun ONE Application Server 管理者ガイド』を参照してください。

CGI プログラムをサーバーに追加

CGI プログラムを Sun ONE Application Server に追加するには、次のいずれかの手順を実行します。

  • CGI 用ディレクトリを作成した場合は、その中にプログラムファイルをドラッグ&ドロップします。
  • CGI プログラムをファイルタイプで認識するように設定した場合は、サーバーが CGI プログラムとして認識できるようなファイル名で、ドキュメントルートまたはその下のディレクトリに格納します。

UNIX の場合は、このプログラムファイルのアクセス権に実行権が必要です。

CGI プログラムの優先度の設定

CGI プログラムの優先度を設定するには、次の手順を実行します。

  1. 管理インタフェースで、サーバーインスタンスの下の HTTP サーバーコンポーネントを開きます。
  2. 「仮想サーバー」ページに移動します。
  3. CGI ディレクトリを指定する仮想サーバーの名前をクリックします。
  4. 「一般」タブをクリックします。
  5. 「優先順位」フィールドに値を入力します。この増分値によって、サーバーに対する CGI プログラムの優先度が決まります。通常、サーバーは nice 値 0 で動作しており、CGI の nice 増分値は 0 から 19 の範囲で指定します。0 を指定すると CGI プログラムはサーバーと同じ優先度で動作し、19 を指定すると CGI プログラムはサーバーよりもかなり低い優先度で動作します。nice 増分値として -1 を指定することで CGI プログラムの優先度をサーバーより高くすることも可能ですが、お勧めできません。
  6. 「保存」ボタンをクリックします。
  7. サーバーインスタンスページに移動し、「変更の適用」ボタンを選択します。

詳細については、『Sun ONE Application Server 管理者ガイド』を参照してください。

Windows CGI プログラム

この節では、Windows CGI プログラムのインストール方法について説明します。この節では次のトピックについて説明します。

Windows CGI プログラムの概要

Windows CGI プログラムはその他の CGI プログラムと同様に処理されます。Windows CGI プログラムだけが格納されているディレクトリを指定して、すべての Windows CGI プログラムに同じファイル拡張子を指定するか、またはそのいずれかの処理を行います。

Windows CGI プログラムは通常の CGI プログラムと同様に動作しますが、サーバーによる実際の処理方法は若干異なります。このため、Windows CGI プログラムには異なったディレクトリを指定する必要があります。Windows CGI ファイルタイプを有効にした場合、ファイル拡張子 .wcg が使用されます。

Sun ONE Application Server は、非公式の Windows CGI 1.3a 仕様をサポートします。この仕様には次の特徴があります。

  • セキュリティメソッドをサポートするため、[CGI] セクションに次のキーワードが追加される
    • HTTPS: トランザクションが SSL によって処理されるかどうかによって on または off の値をとる
    • HTTPS キーサイズ : HTTPS が有効になっている場合、この値によって暗号化に使用されるセッションキー内のビット数が報告される
    • HTTPS 秘密キーサイズ : HTTPS が有効になっている場合、この値によってサーバーの秘密鍵の生成に使用されるビット数が報告される

  • [CGI] セクション内のキーワード Document Root は、サーバーが単一のドキュメントルートを持たない場合、ドキュメントルートを参照しない可能性があります。この変数には、Windows CGI プログラムのルートディレクトリが返されます。
  • [CGI] セクション内のキーワード Server Admin はサポートされていません。
  • [CGI] セクション内のキーワード Authentication Realm はサポートされません。
  • マルチパートフォームデータエンコーディングでのフォーム送信はサポートされません。

Windows CGI ディレクトリの指定

WinCGI プログラムのみを格納するディレクトリを指定するには、次の手順を実行します。

  1. 使用中のコンピュータ上に Windows CGI ディレクトリを作成します。このディレクトリは、ドキュメントルートディレクトリのサブディレクトリ以外でもかまいません。手順 7 で URL プレフィックスを指定するのはこのためです。
  2. 管理インタフェースで、サーバーインスタンスの下の HTTP サーバーコンポーネントを開きます。
  3. 「仮想サーバー」ページに移動します。
  4. Windows CGI ディレクトリを指定する仮想サーバーの名前をクリックします。
  5. 「CGI」タブをクリックします。
  6. 「WINCGI ディレクトリ」オプションをクリックします。
  7. このディレクトリに対して使用する URL プレフィックスを「URL プレフィックス」フィールドに入力します。つまり、ここに入力したテキストは、CGI プログラム用のディレクトリとして URL に表示されます。
  8. たとえば、URL プレフィックスとして「cgi-bin」と入力すると、これらの CGI プログラムを指す URL はすべて次のような形式になります。

    http://yourserver.domain.com/cgi-bin/program-name



    ここで指定する URL プレフィックスは、前の手順で指定した実際の CGI 用ディレクトリとは同じでなくてもかまいません。



  9. ディレクトリの場所を示す絶対パスを「WINCGI ディレクトリ」テキストフィールドに入力します。
  10. スクリプトの追跡を有効にするには、「はい」ラジオボタンを選択します。
  11. 「了解」ボタンをクリックします。
  12. サーバーインスタンスページに移動し、「変更の適用」ボタンを選択します。

既存の Windows CGI 用ディレクトリを削除するには、「WINCGI ディレクトリ」ページでそのディレクトリの「削除」ボタンをクリックします。既存のディレクトリの URL プレフィックスや Windows CGI 用ディレクトリを変更するには、そのディレクトリの「編集」ボタンをクリックします。

指定したディレクトリに Windows CGI プログラムをコピーします。このディレクトリ内のすべてのファイルは Windows CGI ファイルとして処理される点に注意してください。

Windows CGI をファイルタイプで指定

Windows CGI ファイルのファイル拡張子を指定するには、次の手順を実行します。

  1. 管理インタフェースで、サーバーインスタンスの下の HTTP サーバーコンポーネントを開きます。
  2. 「仮想サーバー」ページに移動します。
  3. Windows CGI ファイルタイプを指定する仮想サーバーの名前をクリックします。
  4. 仮想サーバーの MIME タイプファイルの名前を書き留めます。
  5. 「MIME タイプファイル」ページに移動します。
  6. 手順 4 で書き留めた名前に一致する名前をクリックします。
  7. 「MIME タイプ...」ボタンをクリックします。
  8. 次の設定の新しい MIME タイプを追加します。
    • Category: type
    • Content-type: magnus-internal/wincgi
    • File Suffix: サーバーを Windows CGI に関連付けるファイルサフィックスを入力します。CGI、WinCGI、シェル CGI の各ファイルタイプを有効にした場合、それぞれの CGI に異なったサフィックスを指定する必要があります。たとえば、CGI プログラムとシェル CGI プログラムの両方に .exe というサフィックスを指定することはできません。一意のサフィックスになるように、必要に応じてページ上のその他の MIME タイプフィールドを編集することもできます。

  9. 「新規タイプ」ボタンをクリックします。
  10. サーバーインスタンスページに移動し、「変更の適用」ボタンを選択します。

Windows のシェル CGI プログラム

この節では、Windows のシェル CGI プログラムのインストール方法について説明します。この節では次のトピックについて説明します。

Windows のシェル CGI プログラムの概要

シェル CGI は、Windows 内にファイルの関連付けを設定することによって CGI アプリケーションを実行するサーバー設定です。

たとえば、hello.pl というシェル CGI ファイルの要求を取得した場合、サーバーは Windows のファイルの関連付けにより、.pl 拡張子に関連付けられたプログラムを使ってファイルを実行します。.pl 拡張子が C:¥bin¥perl.exe というプログラムに関連付けられている場合、サーバーは次の手順で hello.pl ファイルの実行を試みます。

c:¥bin¥perl.exe hello.pl

シェル CGI の設定方法としては、サーバーのドキュメントルートに、シェル CGI ファイルだけが格納されたディレクトリを作成する方法が最も簡単です。ただし、Sun ONE Application Server の MIME タイプを編集して、シェル CGI と特定のファイル拡張子を関連付けるようにサーバーを設定することもできます。



Windows ファイル拡張子の設定方法については、Windows のマニュアルを参照してください。



シェル CGI ディレクトリの指定 (Windows の場合)

シェル CGI プログラムだけを格納する専用ディレクトリを指定するには、次の手順を実行します。

  1. 使用中のコンピュータ上にシェル CGI ディレクトリを作成します。このディレクトリは、ドキュメントルートディレクトリのサブディレクトリ以外でもかまいません。手順 7 で URL プレフィックスを指定するのはこのためです。
  2. 管理インタフェースで、サーバーインスタンスの下の HTTP サーバーコンポーネントを開きます。
  3. 「仮想サーバー」ページに移動します。
  4. シェル CGI ディレクトリを指定する仮想サーバーの名前をクリックします。
  5. 「CGI」タブをクリックします。
  6. 「シェル CGI ディレクトリ」オプションをクリックします。
  7. このディレクトリに対して使用する URL プレフィックスを「URL プレフィックス」フィールドに入力します。つまり、ここに入力したテキストは、CGI プログラム用のディレクトリとして URL に表示されます。
  8. たとえば、URL プレフィックスとして「cgi-bin」と入力すると、これらの CGI プログラムを指す URL はすべて次のような形式になります。

    http://yourserver.domain.com/cgi-bin/program-name



    ここで指定する URL プレフィックスは、前の手順で指定した実際の CGI 用ディレクトリとは同じでなくてもかまいません。



  9. ディレクトリの場所を示す絶対パスを「シェル CGI ディレクトリ」テキストフィールドに入力します。
  10. 「了解」ボタンをクリックします。
  11. サーバーインスタンスページに移動し、「変更の適用」ボタンを選択します。
  12. シェル CGI ディレクトリ内のすべてのファイルが Windows に設定されているファイルの関連付けを持っていることを確認します。関連付けのないファイル拡張子を持ったファイルを実行しようとすると、サーバーはエラーを返します。


  13. 警告

    サーバーには、シェル CGI ディレクトリに対する読み込み権限と実行権限が必要です。Windows の場合、サーバーを実行するユーザーアカウント (LocalSystem など) に、シェル CGI ディレクトリ内のプログラムを読み込み、実行する権限を付与する必要があります。



既存のシェル CGI ディレクトリを削除するには、「シェル CGI ディレクトリ」ページでそのディレクトリの「削除」ボタンをクリックします。既存のディレクトリの URL プレフィックスやシェル CGI ディレクトリを変更するには、そのディレクトリの「編集」ボタンをクリックします。

指定したディレクトリにシェル CGI プログラムをコピーします。このディレクトリ内のすべてのファイルはシェル CGI ファイルとして処理される点に注意してください。

シェル CGI をファイルタイプで指定 (Windows の場合)

Sun ONE Application Server の mime.types ファイルを使って、ファイル拡張子とシェル CGI 機能を関連付けることができます。この関連付けは、Windows で関連付けを作成する方法とは別の方法で行います。

ファイル拡張子とサーバーのシェル CGI 機能を関連付けるには、たとえば、.pl 拡張子を持つファイルの関連付けを作成します。サーバーは、この拡張子を持つファイルの要求を受け取ると、Windows 内のこのファイル拡張子に関連付けられた実行可能ファイルを呼び出して、要求されたファイルをシェル CGI ファイルとして処理します。

シェル CGI ファイルとしてファイル拡張子を関連付けるには、次の手順を実行します。

  1. 管理インタフェースで、サーバーインスタンスの下の HTTP サーバーコンポーネントを開きます。
  2. 「仮想サーバー」ページに移動します。
  3. Windows CGI ファイルタイプを指定する仮想サーバーの名前をクリックします。
  4. 仮想サーバーの MIME タイプファイルの名前を書き留めます。
  5. 「MIME タイプファイル」ページに移動します。
  6. 手順 4 で書き留めた名前に一致する名前をクリックします。
  7. 「MIME タイプ...」ボタンをクリックします。
  8. 次の設定の新しい MIME タイプを追加します。
    • Category: type
    • Content-type: magnus-internal/shellcgi
    • File Suffix: サーバーを Windows CGI に関連付けるファイルサフィックスを入力します。CGI、WinCGI、シェル CGI の各ファイルタイプを有効にした場合、それぞれの CGI に異なったサフィックスを指定する必要があります。たとえば、CGI プログラムとシェル CGI プログラムの両方に .exe というサフィックスを指定することはできません。一意のサフィックスになるように、必要に応じてページ上のその他の MIME タイプフィールドを編集することもできます。

  9. 「新規タイプ」ボタンをクリックします。
  10. サーバーインスタンスページに移動し、「変更の適用」ボタンを選択します。

クエリハンドラ



クエリハンドラを使用する方法は、現在ではあまり一般的ではありません。Sun ONE Application Server や Netscape Navigator のクライアントはクエリハンドラをサポートしていますが、実際に使用することはほとんどありません。現在では、多くのユーザーが、HTML ページ内でフォームを使ってクエリを送信しています。



デフォルトのクエリハンドラ CGI プログラムを指定できます。クエリハンドラは、HTML ファイル内の ISINDEX タグを使って、送信したテキストを処理します。

ISINDEX は、HTML ページ内に型付きの入力を受け付けるテキストフィールドを作成するという点で、フォームテキストフィールドとよく似ています。ただし、ISINDEX ボックス内の情報は、ユーザーが Return キーを押すとすぐに送信されるという点でフォームテキストフィールドとは異なります。デフォルトのクエリハンドラを指定する際、サーバーが入力の送信に使用するプログラムを指定します。ISINDEX タグの詳細については、HTML リファレンスマニュアルを参照してください。

クエリハンドラを設定するには、次の手順を実行します。

  1. 管理インタフェースで、サーバーインスタンスの下の HTTP サーバーコンポーネントを開きます。
  2. 「仮想サーバー」ページに移動します。
  3. クエリハンドラを指定する仮想サーバーの名前をクリックします。
  4. 「CGI」タブをクリックします。
  5. 「クエリハンドラ」オプションをクリックします。
  6. 「編集」を使って、デフォルトのクエリハンドラで設定するリソースを選択します。
  7. ディレクトリを選択した場合、サーバーがそのディレクトリの URL を受け取ったとき、またはそのディレクトリ内のファイルを受け取ったときにだけ指定したクエリハンドラが実行されます。

  8. 「デフォルトクエリハンドラ」フィールドに、選択したリソースのデフォルト CGI プログラムのフルパスを入力します。
  9. 「了解」ボタンをクリックします。
  10. サーバーインスタンスページに移動し、「変更の適用」ボタンを選択します。

Perl CGI プログラム

Perl 5.6.x では、-w フラグを指定して CGI を実行することはできません。代わりに、次のコードをファイルに記述してください。

use warnings;

CGI のグローバル設定

CGI のグローバル設定を変更するには、次の手順を実行します。

  1. 管理インタフェースで、サーバーインスタンスの下の HTTP サーバーコンポーネントを開きます。
  2. 「HTTP サーバー」ページに移動します。
  3. 「詳細」タブをクリックします。
  4. 「CGI」オプションをクリックします。
  5. 次の設定を変更できます。
    • MinCGIStubs - デフォルトで起動する CGIStub プロセス数を制御します。MaxCGIStubs より小さい値を指定します。デフォルト値は 2 です。
    • CGIExpirationTimeout - CGI プロセスが終了前に実行できる最大秒数を指定します。デフォルト値は 0 です。この場合、プロセスの実行時間に制限はありません。
    • CGIStubIdleTimeout - アイドル時間がこの秒数に達した場合、その CGIStub プロセスを強制終了します。デフォルト値は 30 です。
    • MaxCGIStubs - サーバーが同時に実行できる最大 CGIStub プロセス数を設定します。デフォルト値は 10 です。

  6. 「了解」ボタンをクリックします。
  7. サーバーインスタンスページに移動し、「変更の適用」ボタンを選択します。

CGI のグローバル設定の詳細については、『Sun ONE Application Server 管理者用設定ファイルリファレンス』の init.conf ファイルの説明を参照してください。

CGI 変数

CGI プログラムでは、標準の CGI 変数のほかに、Sun ONE Application Server の CGI 変数も使用できます。この変数を使用すると、サーバーが保護モードで動作している場合、クライアント証明書情報にアクセスできます。CLIENT_CERT 変数と REVOCATION 変数は、クライアント証明書ベースの認証が有効になっている場合のみ使用できます。

次の表は、Sun ONE Application Server の CGI 変数を示しています。左の列は変数、右の列は各変数の説明です。

   CGI 変数 

変数

説明

SERVER_URL

 

クライアントが要求したサーバーの URL

 

HTTP_xxx

 

受信した HTTP 要求のヘッダー。xxx はヘッダー名

 

HTTPS

 

サーバーが保護モードの場合は ON、それ以外の場合は OFF

 

HTTPS_KEYSIZE

 

SSL ハンドシェークのキーサイズ (サーバーが保護モードの場合に使用可能)

 

HTTPS_SECRETKEYSIZE

 

SSL ハンドシェークの秘密部分のキーサイズ (サーバーが保護モードの場合に使用可能)

 

HTTPS_SESSIONID

 

接続のセッション ID (サーバーが保護モードの場合に使用可能)

 

CLIENT_CERT

 

クライアントが用意した証明書 (バイナリ DER 形式)

 

CLIENT_CERT_SUBJECT_DN

 

クライアント証明書対象者の識別名

 

CLIENT_CERT_SUBJECT_OU

 

クライアント証明書対象者の組織単位

 

CLIENT_CERT_SUBJECT_O

 

クライアント証明書対象者の組織

 

CLIENT_CERT_SUBJECT_C

 

クライアント証明書対象者の国

 

CLIENT_CERT_SUBJECT_L

 

クライアント証明書対象者の場所

 

CLIENT_CERT_SUBJECT_ST

 

クライアント証明書対象者の州

 

CLIENT_CERT_SUBJECT_E

 

クライアント証明書対象者の電子メール

 

CLIENT_CERT_SUBJECT_UID

 

クライアント証明書対象者の CN の UID 部分

 

CLIENT_CERT_ISSUER_DN

 

クライアント証明書発行者の識別名

 

CLIENT_CERT_ISSUER_OU

 

クライアント証明書発行者の組織単位

 

CLIENT_CERT_ISSUER_O

 

クライアント証明書発行者の組織

 

CLIENT_CERT_ISSUER_C

 

クライアント証明書発行者の国

 

CLIENT_CERT_ISSUER_L

 

クライアント証明書発行者の場所

 

CLIENT_CERT_ISSUER_ST

 

クライアント証明書発行者の州

 

CLIENT_CERT_ISSUER_E

 

クライアント証明書発行者の電子メール

 

CLIENT_CERT_ISSUER_UID

 

クライアント証明書発行者の CN の UID 部分

 

CLIENT_CERT_VALIDITY_START

 

証明書の開始日

 

CLIENT_CERT_VALIDITY_EXIRES

 

証明書の有効期限

 

CLIENT_CERT_EXTENSION_xxx

 

証明書の拡張子。xxx は拡張子名

 

REVOCATION_METHOD

 

証明書の取り消し方法がある場合は、その方法の名前

 

REVOCATION_STATUS

 

証明書の取り消しがある場合は、取り消し状況

 


前へ      目次      索引      次へ     
Copyright 2002 Sun Microsystems, Inc. All rights reserved.