IBM i をWebサーバーとして構成するには HTTP構成を設定する必要があります。
HTTPサーバーとして
- Alaska
- IBMオリジナルHTTPサーバー
- IBM HTTPサーバーPowered by Apache
の選択肢がありますが、このうち 日本語環境での動作が保証されるのは 1. Alaska だけです。
2. IBM オリジナルHTTPサーバー は POSTメソッドによる 入力漢字の文字化けが発生 します。
3. IBM HTTPサーバー Powered by Appache は 追加PTFが必要 であり、HTTP構成が複雑 で
動作させるには困難となります。
ここでは EnterpriseServer で提供される HTTPサーバーである Alaska の設定を中心に解説します。
Alaska HTTP 構成の設定
オプション 21. ALASKA HTTP構成の処理
を選択すると次のような画面が表示されます。
桁 . . . . . : 1 121 走査検索 ASNET.USR/HTTPCFG
SEU==> CONFIG
***************** データの始め ************************************
0001.00 # ***************************************************************** #
0002.00 # #
0003.00 # HTTP Server Alaska 構成 for V5R2M0 - V7R4M0 #
0004.00 # #
0005.00 # Alaska
0006.00 #
0007.00 # ***************************************************************** #
0008.00 # CCSID=5035 #
0009.00 # ------------------------------------------------------
0010.00 # NOTE: "#" から始まる行はコメント行です。
0011.00 # ------------------------------------------------------
0013.00 # ----------------------------------------------------------------- #
0014.00 # ホスト名 : ここに IBM i の IP アドレスを指定すると
0015.00 # 指定した IP アドレスだけで、接続することができます。
0016.00 # *ANY であれば外部からも内部からも接続することができます
0017.00 HostName *ANY
0018.00 # ----------------------------------------------------------------- #
0019.00 # メソッド : GET, POST を使用可能に設定します。 #
0020.00 # ----------------------------------------------------------------- #
0021.00 Enable GET #
0022.00 Enable POST
0023.00 # Enable HEAD #
0024.00 #----------------------------------------------------------
0025.00 # モニター・スレッド
0026.00 #
0027.00 # HTTPSVR のモニタースレッドの動作を指定します。
0028.00 #
0029.00 # *INQ C = AURORA_EGN の MSGW を自動的に C でキャンセルします
0030.00 #----------------------------------------------------------
0031.00 # Monitor *INQ C
0032.00 #------------------------------------------------------
0033.00 # *** Map, Pass, Exec, Auth ***
0034.00 #
0035.00 # Map IFS は PUBLIC(*RX) または PUBLIC(*RWX) 以上の権限が
0036.00 # 必要です。
0037.00 # Map ライブラリーは少なくともユーザー QTMHHTTP に読取り権限
0038.00 # があるか,または PUBLIC(*USE) の権限が必要です。
0039.00 #
0040.00 # Pass の記述のある IFS だけがブラウザでアクセス可能となります。
0041.00 # CGI の実行ライブラリーには Exec の記述が必要です。
0042.00 #
0043.00 # Auth は Basic 認証が必ず必要である PATH です。
0044.00 # Pass が定義されただけでなく Auth は Baic 認証が必要であることを
0045.00 # ブラウザに通知します。
0046.00 #
0047.00 # Encode はコード化の指定です。省略時の値は Shift-JIS です。
0048.00 # ユニコードを指定したい CGI のライブラリーにのみ
0049.00 #
0050.00 # Encode /cgi-bin/* UTF-8
0051.00 #
0052.00 # のようにして UTF-8 を指定してください。
0053.00 # UTF-8 を指定したライブラリーの CGI のブラウザの値は
0054.00 # UTF-8 として変換されます。
0055.00 Pass /AS400-NET.USR/*
0056.00 Pass /usr/*
0057.00 Pass /SPOOLWTR/*
0058.00 Pass /QATMHSTOUT/*
0059.00 Pass /QSYS.LIB/ASNET.USR.LIB/*
0060.00 Pass /QSYS.LIB/ASNET.USR.LIB/HTTPCFG.FILE/*
0061.00 Pass /QSYS.LIB/CGIBIN.LIB/*
0062.00 Exec /QSYS.LIB/CGIBIN.LIB/* /QSYS.LIB/CGIBIN.LIB/*
0063.00 Map /cgi-bin/* /cgi-bin/*.PGM
0064.00 Exec /cgi-bin/* /qsys.lib/cgibin.lib/*
0065.00 Pass /cgi-bin/*
0066.00 Pass /ADDURL.HTM
0067.00 Map /ADDURL.HTM /AS400-NET.USR/USR/SPLITTER/ADDURL.HTM
0068.00 Pass /SPLITTER.HTM
0069.00 Map /SPLITTER.HTM /AS400-NET.USR/USR/SPLITTER.HTM
0070.00 Pass /CALLWEB.HTM
0071.00 Map /CALLWEB.HTM /AS400-NET.USR/USR/AUTOWEB.HTM
0072.00 Pass /AUTOWEB
0073.00 Map /AUTOWEB /AS400-NET.USR/USR/AUTOWEB.HTM
0074.00
0075.00 #-----------------------------------------------------
0076.00 # REJECT : 接続を拒否するリモート・アドレス
0077.00 # 不適切なクライアントからの着信を拒否することが
0078.00 # できます。
0079.00 # REJECT 192.168.1.11
0080.00 #-----------------------------------------------------
0081.00 # ACCLOG : アクセス・ログの出力方法
0082.00 # : *PRINT = OUTQ: ASNET.USR/QNETJOBLOG へ印刷出力
0083.00 # : *FILE = FILE: ASNET.USR/ACCESSLOG へファイル出力
0084.00 # : *BOTH = 上記の両方
0085.00 # : *NONE = 出力しない
0086.00 ACCLOG *PRINT
0087.00 # ACCLOG *FILE
0088.00 #-----------------------------------------------------
0089.00 # STDOUT : 標準出力 -- 標準出力を行っている CGI が
0090.00 # 保管されているライブラリー名を
0091.00 # 指定してください。
0092.00 #------------------------------------------------------
0093.00 # Stdout /*STDLIB/*
0094.00 #
0095.00 #----------------------------------------------------------
0096.00 # UPLDAUTH ファイルアップロード認証有無を設定します。
0097.00 #
0098.00 # UPLDAUTH : *YES = BASIC ログイン認証後アップロードが
0099.00 # 可能です。
0100.00 # *NO = ログイン認証なしでアップロードが
0101.00 # 可能です。
0102.00 #----------------------------------------------------------
0103.00 # UPLDAUTH *YES
0104.00 UPLDAUTH *NO
0105.00 #----------------------------------------------------------
0106.00 # NOCACHE - ブラウザにキャッシュを行わなせない拡張子を
0107.00 # 指定します。
0108.00 # NOCACHE .CAB
0109.00 # NOCACHE .PDF
0110.00 #------------------------------------------------------
0111.00 # シフト文字 : シフト文字の挿入を制御します。
0112.00 #
0113.00 # ASCII_SHFT : *YES = シフト文字をスペースとして変換します。
0114.00 # *NO = シフト文字の分は除去されます。
0115.00 # EBCDIC_SHFT : *YES = シフト文字が挿入されます。
0116.00 # : *NO = 全角文字の両端にスペースがあれば
0117.00 # シフト文字用に使用されます。
0118.00 # スペースが無ければシフト文字が挿入
0119.00 # されます。
0120.00 #
0121.00 # Ver5.0 以上では ASCII_SHFT = *YES, EBCDIC_SHFT = *NO が
0122.00 # 省略時の値と見なされます。
0123.00 #------------------------------------------------------
0124.00 ASCII_SHFT *YES
0125.00 EBCDIC_SHFT *NO
0126.00 #----------------------------------------------------------
0127.00 # ALWCMD - CMDCALL によって実行してもよいコマンドを
0128.00 # 指定します。
0129.00 # ALWCMD ASNET.COM/ODBCDVR /* ODBC ドライバー */
0130.00 #------------------------------------------------------
0131.00 ALWCMD ASNET.COM/ODBCDVR
0132.00 ALWCMD ASNET.COM/CPYTOCSV
0133.00 ALWCMD ASNET.COM/PCSFT5
0134.00 ALWCMD ASNET.COM/RTOPCB
0135.00 ALWCMD ASNET.COM/RFROMPCB
0136.00 #------------------------------------------------------
0137.00 # *** WELCOME FILE ***
0138.00 #------------------------------------------------------
0139.00 # Welcome Welcome.html
0140.00 #------------------------------------------------------
0141.00 # *** DIRECTORY LISTINGS ***
0142.00 #------------------------------------------------------
0143.00 DirAccess On
0144.00 #------------------------------------------------------
0145.00 # *** HOME DIRECTOTY ***
0146.00 #------------------------------------------------------
0147.00 HOME /
0148.00 #------------------------------------------------------
0149.00 # サインオン画面の背景画像の定義
0150.00 # 複数設定も可能です。
0151.00 # 複数設定すると、サインオン画面を表示する度にランダムに変わります。
0152.00 #------------------------------------------------------
0153.00 SIGNON_WALLPAPER /AS400-NET.USR/IMG/WALLPAPERS/OIRASE.JPG
0154.00 SIGNON_WALLPAPER /AS400-NET.USR/IMG/WALLPAPERS/TAKASHIMA.JPG
0155.00 SIGNON_WALLPAPER /AS400-NET.USR/IMG/WALLPAPERS/TSUNOSHIMA.JPG
0156.00 SIGNON_WALLPAPER /AS400-NET.USR/IMG/WALLPAPERS/SHIROKUMA.JPG
0157.00 SIGNON_WALLPAPER /AS400-NET.USR/IMG/WALLPAPERS/ALASKA.JPG
0158.00 #------------------------------------------------------
0159.00 # AUTOWEB_ROOT: ルート URL(HTTP://xxx.xxx.xxx.xxx/) へ
0160.00 # アクセスしたときに、サインオン画面を表示し、
0161.00 # AUTOWEB にサインオン可能にするかどうかを
0162.00 # 指定します。
0163.00 # AUTOWEB_ROOT / ESTUDIO_ROOT のいずれかが
0164.00 # *YES になっていると、ルート URL へ
0165.00 # アクセスした時にサインオン画面が表示されます。
0166.00 # また、この設定を *NO にすると、
0167.00 # 自動サインオン (HTTP://xxx.xxx.xxx.xxx/USER:PASS)
0168.00 # も使用不能になります。
0169.00 #------------------------------------------------------
0170.00 AUTOWEB_ROOT *YES
0171.00 #------------------------------------------------------
0172.00 # AUTOWEB_PGM: AUTOWEB のプログラム指定起動を使用可能に
0173.00 # するかどうかを指定します。
0174.00 #------------------------------------------------------
0175.00 AUTOWEB_PGM *YES
0176.00 #------------------------------------------------------
0177.00 # ESTUDIO_ROOT: ルート URL(HTTP://xxx.xxx.xxx.xxx/) へ
0178.00 # アクセスしたときに、サインオン画面を表示し、
0179.00 # ESTUDIO へサインオン可能にするかどうかを
0180.00 # 指定します。
0181.00 # AUTOWEB_ROOT / ESTUDIO_ROOT のいずれかが
0182.00 # *YES になっていると、ルート URL へ
0183.00 # アクセスした時にサインオン画面が表示されます。
0184.00 # ESTUDIO を実際にご使用になるには、
0185.00 # ENTERPRISE SERVER のライセンスが必要です。
0186.00 #------------------------------------------------------
0187.00 ESTUDIO_ROOT *YES
0188.00 #------------------------------------------------------
0189.00 # MIN_SPARE_ENGINES:
0190.00 # 待ち受け中(アイドル状態)の子ジョブの
0191.00 # 最小個数を指定します。
0192.00 # AUTOWEB のセッションが開始されたり、
0193.00 # ESTUDIO CGI の実行が長時間に及ぶなどして、
0194.00 # 待ち受け中の子ジョブの数が
0195.00 # この数値を割り込むと、新しい子ジョブが生成されます。
0196.00 #------------------------------------------------------
0197.00 MIN_SPARE_ENGINES 6
0198.00 #------------------------------------------------------
0199.00 # MAX_SPAWNS_PER_SEC:
0200.00 # 子ジョブが自動生成されるときの、
0201.00 # 一秒当たりの最大生成数を指定します。
0202.00 #------------------------------------------------------
0203.00 MAX_SPAWNS_PER_SEC 4
これはライブラリー ASNET.USR、ファイル HTTPCFG、メンバー CONFIG を SEU によって編集する画面です。
CGI を保管するライブラリーが EnterpriseServer によって提供されるライブラリー CGIBIN である場合は、
HostName に自社の IBM i の IPアドレスを指定するだけで設定は完了します。
各項目はディレクティブと呼ばれます。
ディレクティブには下記のようなものがあります。
| ディレクティブ | 説 明 |
|---|---|
| HostName | HTTPサーバーのホスト名を指定します。これは必ず IBM i のIPアドレスを 指定してください。(必須) 初期値として「導入後の最初のセットアップ」で指定した IPアドレスが登録済みです。 |
| Port | HTTPサーバーがクライアントからの要求を受け取るために待機するPORT番号を 指定します。ただし Alaska はこの値を無視します。 Alaska の待機PORTは STRHTPSVR コマンドでの指定した値で開始されます。 |
| Enable | CGIプログラムを利用するためのメソッドを使用可能にします。通常は GET と POST を Enable にします。Alaskaは HEADメソッドはサポートしていません。 |
| Disable | CGIプログラムが利用するためのメソッドを使用不可にします。 |
| Exec | ブラウザが要求した CGIの実行パス名を実際のライブラリーのパス名に変換します。 |
| Map | ブラウザが要求したパス名を別のパス名に変換します。 Map を使用するのは実際のパス名をブラウザから機密保護にするためです。 |
| Pass | ブラウザにアクセス可能なパスを許可します。 ブラウザがアクセスできる静的なコンテンツの保管場所は Pass で指定されている 必要があります。さらにそのフォルダーやコンテンツに対するアクセス権限も必要です。 |
| DirAccess | ファイル名が明示的に指定されずにディレクトリー名だけを指定された場合に、 ディレクトリーのファイル一覧を表示するかどうかを指定します。 Alaska は DirAccess はサポートしていません。 |
| Welcome | 特定のファイルを指定しない要求に対して省略時の HTMLコンテンツを指定します。 いわゆるホーム・ページの指定に使用します。 |
| SIGNON_WALLPAPER | ログイン時の画面の背景画像を設定します。 背景画像のあるIFSの画像ファイルのフル・パスを指定してください。 複数個のパスを指定した場合はログインの都度ランダムに表示されます。 表示パスはPASSディレクティブで指定のある表示可能な パスでなくてはなりません。 |
【例】 ディレクトリー /AS400-NET.USR の Pass指定
Pass /AS400-NET.USR/*
これはディレクトリー /AS400-NET.USR の配下のすべてのコンテンツへのアクセスを許可します。
最後尾の文字 * は、それ以下すべてを意味しています。
【例】 CGIライブラリー CGIBIN の指定
次は CGI の実行ライブラリーとしてライブラリー CGIBIN を指定しています。
Map /cgi-bin/* /cgi-bin/*.PGM
Exec /cgi-bin/* /qsys.lib/cgibin.lib/*
Pass /cgi-bin/*
ブラウザからのCGI要求で /cgi-bin/CGI001 と指定されたとき、Pass /cgi-bin/* によって
/cgi-bin/以下へのアクセスは許可されます。
Map /cgi-bin/* /cgi-bin/*.PGM によって /cgi-bin/CGI001 という要求は
/cgi-bin/CGI001.PGM として書き換えられます。
次に Exec /cgi-bin/* /qsys.lib/cgibin.lib/* によって要求はさらに
/qsys.lib/cgibin.lib/CGI001.PGM と書き換えられます。
つまり、これらのディレクティブの登録によって/cgi-bin/CGI001 という要求は
/qsys.lib/cgibin.lib/CGI001.PGM と書き換えられて実行されることになります。
このようにディレクティブを使ってCGI の保管場所や実際のディレクトリーを変換するのは
- ブラウザから実際の保管場所を伏せるための機密保護
- 指定の簡略化
- サーバー移管のときの変更を最小限にとどめる
ために一般的に使用される手法となっています。
IBM オリジナル HTTPサーバー構成の設定
IBMオリジナルHTTPサーバーの構成を設定する方法を参考としてご紹介します。
特殊権限 *IOSYSCFGを持つユーザーでサインオンして、コマンド入力画面より
CHGJOB CCSID(5035) + 実行キー
WRKHTTPCFG + 実行キー
によってHTTP構成を表示することができます。次はその表示例です。
HTTP 構成の処理
システム : QUATTRO
オプションを入力して,実行キーを押してください。
5= 表示
順序番
OPT 号 項目
00010 # * * * * * * * * * * * * * * * * * * * * * * * * * * * >
00020 # HTTP DEFAULT CONFIGURATION >
00030 # * * * * * * * * * * * * * * * * * * * * * * * * * * * >
00040 # >
00050 # >
00060 # HostName localhost
00070 HostName 192.168.1.1
00080 # >
00090 # The default port for HTTP is 80; Should specify por >
00100 # if port 80 is not used. >
00110 # Port 80 >
00120 Port 80
設定が完了すれば
CHGJOB CCSID(5026)
CHGJOB CCSID(65535)
で元の日本語環境に戻します。
IBM オリジナルHTTPサーバーのHTTP属性の変更 (CHGHTTPA)
IBMオリジナルHTTPサーバーを日本語環境で使用するためには CHGHTTPAコマンドを使ってHTTP属性を
変更する必要があります。
特殊権限 *IOSYSCFGを持つユーザーでサイン・オンしてから
CHGHTTPA +F4キー
を押してください。
上記のように 自動開始=*YES、CCSIDを00932(英語)から00819(日本語)に変更して
実行キーを押します。
自動開始=*YES にすることによって、次のSTRTCP(TCPIP開始)によって
IBMオリジナルHTTPサーバーも同時に開始されます。
ただしIBMオリジナルHTTPサーバーを使用しない場合は、この設定は必要ありません。
HTTPサーバーの開始
Alaska の開始
HTTPサーバー Alaska を開始させるには
STRSBS ASNET.COM/ENTPRSSVR + 実行キー
を行ってから、
ASNET.COM/STRHTPSVR + F4キー
を押して開始させるか、または
サーバー管理メニュー(GO SERVER)
で開始させることができます。
PORT番号の注意
HTTPサーバーの PORT番号は 80番が一般的です。
しかし既に IBM HTTPサーバーなどを使用しているために PORT= 80が使用済みである場合には
Alaskaの開始 (STRHTPSVR) は PORT= 3009 を初期値として割り当てます。
PORT=80 が空きであれば STRHTPSVR は PORT= 80 で開始されます。
(Alaska を重複して開始しようとするときも PORT= 3009となります。)
CGIキャシュ・サービスの注意
開発中の段階においてCGI キャシュ・サービスを *ON にして開始するとCGI の結果は
最初に実行された結果がキャッシュされて CGIを再コンパイルしても最初のキャッシュの結果だけが、
繰り返し送られてくることになってしまいます。
よって開発中の場合はキャッシュを *ON にすべてきではありません。
すべてのCGI の検証を終えて本稼動を開始することき初めてキャッシュを *ON に
設定するようにしてください。