ようやく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 以降 です。