0
0

(CGI3)IBMiのWeb環境インストール

Posted at

■概略

オープンソースエンジニア歴30年超の筆者が2023年からIBMiを学びだした学習記録です
IBMi標準のapache設定方法をまとめました

■CGI用ライブラリの作成

CGI用のライブラリCGILIBにコンパイルしたPGMを置く
このライブラリをapacheのscriptaliasで/cgi-binでアクセスできるように設定する
また開発者ユーザプロファイルのJOBDにCGILIBを含むライブラリパスを設定する

crtlib_CGI.bash

system "CRTLIB LIB(CGILIB) TEXT('IBMi CGI')"
system "CHGJOBD JOBD(TAKAMILIB/TAKAMIJOBD) INLLIBL(TAKAMILIB BKNLIB_FF CGILIB QGPL QTEMP)"

■IBM Web Administration for iで設定

◯Web I/F

2通りのアクセス方法がある
*IBM Web Administration for i(IBMiのWebサーバの設定をWeb I/Fで確認する)
 http://{IP}:2001/HTTPAdmin
 ID / PW は QSECOFRを使用する(*PGMRや*SECADMでは権限不足)

*IBM Navigation for i(IBMiの各種設定をWeb I/Fで確認する)
 http://{IP}:2001 → ようこそ → IBMiタスクページ で
 IBM Web Administration for i : http をクリックする

◯起動と自動起動

 IBM Web Administation for iで、
 [管理]-[HTTPサーバ]-サーバ[APACHEDFT -Apache] で[▷]ボタンで起動する
 [管理]-[HTTPサーバ]-サーバ[APACHEDFT -Apache]-サーバエリア[グローバル構成]で、
 [一般サーバ構成]-[自動始動] : [はい] に設定して[OK]で自動起動になる
 [一般サーバ構成]-[listenするIPアドレスとポート] : [*8080] に変更する
 ※弊社環境では80で別プログラムが稼働しているため

◯漢字コード

 [拡張]-[設定]-[グローバル・サーバ設定]-[コード化文字セットID] 1208
 ※漢字コード参考URL : https://www.ibm.com/support/pages/node/1171264
  ・apacheの設定(上記)でコード化文字セットID=1208を設定する
  ・CGIのディレクトリでCGIJobCcsid 5035を設定する
  メニューから設定しなくてもhttpd.confで設定してもよい

◯ドキュメントルート

 APACHEDFTの標準設定では、ドキュメントルートは IFSの/www/apachedft/htdocs

◯設定ファイル

 APACHEDFTの標準設定では、設定は IFSの/www/apachedft/conf/httpd.conf
 IBM Web Administration for iで設定変更し、reloadしてもよいが、
 httd.confを直接編集し、IBM Web Administration for iでreloadしてもよい

◯新規に作成する場合

http://{IP}:2001/HTTPAdmina

[HTTPサーバの作成]

HTTP サーバーの作成
サーバー名:	APACHEDFT
サーバー記述:	 
サーバー・ルート:	/www/apachedft
文書ルート:	/www/apachedft/htdocs
IP アドレス:	すべての IP アドレス
ポート:	8080
ログ・ディレクトリー:	/www/apachedft/logs
アクセス・ログ・ファイル:	access_log
エラー・ログ・ファイル:	error_log
ログの保守:	7 日
[サーバプロパティ]-[一般サーバ構成]-[一般設定]  
 自動始動 : はい  
 文書ルート : /www/apachedft/htdocs  
 IPアドレスとポート : * 8080  
[サーバプロパティ]-[一般サーバ構成]-[拡張] 
 クライアントCCSID : 1208   
[サーバプロパティ]-[コンテナ管理]-[ディレクトリ]  
 ディレクトリ /QSYS.LIB/CGILIB.LIB/ を[追加]  
[サーバプロパティ]-[URLマッピング]-[別名]  
 スクリプト別名	/cgi-bin/	/QSYS.LIB/CGILIB.LIB/  

■httpd.confを直接編集する

IFSにbashとvimをインストールしておけば、httpd.confを直接編集できる
ユーザープロファイル毎に別URLを作成する

ユーザプロファイル ライブラリ URL
なし CGILIB http://{サーバ}:8080/cgi-bin/
takami TAKAMILIB http://{サーバ}:8080/~takami/cgi-bin/

◯httpd.conf

/www/apachedft/conf/httpd.conf

# Configuration originally created by Create HTTP Server wizard on Tue Jun 18 13:13:34 JST 2024
Listen *:8080 http
DocumentRoot /www/apachedft/htdocs
TimeOut 30000
KeepAlive Off
TraceEnable On
AddLanguage en .en
# Log
LogFormat "%h %T %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%{Cookie}n \"%r\" %t" cookie
LogFormat "%{User-agent}i" agent
LogFormat "%{Referer}i -> %U" referer
LogFormat "%h %l %u %t \"%r\" %>s %b" common
CustomLog logs/access_log combined
LogMaint logs/access_log 7 0
LogMaint logs/error_log 7 0
# Env
SetEnvIf "User-Agent" "Mozilla/2" nokeepalive
SetEnvIf "User-Agent" "JDK/1\.0" force-response-1.0
SetEnvIf "User-Agent" "Java/1\.0" force-response-1.0
SetEnvIf "User-Agent" "RealPlayer 4\.0" force-response-1.0
SetEnvIf "User-Agent" "MSIE 4\.0b2;" nokeepalive
SetEnvIf "User-Agent" "MSIE 4\.0b2;" force-response-1.0

DirectoryIndex index.html
AccessFileName .htaccess
<Directory />
    Require all denied
</Directory>

# DocRoot
<Directory /www/apachedft/htdocs>
    #Require all granted
    Require ip 10. 192.168. 172.
</Directory>

# UserDir
UserDir public_html
UserDir disabled root
<Directory /home/*/public_html>
    AllowOverride FileInfo AuthConfig Limit Indexes
    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
    Require method GET POST OPTIONS
    Require ip 10. 192.1. 192.168. 172.
</Directory>

# CGI
AddCharset UTF-8 .html .pgm
DefaultNetCCSID 1208
ServerName 127.0.0.1
AccessFileName .htaccess
ScriptAlias /cgi-bin/ /QSYS.LIB/CGILIB.LIB/
<Directory /QSYS.LIB/CGILIB.LIB/>
    CGIJobCcsid 5035
    AllowOverride None
    SetHandler cgi-script
    Options +ExecCGI
    Require ip 10. 192.1. 192.168. 172.
</Directory>
ScriptAlias /~takami/cgi-bin/ /QSYS.LIB/TAKAMILIB.LIB/
<Directory /QSYS.LIB/TAKAMILIB.LIB/>
    CGIJobCcsid 5035
    AllowOverride None
    SetHandler cgi-script
    Options +ExecCGI
    Require ip 10. 192.1. 192.168. 172.
</Directory>
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0