ようやくTCP/IP関連の基礎や操作の前提がわかったところで HTTPサーバーを起動させてみましょう。
STRTCP によって TCP/IP が起動するところまでは学習しました。ところで STRTCP + F4 キーを押すと
TCP/IP の開始 (STRTCP)
選択項目を入力して,実行キーを押してください。
追加のパラメーター
適用業務サーバーの開始 . . . . *YES *YES, *NO
TCP/IP インターフェースの開始 *YES *YES, *NO
と表示されますので、適用業務サーバー、つまりFTP やTelnet は開始されますがHTTPサーバーは
STRTCP コマンドによっては開始されません。
これは例えば FTPサーバーであれば CHGFTPA + F4 キーを押すと、
FTP 属性の変更 (CHGFTPA)
選択項目を入力して,実行キーを押してください。
自動開始サーバー . . . . . . . *YES *YES, *NO, *SAME
初期サーバー数 . . . . . . . . 3 1-20, *SAME, *DFT
非活動タイムアウト . . . . . . 300 0-2147483647, *SAME, *DFT
コード化文字セット ID . . . . . 00819 1-65533, *SAME, *DFT
ナーブー、uョペ]h゙、mーボモ:
EBCDIC/ASCII mーボモ の発信 . . *CCSID 名前 , *SAME, *CCSID, *DFT
ライブラリー . . . . . . . 名前 , *LIBL, *CURLIB
ASCII/EBCDIC mーボモ の受信 . . *CCSID 名前 , *SAME, *CCSID, *DFT
ライブラリー . . . . . . . 名前 , *LIBL, *CURLIB
初期名の形式 . . . . . . . . . > *LIB *LIB, *SAME, *PATH
初期ディレクトリー . . . . . . > *CURLIB *CURLIB, *SAME, *HOMEDIR
初期リストの形式 . . . . . . . *DFT *DFT, *SAME, *UNIX
新規ファイル CCSID . . . . . . *CALC 1-65533, *SAME, *CALC...
サブシステム記述 . . . . . . . QSYSWRK 名前 , *SAME, *DFT
ライブラリー . . . . . . . . QSYS 名前
のように 「 自動開始サーバー = *YES 」 が導入時の値として設定されているからです。
しかし、HTTPサーバーに関しては CHGHTTPA + F4 キーを押して確認してみると
HTTP 属性の変更 (CHGHTTPA)
選択項目を入力して,実行キーを押してください。
自動開始 . . . . . . . . . . . > *NO *YES, *NO, *SAME
サーバー・スレッドの数 :
最小 . . . . . . . . . . . . 10 1-9999, *SAME, *DFT
最大 . . . . . . . . . . . . 40 1-9999, *SAME, *DFT, *NOMAX
コード化文字セット識別コード 00819 1-65533, *SAME, *DFT
SERVER マッピング・テーブル :
EBCDIC/ASCII テーブルの発信 *CCSID 名前 , *SAME, *CCSID, *DFT
ライブラリー . . . . . . . 名前 , *LIBL, *CURLIB
ASCII/EBCDIC TABLE の受信 . . *CCSID 名前 , *SAME, *CCSID, *DFT
ライブラリー . . . . . . . 名前 , *LIBL, *CURLIB
のように 「 自動開始 = *NO 」 となっているために STRTCPコマンドによっては直ちに開始することはありません。
また、上記のコマンドによってパラメーターがすべて 「*SAME」 としか表示されていない場合は現在使用している
あなたのユーザー・プロフィールには *IOSYS 権限がありません。
その場合は QSECOFRでログインしてから再表示してください。
自動開始 = *NO の場合は STRTCPSVR + F4 キーを押して、
TCP/IP サーバーの開始 (STRTCPSVR)
選択項目を入力して,実行キーを押してください。
サーバー適用業務 . . . . . . . *http *ALL, *AUTOSTART...
値の続きは+
によって HTTPサーバーを開始します。
ただしコード化文字セットは CHGHTTPA によってCCSID = 00819 から CCSID = 00932 に
変更しておいてください。( Alska を HTTPサーバーとして利用する場合はこの必要はありません。)
WRKACTJOB によってJOBを確認するとサブ・システム QHTTPSVR の配下にしばらくすると、次のように
サーバー・スレッドが表示されます。
活動ジョブの処理 S103NG3M
03/11/09 15:09:42
CPU %: 10.2 経過時間 : 00:00:23 活動ジョブ数 : 164
オプションを入力して,実行キーを押してください。
2= 変更 3= 保留 4= 終了 5= 処理 6= 解放 7=メッセージ の表示
8=スプール・ファイル の処理 13= 切断 ...
OPT サブシステム/ジョブ ユーザー タイプ CPU % 機能 状況
QHTTPSVR QSYS SBS .0 DEQW
DEFAULT QTMHHTTP BCH .4 PGM-QZHBHTTP CNDW
DEFAULT QTMHHTTP BCI .0 PGM-QZHBHJOB TIMW
DEFAULT QTMHHTTP BCI .0 PGM-QZHBHJOB TIMW
DEFAULT QTMHHTTP BCI .0 PGM-QZHBHJOB TIMW
DEFAULT QTMHHTTP BCI .0 PGM-QZHBHJOB TIMW
「しばらくすると」と申し上げたのは一般的にHTTPサーバーは「マルチスレッド」のJOBであるので待機に
なるまでは時間がかかります。従って STRTCPSVR *HTTP を実行したからといって直ちにHTTPサーバーが
使用可能で接続できるわけではありません。
必ず WRKACTJOB によってスレッドが TIMW のように待機状態になることを確認するようにしてください。
この WRKACTJOB を眺めてみると状況が最上部のJOBだけが「CNDW」になっており、その下に続く JOB は
すべて TIMW になっていることがわかります。
しかも機能の欄を見ると最上部は PGM-QZHBHTTP になっていますが、その他はPGM-QZHBHJOB と表示されています。
つまり HTTPサーバーとは QZHBHTTP だけであり、その他の QZHBHJOB はHTTPサーバーの子プロセスです。
これは最上部のHTTPサーバーだけが親スレッドとして、ブラウザなどのクライアントからの要求を待ち続け、
CGI などの実行が要求されれば、下位の子プロセスに処理を渡して下位のJOBにCGI の実行などをさせる役割を
担っています。
CGI の結果は再び、HTTPサーバーに戻されてHTTPサーバーがそれから、ブラウザにCGIの結果を戻すような
仕組みになっています。どの子プロセスに CGI を実行させるかはHTTPサーバーが不定期に決めますので
必ずしも上から順次にCGIが実行されるわけではありません。
つまり今後のWeb開発において CGI のトラブルの調査では CGI を実行した子プロセスを「 5 = 処理 」で
選択して、「10. ジョブ・ログの表示」 を選択し、カーソルを位置づけてから「 F10 = 詳細メッセージの表示」 を押して、
ジョブ・ログ表示
システム: S103NG3M
ジョブ . : DEFAULT ユーザー . : QTMHHTTP 番号 . . . : 094161
QHTTPSVR のサブシステム QHTTPSVR のジョブ 094161/QTMHHTTP/DEFAULT が
03/11/09 07:10:17 に開始された。ジョブは 03/11/09 07:10:16 にシステム
に入れられました。
これは, IBM HTTP SERVER インスタンス DEFAULT の CGI ジョブである。
ライブラリー SPOOLWTR がライブラリー・リストに追加された。
印刷装置 PRT01 が見つからない。出力待ち行列がライブラリー QGPL の
QPRINT に変更されました。
テーブル QA3TBF437 が見つからない。
テーブル QA3TBF437 が見つからない。
ファイル /AS400-NET.USR/PROJECT/SMPRINT/P057084.PDF を出力しました。
ライブラリー SPOOLWTR がライブラリー・リストから除去された。
ライブラリー R520FIL がライブラリー・リストに追加された。
ライブラリー ASNET.COM がライブラリー・リストに追加された。
のようにして詳細ログを表示させることがとても重要です。
この「カーソルを行に位置づけてからF10キー」を押すという操作を最近のSEでもご存知ない方が多くなっている
ために、真のエラー原因を調査できないでいるようです。
この操作は HTTPサーバーの調査だけではなく、一般の System i における問題の分析には非常に重要ですので
是非、覚えておいてください。
また、最新のOS/400などでは HTTPサーバーはサブシステム QHHPSVR の配下で起動しますが古いリリースでは
サブシステム QSYSWRK の配下で起動されます。QHTTPSVR配下で起動されるのは V4R4M0 以降 です。