ushidayの日記

主に「IBMi」のメモに・・・

Zend Server for i5 CE で複数のインスタンスを動かす

随分ご無沙汰のブログですが久々にアップです...。
「Zend Server for i5 CEでphp.iniの設定変えて別インスタンスを起動する事って、出来なくなったのかね?」なんていう、Twitterでのやりとりがありました。「Zend Server(※以下ZS)ではどうよ?」という興味から少し調べてみました。
そもそも、Zend Core(※以下ZC)でさえやった事がなかったのですが、ZC時代は、IHS(IBM HTTP Server)に対してリバースプロキシをしていたのですが、ZSになりIHSに対して直接FasgCGIモジュールとして動作するようになりました。ZC時代はアパッチを含んでいたので、そのデーモンを別途起動するだけなんでしょうと勝手に推測。
ZSは「IHSのインスタンス新たに作って、設定ファイルコピればいいんじゃね?」と思ったので検証しました。試す場合には自己責任でお願いします。
前提としては、ドキュメントルートを共用する場合を想定して、行いました。

動作環境
    • IBMi V5R4M0
    • Zend Server for i5 CE 5.0.2 (PHP 5.3)

IHSインスタンスの作成

IHSのインスタンスを作成するには、IHSの管理画面にアクセスします。管理画面は、STRTCPSVR *HTTP の*ADMINインスタンスが起動されている必要があります。手順は以下の通りです。

■手順のイメージ





インスタンスが出来上がると下の図のようになります。

php.iniの設定

既存のphp.iniをコピーして、新たに作成したインスタンス(この場合はZENDSVR2)用のphp.iniを作成します。

cp -prh /usr/local/zenssvr/etc /usr/local/zendsvr/etc2


HTTPの設定

既存のconfディレクトリをコピーして、httpd.confとfastcgi.conf設定を新たに作成したインスタンス用に変更します。

cp -prh /www/zendsvr/conf /www/zendsvr/conf2

httpd.confのリッスンポートを変更します。デフォルトは10088です。

fastcgi.confの「SetEnv="PHPRC=xxxxx"」で設定されている。php.iniを読み取るリソースディレクトリの設定を変更します。これは先のphp.iniをコピーしたディレクトリになります。この場合は、"/usr/local/zendsvr/etc2"になります。FastCGIについてあまり詳しくないのですが、Apacheの"PHPIniDir"の指定で任意のファイル名を指定できるのとは違い、php.iniのファイル名は決まっている?様です。FastCGIについて...

IHSインスタンスの起動

IHSインスタンスを起動します。これは管理画面でも出来て起動パラメータを指定できるのですが、うまくいきませんでした。自分のログインしたユーザーがCCSID5026だったからかもしれません。後日5035で検証してみます。
※追記 5035だと起動できました。CCSIDには注意しましょう。ちなみに構成やポートの表示は空気読んでくれません。
とりあえず、5250でSTRTCPSVR *HTTP インスタンス名 -f /www/zendsvr/conf2/httpd.confで、IHSインスタンスを起動する事が出来ます。

ジョブの実行状態確認した様子 

動作確認

こんな感じで、別インスタンスで起動しました。ZENDSVRサブシステム(i5コマンドやその他機能)の検証はとれていないので、課題としてその辺りを検証する必要がありますね。

IHSの管理画面について

IHSの管理画面は強制的に、アプリケーションディレクトリconfを見ている様で、ポートや設定は下記の図の様に正しく使えなくなります。そもそも何でconf決め打ちなんだろ?これだと管理画面として使えないので、ドキュメントルート共用したいだけなら、リンク貼ったほうが管理画面はそのまま使えて良いかなとも思うし。ただこの管理画面の設定表示は、includeとかするとエラー扱いになったりで個人的感想としては、「もう一歩なんだけどなぁ」と言った感じです。