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 に
設定するようにしてください。