前ページへ NSAPI プログラムのビルド 状態維持ライブラリルーチン 次ページへ

第 6 章 アプリケーションの実装と実行

この章では、アプリケーションを実装して実行する方法について説明します。この章の説明は、次の場合に必要になります。

6.1 概要

アプリケーションの実装とは、アプリケーションをインターネットやイントラネットで使用できるように Web サーバに配置することです。この場合の Web サーバは、アプリケーションを開発およびデバックし、予想通りに稼動することを確認するために使用するローカルの UNIX システムである場合と、アプリケーションを使用するユーザのための別の UNIX システムである場合があります。

アプリケーションをプロダクション Web サーバに実装した場合は、次の点を確認する必要があります。

アプリケーションを Web サーバに実装する前に、アプリケーションの配布に関する使用許諾条件を必ず読んでください。使用許諾条件は、標準のテキストファイル license.txt に収録されています。

6.2 サポートされているサーバ

Server Express では、Web プログラムの CGI インターフェイスまたは NSAPI インターフェイスに準拠したアプリケーションをビルドすることができます。つまり、これらのインターフェイスに完全に準拠した Web サーバでは、 Server Express アプリケーションを実行することができます。Server Express の発売時には、Server Express を使用して作成した CGI プログラムを次のサーバでテストしてあります。

Server Express を使用して作成した NSAPI プログラムは、次のサーバでテストされています。

6.3 Web サーバの設定

この項では、インターネットアプリケーションを実行するための Web サーバの設定方法を説明します。正確な方法は、サーバによって異なるため、設定方法の正確な説明については、サーバのマニュアルを参照してください。

Web サーバの設定方法は、次のとおりです。

  1. ターゲットマシンに Application Server をインストールします。Server Express で作成したアプリケーションをマシンで実行するためのランタイムシステムが設定されます。

  2. Web サーバ用の管理ツールを起動します (この方法については、Web サーバのマニュアルを参照してください)。

  3. 運用システムに実装する場合は、下の表の Web 共有リソースを設定します。Web 共有リソースは、URL を Web サーバの実際のディレクトリまたはフォルダにマップしたものです。

    ターゲットマシンの Web 共有リソースが開発マシンの Web 共有リソースと異なる場合は、『アプリケーションの URL の変更』 の説明にしたがって、アプリケーションのファイルを編集する必要があります。NSAPI アプリケーションを実装する場合は、実行可能ファイル名がやや異なるため、アプリケーションのファイルを編集する必要があります。

    Web 共有リソース
    アクセス権
    説明
    bin-share 実行 この共有リソースには、アプリケーションの実行可能ファイルを格納します。
    form-share 読み取り専用 この共有リソースには、アプリケーションのフォームと HTML ページ (.htm ファイル) を格納します。
    image-share 読み取り専用 アプリケーションに多くのイメージがある場合には、独立した共有リソースに格納し、アプリケーションのメンテナンスを容易にすることができます。

注 :


6.4 アプリケーションの URL の変更

開発システムでアプリケーションを開発している場合に、cgi-bin ディレクトリと、HTML ページのディレクトリの名前が、ターゲットシステムの各ディレクトリ名と異なることがあります。アプリケーションが指すディレクトリを変更する必要がある場合は、次の変更を行う必要があります。

DISPLAY 動詞により出力される HTML フォームのパスを変更する方法は、次のとおりです。

  1. COBOL ソース コードで IS EXTERNAL FORM IDENTIFIED BY 句をすべて検索します。

  2. ファイル名を次のように修正します。
    fullpath/htmlfile.htm

    この場合、fullpath は、.htm ファイルをインストールする Web サーバの場所を指す完全な物理パスであり、Web 共有リソース名ではありません。

必要な場合は、これらの変更を行った後にアプリケーションを再ビルドしてください。

6.5 インターネットアプリケーションの実装

インターネットアプリケーションをプロダクション Web サーバに実装するには、アプリケーションを構成するファイルをコピーする必要があります。

Web 共有リソースは、『Web サーバの設定』 の項で設定したものです。

