晩酌しながらサーバ管理。 こんな「てきとー管理者」にサーバ預けて、大丈夫?
Search
Powered by
Movable Type 4.23-ja
■■■■■免 責■■■■■
このサイトを参考にしたために発生した一切の損害に「てきとー管理者」は一切関知しませんし、補償もしません。 また、本サイトの記述が正しいことも保証しません。
自己責任にてお願いします。
-------------------------
京都の鍵トラブルなら鍵レスキュー 鍵師が、家・金庫・バイク・車等の解錠を始め鍵に関する全般、また防犯設備士からみた防犯診断の上の工事等、安心しておまかせ下さい。24時間対応致します。
「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 するようにしよう。
これも、管理者の宿命ですね・・・・。