■概略
オープンソースエンジニア歴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>