|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
LinuxへのPHP4+DB2 インストール日本アイ・ビー・エム ソフトウェア事業部 データマネジメント事業推進 技術部 下佐粉昭 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
今、ほとんどのWebサイトでは動的なHTMLが使用されています。動的にHTMLを作成するにはCGIを利用したり、JSP、ASPを利用する等いくつかの手段がありますが、ここ数年でユーザー数を急速に増やしているのがPHPです。 URLの最後が、***.php、*****.php3等となっているページを見た事はないでしょうか? あれがPHPを使用しているページです。PHPは、
今回は、Linux上にPHP4と、Apache(Webサーバー)、DB2 ユニバーサル・データーベースをインストールし、PHP4からDB2にアクセスするための設定方法をご紹介します。PHP、ApacheともにWebからダウンロードできますし、DB2も、
使用したハードウェアは以下の通りです。(一台のみ)
2.Apache+PHPのインストール方法について Linux上にApache と PHPをインストールする場合、PHPのインストール方法を以下の3つの方法から選ぶ事になります。お勧めはDSOを使用する事ですが、どの方法でもPHPで出来る事に変りはありません。
2.1 Apache DSO Apache DSOとは、Apache の ローダブル・モジュールの事です。実行時、必要になった時にライブラリがApacheにロードされます。PHPがバージョンアップしてもPHPだけ入れ替えればよく、Apacheを再コンパイルする必要が無いので、この方法がお勧めです。ただし古いバージョンのglibcには動的ロードに関する不具合があり、PHPがDB2のライブラリをLOADできなくなる障害が発生する場合があるようです。この場合は、glibcを新しいものに更新するか、組み込みモジュールとしてPHPをインストールする必要があります。(詳しくは3.2章を参照) 2.2 Apacheの組み込みModule 静的にApacheにPHPのモジュールを組み込む方法です。PHPのコンパイル後にApacheのコンパイルをする必要があります。 2.3 CGI PHPはCGIとしても利用可能です。しかし、CGIはクライアントからアクセスが有るたびにプロセスを生成するため、あまり効率が良いとは言えません。組込みモジュールが使用不可能な環境以外ではお勧めしません。(このドキュメントではCGIからのPHPの利用方法は説明していません。)
3. インストール Linuxのインストールは完了しているものとして、各ソフトウェアのインストール方法を説明します。ただし、OSインストール時にはOS付属のApacheやPHPをインストールしないようにして下さい。もし、インストールしていた場合は、先に削除しておいてください。 3.1 DB2のインストール ここでは、DB2 UDB V8.1 for Linuxのインストール方法を解説します。V7.xを使用の場合は、以下のドキュメントを参照してください。 「DB2 UDB for Linuxクイックインストール(PDF版)」 rootでログインして、まずDB2のCDROMをマウントします。 # mount /mnt/cdrom DB2 V8から、インストーラーが全OSでグラフィカルなJavaベースのものに変更されました。(GUI無しでインストールするコマンドも用意されています。DB2のリリースノートを確認してください。) まだX(GUI)環境が起動していない場合は、以下のコマンドでXを起動します。 # startx続いてDB2のインストーラーを起動します。 # cd /mnt/cdrom/ (JREの日本語表示に必要な日本語フォントが入っていない環境ではLANG="" ./db2setup と実行する事で英語メッセージで実行できます) 以下は、DB2インストールの一例です。どのようにインストールしていただいても問題ありませんが、PHPをコンパイルするために開発環境だけは必ず含めるようにしてください。 上記画面で、「製品のインストール」を選択します。 DB2 UDB Enterprise Server Editionを選択して「次へ」をクリックします。 DB2本体ではなく、クライアントだけを導入したい場合は、Application Development ClientかAdministration Clientを導入します。 DB2をインストールする前に以下の事を計画しておく必要があります。
この記事では、以下のように計画しました。
※今回はUID,GIDは指定せず、インストーラーのデフォルトを使用しましたが、UID,GIDを指定することもできます。 DB2ライセンス情報の確認です。内容を確認して同意できたら「同意する」をチェックして、「次へ」をクリックします。 インストール・タイプを選択します。 「DB2 UDB Enterprise Server Editionをこのコンピューターにインストールする」にチェックを付けて、「次へ」をクリックします。 「設定を応答ファイルに保存する」を選択すると、今回のインストール内容をファイルにして保存しておく事ができます。別のコンピュータにDB2を導入する際にそのファイルを利用する事で導入の手間を減らす事ができます。 カスタムを選択した場合は、このようにインストールする機能を選択する画面になります。インストールしたい機能にチェックを付けてください。 言語の選択画面です。日本語表示モードでインストーラを起動している場合は、日本語が選択済み(右の選択済み言語に入っている)の状態になっていますので、そのまま「次へ」をクリックします。 ここでの選択は、ヘルプメッセージやコマンド実行時の応答メッセージを表示するためのメッセージカタログの選択です。日本語を選択から外しても、メッセージが英語で出るようになるだけで、日本語のデータをDBに格納することはできます。 管理サーバーについての設定です。 表 1で計画した内容にしたがって、管理サーバーのオーナになる新規ユーザーの名前、パスワード、ホームディレクトリを入力してください。また、UID、GIDの数値を指定したい場合は、「デフォルトUIDを使用する」のチェックを外し、値を入力してください。 管理サーバーは外部から管理をしやすくするための機能で、管理サーバーが起動していなくても、DB2に接続してトランザクションを実行したり、設定を変えるなど、DB自体の操作は可能です。また、ここで作成しなかった場合でも、DB2導入ディレクトリのinstance/ディレクトリ内の、dascrtコマンド(DB2 UDB V7ではdasicrtコマンド)で後から管理サーバーを作成することも可能です。 インスタンスのセットアップです。 パーティッションの選択です。パーティションインスタンスを使用すると、複数のコンピュータを使って一つのDBを作成するパラレルDBサーバーを構築できます。パーティション化されたインスタンスを使用するには、DB2のパラレルフィーチャー・オプションが別途必要になります。
インスタンス所有ユーザー(インスタンスオーナー)を作成します。インスタンス所有ユーザーは、インスタンス内で最高権限を持つユーザーです。DB2ではインスタンス名=インスタンス所有者のユーザー名になります。インスタンスに対して操作を実行したい場合はこのユーザーでシステム(OS)にログインする必要があります。 隔離(分離)ユーザーも表 1の計画に従って、ユーザー名、パスワード、ホームディレクトリを入力してください。 TCP/IPの何番ポートで接続を待つかという設定です。ここで設定したポート番号にクライアントからコネクションを張ることでDB2のインスタンスに接続できます。 認証タイプは、ユーザーの認証をどうやって行うかを決定します。通常は「サーバー」を選択しておく事で、このサーバーのログイン機構を利用して認証が行われます。ここでは「サーバー」を選択します。
ツール・カタログDBの設定です。DB2には複数の周辺ツールが付属していますが、そのうちのいくつかを使用するには、DBへデータを格納する必要があります。ツール用のDBは別のマシンに有ってもよいですし、PHPの動作に必須ではありませんがDB2ツールが動作できるように、ここで作成しておく事をお勧めします。 ツール・カタログ用のDBを作成するインスタンスと、データ?ベース名、スキーマを選択します。ここでは先ほど作成したインスタンスを選択します。 DB2に注意が必要なことを管理者に知らせる場合の連絡先を指定します。 通知先のメールアドレスを設定します。名前とメールアドレスを入力します。 全て入力が完了すると、サマリーが表示されます。インスタンス名やポート番号に間違いが無いことを確認して「完了」をクリックします。後は自動的にDB2のインストールが行われます。 インストールが終了すると上記のような状況レポートが表示されます。全て成功で終わっている事を確認してください。失敗に終わっている項目がある場合は設定内容に誤りが有った可能性があります。セットアップ・ウィザードに戻って正しい内容に修正してください。 インストールが正常に終了したら、CD-ROMをアンマウントします。 # cd インストール後に少し設定をしておくと、PHPの導入がスムーズに進みます。まず、rootユーザーでDB2のライブラリの位置を/etc/ld.so.confに追記し、ldconfigを実行します。このldconfigを実行しておかないとPHPのmake
installが失敗に終わります。 # vi /etc/ld.so.conf次に、実験用のサンプルデータ?ベースを作成します。インスタンス所有ユーザーでログインする必要があります。ログインしなおすか、su コマンドでインスタンス所有ユーザーになってください。suコマンドでユーザーを変更する場合は、以下のようにかならず-(ハイフン)をつける事を忘れないでください。ハイフンを忘れるとDB2の操作に必要な環境変数が正しく設定されず、DB2の操作ができなくなります。 # su - db2inst1 インスタンス所有ユーザーになったら、以下のコマンドでサンプルデータ?ベースを作成します。 $ db2start (まだ起動していない場合のみ) ディレクトリを指定しない場合は、インスタンスユーザーのホームディレクトリ以下にインスタンスユーザー名と同名のディレクトリが作成され、その中にサンプルDBが作成されます。 3.2 ApacheとPHP4のインストール (Apache DSOを利用する場合)
以下の手順でインストールを行ってください。 1) rootになる $ su - 2) ソースコードを用意する # ls 3) 環境変数を設定する # export LANG=ja_JP.ujis (DB2 V7の場合のみ必要)4) Apacheのソースを展開して、コンパイル、インストールを行う # tar zxfv apache_1.3.27.tar.gz5) /usr/local/apache/conf/httpd.conf 内に以下の4行を追加する 6) PHPのコンパイル、インストールを行う<IfModule mod_php4.c> AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps </IfModule> # cd ..--with-ibm-db2の部分ではDB2をインストールしたディレクトリを指定します。DB2 UDB V7 for Linuxでは --with-ibm-db2=/usr/IBMdb2/V7.1/ と指定します。また、この様に--with-ibm-db2を設定してコンパイルしたPHPでないと、DB2と接続する事ができない事に注意してください。 # makemake installが終了したら、/usr/local/apache/conf/httpd.conf内に、 という行があるかどうか確認します。LoadModule php4_module libexec/libphp4.so その後、PHPの設定ファイルをコピーします。 # cp php.ini-dist /usr/local/lib/php.ini これでインストールは完了です。4章に進んでください。 以下の手順でインストールを行ってください。 1) rootになる $ su -2) ソースコードを用意する # ls 3) 環境変数を設定する # export LANG=ja_JP.ujis (DB2 V7の場合のみ必要) 4) Apacheのソースを展開して、configureのみ行う(コンパイルはしない) # tar zxfv apache_1.3.27.tar.gz 5) PHPのコンパイル、インストールを行う # cd .. --with-ibm-db2の部分ではDB2をインストールしたディレクトリを指定します。DB2 UDB V7 for Linuxでは --with-ibm-db2=/usr/IBMdb2/V7.1/ と指定します。また、この様に--with-ibm-db2を設定してコンパイルしたPHPでないと、DB2と接続する事ができない事に注意してください。 # make 6) PHPの設定ファイルをコピーする # cp php.ini-dist /usr/local/lib/php.ini 7) 今作ったPHPのライブラリを使用して、Apacheをコンパイル/インストールします # cd ../apache_1.3.27 8) /usr/local/apache/conf/httpd.conf 内に以下の4行を追加する <IfModule mod_php4.c> AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps </IfModule> これでインストールは終了です。4章に進んでください。
4. 起動テスト 簡単な起動テストを行ってみましょう。以下の手順で行います。 1) Apacheを起動する # /usr/local/apache/bin/apachectl start 2) Apacheのプロセスが起動されている事を確認する(httpdというのがApacheのプロセスです。) # ps auxwww| grep http
正しくPHPが動作していた場合、図 3の様な画面が見えるはずです。 ここで、画面内のODBC libraryの欄にdb2が書かれている事を確認してください。
図 3 php起動テストスクリプトの実行画面 PHPも動作したので、次にApache+PHP4+DB2の動作を確認しましょう。 以下のように、/usr/local/apache/htdocs/db2test.phpというファイルを作成します。
(ユーザーID、パスワードはDB2をインストールした時の内容に修正する必要が有ります)
次にapachectlを修整して、Apache起動時にdb2profileを読み込む様に設定します。 # cp /usr/local/apache/bin/apachectl /usr/local/apache/bin/apachectl.org以上の修正が済んだら、Apacheを再起動してください。 # /usr/local/apache/bin/apachectl restartまだDB2が起動していない場合は、起動します。 # su - db2inst1 WEBブラウザでhttp://サーバー名/db2test.phpにアクセスしてください。用意したPHPスクリプトはSAMPLEデータベースのSTAFF表を全てSELECTして表形式で表示するというものです。うまく図
4の様な画面が表示されましたでしょうか? 図 4 PHPスクリプトの実行結果
5. その他の情報 このドキュメントでは、WEBサーバーとDB2が同じマシン上で動作していますが、DB2とWEBサーバーを別のマシンに分ける場合、WEBサーバーにDB2開発クライアント(Application Development Client)を導入し、データベースに接続できるようにカタログする必要があります。カタログはクライアント構成アシスタントかCATALOGコマンドで実行できます。マニュアルのCATALOGコマンドを参照してください。 PHPからDB2を呼び出す場合、Unified ODBCという名の関数群(odbc_connect等)を使用してアクセスする事が出来ます。また、PHP内では、ODBCライブラリの一覧内にDB2が登録されていますが、これはPHPがDB2にアクセスする際にODBCを使用するという意味ではありません。PHPには、各社DB毎に違うアクセス関数が用意されています(たとえば、ORACLEとInfomixのアクセス用関数は別々に用意されている)が、比較的後期にサポートされたDBの多くはUnified
ODBCというODBCにAPI仕様を似せて作られた関数群を用いてアクセスする様に作成されているようで、DB2にアクセスする場合もこれに従っています。 情報リンク
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||