Search




TOPページへ

このブログのフィードを取得
[フィードとは]

Powered by
Movable Type 4.23-ja

template by tokyobuddha

 ■■■■■免 責■■■■■
このサイトを参考にしたために発生した一切の損害に「てきとー管理者」は一切関知しませんし、補償もしません。 また、本サイトの記述が正しいことも保証しません。
自己責任にてお願いします。
 -------------------------

京都の鍵トラブルなら鍵レスキュー 鍵師が、家・金庫・バイク・車等の解錠を始め鍵に関する全般、また防犯設備士からみた防犯診断の上の工事等、安心しておまかせ下さい。24時間対応致します。

LinuxでDB2クライアント

「Linux側からDB2に接続できん!」と連絡が入った。

早速問題のLinuxで接続テストをしてみた。

DB2のクライアントUSERである「db2inst1」にてログイン

SQLコマンドを打ってみる
$ db2 connect to XXdb user XXuser using XXXX
$ select * from XXtest
正常に接続できる。。。

     ※一部「X」の伏字にしてあります。

っと言うことは、Linuxそのものの接続障害は出ていない。
って事は、apache+php+DB2の時に障害が出ている可能性がある。

今回の環境はDB2のServerがWindowsServer2003でクライアントとしてCentOS4を使っている。
メンテナンスを簡単にするために、オリジナルのRPMを一部カスタマイズしてインストールしている。
※セキュリティバグがあった際に簡単にUP出来るように・・・

DB2接続テスト用のphpを用意して確認するが、接続できない。
apacheを再起動しても接続できない・・・・。
困った。

そういえば、LinuxのDB2クライアントの設定を行った際にphpでの接続テストは行っていなかった。
もしかすると、RPMのカスタマイズが不完全なのかも知れない。

CentOSのUPDATEを確認するとphpのバージョンが上がっている。
※php-4.3.9-3.9 → php-4.3.9-3.15
ついでなのでrpmbuildの時にバージョンアップも行ってしまおう。
CentOSのサイトから「php-4.3.9-3.15.src.rpm」を持ってくる。

rootにて
# rpm -ivv php-4.3.9-3.15.src.rpm

展開されたディレクトリに移動
# cd /usr/src/redhat/SPECS/

元となる設定FILEをコピーしておく
# cp php.spec php_db2.spec

設定FILEをDB2用に書き換える。
(DB2用のパッケージにするにはODBCの部分を一部書き換える。DB2専用になってしまうが、問題はないだろう。)

# vi php_db2.spec

先ずはバージョンを解りやすいように書き換える
Release: 3.15 と言うところを
  ↓
Release: 3.15.DB2 に変更


BuildRequires: unixODBC-devel と言う所を
  ↓
#BuildRequires: unixODBC-devel コメントアウト


--with-unixODBC=shared,%{_prefix} \ と言うところを
  ↓
--with-ibm-db2=shared,/opt/IBM/db2/V8.1 \ に変更

この3つを書き換えたら
# rpmbuild -bb php_db2.spec

しばらくすると、RPMが出来上がる。

現在インストールされているphpを念のためすべて削除し、改めて今回カスタマイズしたRPMをインストール。

php-odbcのインストール時で「libdb2.so.1 is needed by php-odbc-4.3.9-3.15.DB2」と言うエラーが出るが強制的にインストール。
# rpm -ihv --nodeps php-odbc-4.3.9-3.15.DB2.i386.rpm

必要なパッケージをインストールしたら一旦apacheを再起動して、テスト用のPHPを参照してみる。

  ・
  ・
  ・
  ・
  ・
  ・
  ・
  ・
  ・
  ・
  ・
  ・
  ・
  ・
  ・
  ・
  ・
  ・
  ・
  ・
  ・

繋がらない・・・・・(ーー;)

えっ! なんで~~~

もしかしてPHPのrebuildの失敗ではなく、他に原因があるのかも知れない。
もしかして、apache起動時にDB2も起動しているが、その部分に問題がありそうだ。

以前正常にDB2接続できたapacheのバージョンは1.3.33だった。
今回のapacheは2.0.52だ。

今までは
/etc/rc.d/init.d/httpd の先頭の方に・・・

. /home/db2inst1/sqllib/db2profile
LANG=ja_JP.eucJP
export LANG

を追加していたが、apache2では使えないのかも知れない。
そこで、/usr/sbin/apachectl に

. /home/db2inst1/sqllib/db2profile
LANG=ja_JP.eucJP
export LANG

を書いてみた。

# /etc/rc.d/init.d/httpd restart

繋がらない・・・・

では、これでどうだ!!

# /usr/sbin/apachectl restart

(^^)v 繋がった。

でも、問題が・・・
apache1.3.33の起動スクリプトとapache-2.0.52の起動スクリプトの違いが解らない。
/usr/sbin/apachectl を見比べても解らない・・・・
OS起動時にapacheを起動しているが、DB2を呼び出すことが出来ない。

# chkconfig httpd off

でapacheの自動起動を停止。
仕方が無いので、OS再起動時は/usr/sbin/apachectl start するようにしよう。

これも、管理者の宿命ですね・・・・。

投稿時間: 00:03