UNIX で実行されている運用システムの Web サーバにインターネットプログラムを実装して実行する方法は、CGI アプリケーションNSAPI アプリケーションで異なります。

CGI アプリケーションの場合
  1. COBDIR および、 LIBPATH(AIX の場合)、SHLIB_PATH(HP-UX の場合)または LD_LIBRARY_PATH (その他の SVR4 ベースのシステムの場合) を設定し、アプリケーションを起動するスクリプトを作成します。このスクリプトの実行権は ugo+x に設定します。

    たとえば、次のスクリプトは実行する必要がある典型的なスクリプトです。このスクリプトは、COBOL 環境を設定して、cgiapp というプログラムを実行します。

    # COBDIR および COBPATH を設定して、プログラムを実行する 
    # COBOL 製品を検索します。
    
    # COBOL システムの場所を設定します。
    COBDIR=/usr/test/cobol 
    
    # COBOL プログラムの検索パスを設定します。
    COBPATH=:/usr/test/cobol/progs 
    
    # PATHを設定します。
    PATH=$COBDIR/bin:$PATH
    
    # ライブラリパスを設定 - SVR4 システムの場合は LD_LIBRARY_PATH にします。
    LIBPATH=$COBDIR/lib:$LIBPATH
    
    # 次の変数を環境に配置します。
    export COBPATH COBDIR PATH LIBPATH
    
    # cgiapp を実行します。
    cobrun cgiapp $*  
  2. サーバを起動します。Web サーバの起動に必要なコマンドは、Web サーバのタイプによって異なります。次の例は、Enterprise Server 3.5.1 の場合です。
    /usr/netscape/suitespot/https-machinename/start
NSAPI アプリケーションの場合
  1. COBDIR、COBPATH、PATH および LIBPATH (AIX の場合) またはLD_LIBRARY_PATH (その他の SVR4 ベースのシステムの場合) を設定するスクリプトを作成します。このスクリプトの実行権は ugo+x に設定します。

    たとえば、次のスクリプトは実行する必要がある典型的なスクリプトです。

    # COBDIR および COBPATH を設定して、プログラムを実行する 
    # COBOL 製品を検索します。
    
    # COBOL システムの場所を設定します。 
    COBDIR=/usr/test/cobol 
    
    # COBOL プログラムの検索パスを設定します。
    COBPATH=:/usr/test/cobol/progs 
    
    # PATHを設定します。
    PATH=$COBDIR/bin:$PATH
    
    # ライブラリパスを設定 (SVR4 システムの場合は LD_LIBRARY_PATH) します。
    # また、このパスに NSAPI プログラムの位置も設定します。
    LD_LIBRARY_PATH=$COBDIR/lib:$LIBPATH:nsapi-program-location
    
    # プログラムで CBL_DEBUGBREAK ルーチンを使用する場合は、 
    # COBIDY=location-of-idy-files を設定する必要があります。
    
    COBIDY=/usr/test/cobol/progs
    
    # 次の変数を環境に配置します。
    export COBPATH COBDIR PATH LD_LIBRARY_PATH COBIDY
  2. サーバを起動します。Web サーバの起動に必要なコマンドは、Web サーバのタイプによって異なります。次の例は、Enterprise Server 3.6.0 の場合です。
    /usr/netscape/suitespot/https-machinename/start

NSAPI アプリケーションの場合は、サーバに障害が発生した場合に備えてプロセス ID を記録しておくと便利です。これは、次の UNIX コマンドで行うことができます。

echo "Debug Process : "`ps -fu nobody | tail -1 | awk '{ print $2 }'`

Enterprise Server の場合は、次のファイルでもサーバのプロセス ID を表示できます。

/usr/netscape/suitespot/https-machinename/logs/pid

サーバを停止する必要がある場合は (たとえば、アプリケーションを再コンパイルした場合)、次のコマンドでサーバを停止できます (この例は Enterprise Server 3.5.1 の場合です)。

/usr/netscape/suitespot/https-machinename/stop

