Webオプションへのアクセスに関する問題の診断について

Document created by Toshikazu_Toyama Employee on Jun 29, 2015
Version 1Show Document
  • View in full screen mode

文書番号:JTEC001430

対象製品 2E Web Option

バージョン 8.x

プラットフォーム i5/OS

 

◆ 詳細内容
この文書では、HTTPサーバ設定に関する説明と、Webオプションへのアクセスに関する問題を診断する上で役立つ情報を提供しています。
HTTPサーバの設定、HTTPサーバに関する注意事項およびトラブルシューティングという3つの部分に分かれています

 

1. HTTPサーバの設定
2. HTTPサーバに関する注意事項
3. トラブルシューティング

 


HTTPサーバの設定

Webオプションがインストールおよび初期化されると、Y2WEBSVRというHTTPサーバ インスタンスが作成されます。 同時に、Y2WEBCFGというHTTPサーバの設定ファイルが作成されます。 この設定ファイルには、以下のURLを使ってブラウザからWebオプションへアクセスするために必要な「ディレクティブ」がすべて含まれています。

http://as400:4100/WEB2E

 

上記において、

as400は、AS/400の名前またはTCP/IPアドレスです

4100は、AS/400へのアクセスに使用するポート番号です

/WEB2Eは、URLのパス名です

 

Y2WEBCFGの重要なディレクティブは以下のとおりです。

 

