![]() |
NSAPI プログラムのビルド | 状態維持ライブラリルーチン |
この章では、アプリケーションを実装して実行する方法について説明します。この章の説明は、次の場合に必要になります。
アプリケーションの実装とは、アプリケーションをインターネットやイントラネットで使用できるように Web サーバに配置することです。この場合の Web サーバは、アプリケーションを開発およびデバックし、予想通りに稼動することを確認するために使用するローカルの UNIX システムである場合と、アプリケーションを使用するユーザのための別の UNIX システムである場合があります。
アプリケーションをプロダクション Web サーバに実装した場合は、次の点を確認する必要があります。
アプリケーションを Web サーバに実装する前に、アプリケーションの配布に関する使用許諾条件を必ず読んでください。使用許諾条件は、標準のテキストファイル license.txt に収録されています。
Server Express では、Web プログラムの CGI インターフェイスまたは NSAPI インターフェイスに準拠したアプリケーションをビルドすることができます。つまり、これらのインターフェイスに完全に準拠した Web サーバでは、 Server Express アプリケーションを実行することができます。Server Express の発売時には、Server Express を使用して作成した CGI プログラムを次のサーバでテストしてあります。
Server Express を使用して作成した NSAPI プログラムは、次のサーバでテストされています。
注 : オペレーティングシステムの制約により、AIX 用 Netscape Enterprise Server 3.5.1 で使用するための NSAPI プログラムの作成はサポートしていません。 |
この項では、インターネットアプリケーションを実行するための Web サーバの設定方法を説明します。正確な方法は、サーバによって異なるため、設定方法の正確な説明については、サーバのマニュアルを参照してください。
Web サーバの設定方法は、次のとおりです。
ターゲットマシンの Web 共有リソースが開発マシンの Web 共有リソースと異なる場合は、『アプリケーションの URL の変更』 の説明にしたがって、アプリケーションのファイルを編集する必要があります。NSAPI アプリケーションを実装する場合は、実行可能ファイル名がやや異なるため、アプリケーションのファイルを編集する必要があります。
| Web 共有リソース
|
アクセス権
|
説明
|
|---|---|---|
| bin-share | 実行 | この共有リソースには、アプリケーションの実行可能ファイルを格納します。 |
| form-share | 読み取り専用 | この共有リソースには、アプリケーションのフォームと HTML ページ (.htm ファイル) を格納します。 |
| image-share | 読み取り専用 | アプリケーションに多くのイメージがある場合には、独立した共有リソースに格納し、アプリケーションのメンテナンスを容易にすることができます。 |
注 :
開発システムでアプリケーションを開発している場合に、cgi-bin ディレクトリと、HTML ページのディレクトリの名前が、ターゲットシステムの各ディレクトリ名と異なることがあります。アプリケーションが指すディレクトリを変更する必要がある場合は、次の変更を行う必要があります。
DISPLAY 動詞により出力される HTML フォームのパスを変更する方法は、次のとおりです。
fullpath/htmlfile.htm
この場合、fullpath は、.htm ファイルをインストールする Web サーバの場所を指す完全な物理パスであり、Web 共有リソース名ではありません。
必要な場合は、これらの変更を行った後にアプリケーションを再ビルドしてください。
インターネットアプリケーションをプロダクション Web サーバに実装するには、アプリケーションを構成するファイルをコピーする必要があります。
ページが常に 1 つのサーバ側プログラムから EHTML により出力される場合は、入力フォームの .htm ファイルは、プログラムの実行コードに埋め込まれているため、Web サーバにコピーする必要はありません。
Web 共有リソースは、『Web サーバの設定』 の項で設定したものです。
UNIX で実行されている運用システムの Web サーバにインターネットプログラムを実装して実行する方法は、CGI アプリケーションと NSAPI アプリケーションで異なります。
たとえば、次のスクリプトは実行する必要がある典型的なスクリプトです。このスクリプトは、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 $*
/usr/netscape/suitespot/https-machinename/start
たとえば、次のスクリプトは実行する必要がある典型的なスクリプトです。
# 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
/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 サーバの終了手続きを使用してください。
『サーバ側のプログラミング』 の章で説明しているサーバ側のサポート機構では、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 サーバの停止と起動の方法については、『インターネットアプリケーションの実装』 の項で説明しています。
インターネットアプリケーションの実行方法は、その他の COBOL アプリケーションの実行方法と同じです。アプリケーションの実行方法の詳細については、『Server Express ユーザガイド』 の 『実行』 の章を参照してください。運用システムの Web サーバにインターネットアプリケーションを実装する方法については、前の項を参照してください。
インターネットアプリケーションの環境を設定した後にアプリケーションを実行するスクリプトを使用してアプリケーションを実行します。スクリプトの例については、前の項を参照してください。
アプリケーションを実行するには、プロダクションマシンにあるスクリプトの名前をフォームが認識している必要があります。
<FORM ACTION="/cgi-bin/script-name"> ... </FORM>
ただし、アプリケーションの開発中は、cobrun トリガを使用して CGI プログラムを開始できます。これらのトリガについては、次の項で説明します。
注 : cobrun トリガはプロダクションマシンで使用できますが、この場合は、システムの実行可能プログラムとして作成された CGI アプリケーションを実行できません。
アプリケーションを開発して実行するには、通常、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 |
アクセスオプション。次のいずれかを指定できます。
|
ユーティリティ、 $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 です。 |
.mfcgienv 構成ファイルにユーザ定義の環境を作成することができます。このファイルは、現在の環境に配置するか、または cgi-bin ディレクトリに配置することができます。ここで定義した環境を現在の環境に追加してから、Web アプリケーションを実行します。
注 : 次のコマンドを入力すると、このファイルをすばやく作成して編集することができます。
env >.mfcgienv
この後で、不要な環境変数を削除します。
cobrun トリガ、または cobrun_t トリガを使用して CGI プログラムを実行すると、次のエラーメッセージが表示される場合があります。
| cobrun: Permission denied | |
このエラーメッセージは、次の場合に表示されます。
|
|
| 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 プログラムのビルド | 状態維持ライブラリルーチン | ![]() |