また、手動で Web サーバを強制終了できます。たとえば、Enterprise Server では次の UNIX コマンドを使用できます。

kill 'cat/usr/netscape/suitespot/https-machinename/logs/pid'

注 : プロセスを手動で強制終了すると、データが失われることがあります。可能な場合は、使用中の Web サーバの終了手続きを使用してください。


6.6 実装済みアプリケーションへの sstate の追加

『サーバ側のプログラミング』 の章で説明しているサーバ側のサポート機構では、sstate と呼ばれるモジュールを使用します。 これは、COBOL ランタイムシステムの一部ではありません (必要に応じて変更できるようにソースが用意されています)。そのため、sstate を使用するアプリケーションを実装する場合は、CGI または NSAPI の実行可能プログラムとともにアプリケーションを配信する必要があります。

sstate モジュールは、呼び出し可能共有オブジェクト (sstate.so) にコンパイルして、CGI または NSAPI プログラムが保存されているターゲットマシンの同じディレクトリにコピーする必要があります。NSAPI プログラムの場合は、sstate.so は LIBPATH (AIX の場合) または LD_LIBRARY_PATH (その他の SVR4 ベースのシステムの場合) が指定するディレクトリに格納する必要があります。

実装した NSAPI アプリケーションが sstate モジュールを使用する場合に、sstate モジュールの、再コンパイルした sstate モジュールとの置換が必要になることがあります。この場合は、Web サーバを停止して再起動する必要があります。この操作により、現在のバージョンの sstate がメモリから解放されます。Web サーバの停止と起動の方法については、『インターネットアプリケーションの実装』 の項で説明しています。

6.7 インターネットアプリケーションの実行

インターネットアプリケーションの実行方法は、その他の COBOL アプリケーションの実行方法と同じです。アプリケーションの実行方法の詳細については、『Server Express ユーザガイド』『実行』 の章を参照してください。運用システムの Web サーバにインターネットアプリケーションを実装する方法については、前の項を参照してください。

インターネットアプリケーションの環境を設定した後にアプリケーションを実行するスクリプトを使用してアプリケーションを実行します。スクリプトの例については、前の項を参照してください。

アプリケーションを実行するには、プロダクションマシンにあるスクリプトの名前をフォームが認識している必要があります。

<FORM ACTION="/cgi-bin/script-name">
...
</FORM>

ただし、アプリケーションの開発中は、cobrun トリガを使用して CGI プログラムを開始できます。これらのトリガについては、次の項で説明します。


注 : cobrun トリガはプロダクションマシンで使用できますが、この場合は、システムの実行可能プログラムとして作成された CGI アプリケーションを実行できません。


6.7.1 cobrun トリガ

アプリケーションを開発して実行するには、通常、root または管理者としてアクセスする必要があります。また、環境を設定するシェルスクリプトを作成する必要もあります。Server Express では、CGI アプリケーションの開発を容易にするためのさまざまなトリガと構成ファイルを提供しています。これらのトリガ用の構成ファイルは、アプリケーションへの開発アクセス権を定義するためにも使用できます。

シェルスクリプトを使用する代わりに、cobrun トリガまたは cobrun_t トリガを使用して Web アプリケーションを起動できます。たとえば、次のように記述します。

<FORM ACTION="/cgi-bin/trigger/myuserid/program">
...
</FORM>

パラメータの内容は、次のとおりです。

trigger cobrun または cobrun_t
myuserid ユーザ ID
program Server Express の実行可能ファイル。たとえば、.int ファイルや呼び出し可能共有オブジェクトなど。

トリガは、システム管理者が Web サーバの cgi-bin ディレクトリにコピーする必要があります。このコピーを行うスクリプトが提供されています。このスクリプトを実行するには、次のように入力します。

sh $COBDIR/bin/cgibin/cobrun.inst

このスクリプトにより、usercgi.cfg という構成ファイルも Web サーバの cgi-bin ディレクトリに配置されます。このファイルは次の内容を定義します。

usercgi.cfg はテキストファイルであり、テキストエディタを使用するか、または、プログラム mfcgicfg を使用して編集できます。