Port    4100
Enable  GET
Enable  POST
DefaultFsCCSID 5035
DefaultNetCCSID 943
Exec  /WEB2E           /QSYS.LIB/Y2WEB.LIB/YROUTER.PGM
Pass   /WEB2EDOC/*  /WEBOPT/*
ErrorLog    Y2WEBSVRL  2000 *LANGID *LANGID
CgiErrorLog Y2WEBSVRCL 2000

各ディレクティブには意味があり、それについては以下に説明します。

 

Port 4100

 

このディレクティブは、いったん起動したHTTPサーバ インスタンスが、ポート4100を受信待機することを示しています。したがって、http://as400:4100/WEB2Eなど、URL内にポート番号4100を含む要求のみに応答します。 http://as400/WEB2Eまたはhttp://as400:1234/WEB2Eなど、他のポートを指定していたり、ポートの指定がない要求は無視します。

Enable GETおよびEnable POST

 

GETおよびPOSTメソッドは、HTTPサーバが処理する要求のタイプを指定します。 すべてのWebオプション スケルトンには<FORM>タグがあり、そこにはACTION属性(実行するプロセスを指定)とMETHOD属性(常にPOSTに設定)が指定されています。

 

例:<FORM METHOD="POST" ACTION="/WEB2E"...>

 

これは、Webオプション ページはすべてPOSTメソッドを使用するということを意味します。 ブラウザのアドレス バーにURLを入力するか、または他のWebページ上のリンクをクリックすることでユーザがWebオプションに最初にアクセスできるようにするには、GETメソッドを有効に設定しておく必要があります。

 

Exec /WEB2E /QSYS.LIB/Y2WEB.LIB/YROUTER.PGM
%%EBCDIC/MIXED%%

Execディレクティブは、URLのパス名がExecディレクティブに定義されたテンプレートに適合する場合に、プログラムを呼び出すようHTTPサーバに命令します。 Webオプションの場合、URLのパス名が/WEB2Eであれば、HTTPサーバはY2WEB/YROUTERを呼び出します。 呼び出されるプログラムはIFS(ディレクトリ/ファイル)形式になります。 %%EBCDIC/MIXED%% は、ASCIIからEBCDICへのデータ変換処理をHTTPサーバに実行させます(クライアントから送信されるデータはASCII形式ですが、AS/400はEBCDICデータを必要とします)。

 

Pass  /WEB2EDOC/*  /WEBOPT/*

 

Passディレクティブも、Execディレクティブの場合と同様の「テンプレート適合」方式を使用します。 呼び出すプログラムを定義する代わりに、表示するファイルのパスを定義します。 上記のWebオプションPassディレクティブの場合、HTTPサーバは送られてくるすべてのURLを「/WEB2EDOC/*」テンプレートと照合し、/WEBOPT/ディレクトリ内に実際に存在するファイルを返します。 たとえば、http://as400:4100/WEB2EDOC/adv2e.gifというファイル要求に対して、実際にはhttp://as400:4100/WEBOPT/adv2e.gifというファイルを返します。 このように、Passディレクティブは、ファイルが格納されている実際のディレクトリ名を隠し、HTTP設定ファイルを一度変更するだけですべてのスケルトンに反映されるようになっています(常に「/WEB2EDOC/」というテンプレート値を使用します)。

 

ErrorLog    Y2WEBSVRL  2000  *LANGID  *LANGID

 

ErrorLogディレクティブは、内部サーバ エラーの書き込みをHTTPサーバに命令します。 毎日、真夜中に(または、その日初めてHTTPサーバが使用された際に)新しいログが起動されます。 上記のディレクティブにより、サーバはQUSRSYS/Y2WEBSVRLのメンバとして内部エラーを書き込みます(メンバ名:Qcyymmdd)。 たとえば、2002年10月21日のすべてのHTTPサーバの内部エラーは、QUSRSYS/Y2WEBSVRLのメンバQ1021021に書き込まれます。 ただし今回の問題解決においては、このファイルに有用なものはほとんどありません。

 

CgiErrorLog Y2WEBSVRCL 2000

 

CgiErrorLogディレクティブは、ErrorLogディレクティブに類似していますが、違いはCGI固有のエラーに対応する点です。 現在では、このファイルへエラーは書き込まれず、代わりにYW2EAUDPへ書き込まれます。

DefaultFsCCSID 5035 および DefaultNetCCSID 943

 

CCSID ディレクティブは、使用するCCSIDを指定します。
下の2行を追加してください。
DefaultFsCCSID 5035
DefaultNETCCSID 0943
#On Japanese environment,following CCSID are used as default.
※ CCSIDの値は、ご使用の環境にあわせた値を指定してください。


HTTPサーバに関する注意事項

相対URLと絶対URL

 

HTTPサーバがブラウザにページを送った場合に、そのページ上のURLにExecおよびPassディレクティブのフルパスが含まれている必要はありません(暗黙URL)。 たとえば、HTTPサーバによって送られるページに、以下のフォーム行が含まれている場合、

 

<form method="post" action=http://as400:4100/WEB2E...>

以下を使用することもできます。

 

<form method=" post" action=" /WEB2E" …>

これは、要求の送信先サーバが最初にページを送信してきたサーバであるとブラウザが想定しているためです。 同様に、スケルトンに以下のような行が含まれている場合、

 

<image src=http://as400:4100/WEB2EDOC/adv2e.gif...>

以下のように置き換えることができます。

 

<image src="/WEB2EDOC/adv2e.gif">

デフォルトの失敗ルール

 

HTTPサーバでは、デフォルトの失敗ルールが使用されます。 このセキュリティ機能は、PassおよびExecディレクティブに定義されたテンプレートに適合するURLのみが使用されることを意味します。 つまり、デフォルトのWebオプションHTTP設定を使用している場合、HTTPサーバによって呼び出されるプログラムはY2WEB/YROUTERのみで、さらには、URLにhttp://as400:4100/WEB2Eと指定しなければ呼び出されません。 異なるポート番号を使用しているURLは、WebオプションHTTPサーバ インスタンスで処理されず(ただし、そのポートを受信待機するインスタンスを別途設定すれば、別のHTTPサーバ インスタンスによって処理されることがあります)、異なるパス名を使用しているURLは、ブラウザにHTTP 403(Forbidden)エラー ページを返します。


トラブルシューティング

Webオプションにアクセスできない場合、URL内のポート番号(指定されていれば)を確認してください。 リリース8.0以上では、http://as400:4100/WEB2Eを使用します。

 

HTTPサーバについてトラブルシューティングするには、WRKACTJOB SBS(QHTTPSVR)を実行し、どのHTTPサーバ ジョブが活動しているかを確認します。 Y2WEBSVRという複数のジョブが活動しているはずです。 1つめのジョブの状況はCNDWで、QZHBHTTPというプログラムを実行します。 他のジョブの状況は、以下に示すようにTIMWとなります。

 

CPU使用率が高すぎる(数パーセント以上)ジョブがないかチェックしてください。 オプション5、そしてオプション10を1つめのジョブに適用します。ジョブログの1行目は以下のようになります。

 

以下のコマンドは、サーバに使用された開始パラメータを示しています。 このサーバ インスタンスが使用している設定は、Y2WEBCFGになります。

 

CALL PGM(QHTTPSVR/QZHBHTTP) PARM('1 'Y2WEBSVR' '-uiMin'
'10' '-uiMax' '40' '-cEAMap' '*CCSID' '-cAEMap' '*CCSID'
'-uiCCSID' '943' '-r'
'/QSYS.LIB/QUSRSYS.LIB/QATMHTTPC.FILE/Y2WEBCFG.MBR'
'-uiCCSID' '943' '-fsccsid' '5035')

WRKHTTPCFG CFG(Y2WEBCFG)を実行して設定を表示させ、上記の例と比較します。 すべて問題ないようであれば、他のすべてのY2WEBSVRジョブに、オプション5そしてオプション10を適用します。 ジョブログに以下のような行が含まれるものもあります。

「This is a CGI job for IBM HTTP Server instance Y2WEBSVR.」

 

F10を実行して、これらのジョブの詳細メッセージを表示させます。 エラー メッセージがあれば、弊社テクニカル サポートまで報告してください。

 

問題が特定できない場合、以下のコマンドを実行してHTTPサーバ インスタンスを終了させます。

 

ENDTCPSVR SERVER(*HTTP) HTTPSVR(Y2WEBSVR)

 

Y2WEBSVRジョブが終了するまで待ってから、再びサーバを起動させます。 これには数分かかる場合があります。

 

以下のコマンドを使って、HTTPサーバ インスタンスを開始します。

 

STRTCPSVR' SERVER(*HTTP) HTTPSVR(Y2WEBSVR '-vv' '-uiCCSID'  '943'  '-fsccsid' '5035')

'-vv' 開始値により、各Y2WEBSVRジョブでQPZHBTRCという独自のスプール ファイルが作成されます。 一番上のY2WEBSVRジョブにオプション8を適用すると、スプール ファイルが書き込まれます。 このスプール ファイルには、HTTPサーバが実行するすべてのタスクのリストが含まれています。 スプール ファイルを開き、すぐに制御フィールドに「W30」と入力してEnterキーを押すと、1から29の列がすべて隠れます。ここでWebオプションにアクセスしてみてください。 正しく実行できない場合、このスプール ファイルがエラー メッセージを取り込み、Webオプションにアクセスできない理由が表示されます。 スプール ファイル内で、「Client sez」を探してください。 このメッセージの後に、エラー メッセージと詳細説明が表示されます。 QPZHBTRCスプール ファイルの例は、以下のようになります(エラー メッセージなし)。

 

CCSIDの値は、ご使用の環境にあわせた値を指定してください。
HTTPサーバ ジョブにエラーがなければ、問題はWebオプション自体にある可能性があります。 弊社テクニカル サポートまでご連絡ください。

Attachments

    Outcomes