HTTP構成の設定

IBM i をWebサーバーとして構成するには HTTP構成を設定する必要があります。
HTTPサーバーとして

  1. Alaska
  2. IBMオリジナルHTTPサーバー
  3. IBM HTTPサーバーPowered by Apache

の選択肢がありますが、このうち 日本語環境での動作が保証されるのは 1. Alaska だけです。

2. IBM オリジナルHTTPサーバー は POSTメソッドによる 入力漢字の文字化けが発生 します。
3. IBM HTTPサーバー Powered by Appache追加PTFが必要 であり、HTTP構成が複雑
動作させるには困難となります。

ここでは EnterpriseServer で提供される HTTPサーバーである Alaska の設定を中心に解説します。

Alaska HTTP 構成の設定

サーバー管理メニュー( GO SERVER )

オプション 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
POSTEnable にします。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 に
設定するようにしてください。