ファイルの各行は次のような形式になっています。

user:user_cgi_directory:access=options

パラメータの内容は、次のとおりです。

user ユーザID
user_cgi_directory ユーザ名に関連付けられた cgi-bin ディレクトリ
options アクセスオプション。次のいずれかを指定できます。
full だれでもこのユーザの cgi-bin ディレクトリにアクセスできます。
denied だれもこのユーザの cgi-bin ディレクトリにアクセスできません。
restricted .mfcgiperms で指定したユーザのみにアクセスを制限します。このファイルは、ユーザのホームディレクトリにある必要があります。

6.7.1.1 mfcgicfg を使用した構成ファイルの編集

ユーティリティ、 $COBDIR/cgi-bin/mfcgicfg を使用して usercgi.cfg 構成ファイルをチェック、表示、および編集できます。このユーティリティの形式は次のとおりです。

mfcgicfg [option]

パラメータの内容は、次のとおりです。

option 次のオプションのうちのいずれかです。

option パラメータの値は、次のうちのいずれかを指定します。

check オプションの誤り、無効なディレクトリ、および環境ファイルの有無をチェックします。
list 内容を読み込んで画面に表示します。
delete name ユーザを削除します。たとえば、次のように記述します。

mfcgicfg delete userid

ここで、userid は、自分のユーザ ID です。
add name directory options ユーザを追加します。たとえば、次のように記述します。

mfcgicfg userid www/cgi-bin access=full

ここで、userid は、自分のユーザ ID です。

6.7.1.2 ユーザ定義の環境の作成

.mfcgienv 構成ファイルにユーザ定義の環境を作成することができます。このファイルは、現在の環境に配置するか、または cgi-bin ディレクトリに配置することができます。ここで定義した環境を現在の環境に追加してから、Web アプリケーションを実行します。


注 : 次のコマンドを入力すると、このファイルをすばやく作成して編集することができます。

env >.mfcgienv

この後で、不要な環境変数を削除します。


6.7.1.3 トリガの問題のトラブルシューティング

cobrun トリガ、または cobrun_t トリガを使用して CGI プログラムを実行すると、次のエラーメッセージが表示される場合があります。

cobrun: Permission denied
このエラーメッセージは、次の場合に表示されます。
  • インストールされた cobrun トリガと同じディレクトリに usercgi.cfg が存在しません。usercgi.cfg ファイルを作成してください。

  • CGI プログラムにアクセスしようとしているユーザのアクセスが許可されていません。つまり、usercgi.cfg のユーザオプションが access=denied に設定されています。正しいユーザオプションを設定してください。

  • CGI にアクセスしようとしているユーザがルート権限を持っています。これは許可されません。
no file name given
このエラーメッセージは、フォームの action タグにプログラム名が指定されていない場合に表示されます。action タグを修正してください。
user defined in config file but does not exist on machine
. フォームの action タグをチェックして、ユーザ名が有効なことを確認してください。たとえば、次のように記述します。
/cgi-bin/cobrun/valid-user-name/program

ユーザ名が有効な場合は、管理者がアクセス制御ファイル (usercgi.cfg) にエントリを追加する必要があります。

user defined in config file but does not exist on machine
アクセス制御ファイル (usercgi.cfg) の管理者に、ユーザ ID のエントリを確認するように依頼してください。
cannot access cgi-bin directory
mfcgicfg check を実行して、usercgi.cfg が正しく設定されていることを確認してください。
unable to change supplementary group access list
unable to change group id
unable to change user id
トリガの setuid 権限が正しく設定されていること、およびファイルの所有者が root であることを確認してください。
正しい権限が設定されていさえすれば、cobrun[_t] トリガを実行することができます。

Web サーバの cgi-bin ディレクトリに対するアクセス権を設定する場合は、次の事項を確認してください。


Copyright © 2002 Micro Focus International Limited. All rights reserved.
本書、ならびに使用されている固有の商標と商品名は国際法で保護されています。

前ページへ NSAPI プログラムのビルド 状態維持ライブラリルーチン 次ページへ