nkjmkzk.net

powered by Kazuki Nakajima

Archive for the ‘apache’ tag

Oracle DatabaseとphpでOPAL環境を構築する

昨日はOracle Database XEの紹介とインストール手順を解説しました。

今日はそのXEを使ってOPAL環境を構築したいと思います。OPALとはかなりマイナーな略式名称ですが、Oracle Database, PHP, Apache, Linuxで構成するWeb+DBのスタックのことです。いわゆるアレです、LAMP(Linux, Apache, MySQL, PHP)みたいなもんです。というか平たく言えばパクリでしょう。*ちなみに「P」はPHP,Python,Perlのどれか。

昨日まででLinuxとOracle Databaseのインストールは済んでいるという前提で、その同じマシンにApacheとPHPをインストール/セットアップしていきましょう。それぞれ今日現在で最新のhttpd-2.2.10とphp-5.2.8を使用します。

まずはApacheですがこれは簡単、というかとくにOPALだからといって特別な手順やオプションはありません。普通にコンパイルしてインストールします。

# tar xvfj httpd-2.2.10.tar.bz2
# cd httpd-2.2.10/
# ./configure ¥
--prefix=/srv/httpd ¥ #適当に置き換えてください
--enable-so #多分デフォルト有効なのでいらないと思われますが一応
# make
# make install

終了ーー。では次にphpのインストールへ。

# tar xvfj php-5.2.8.tar.bz2
# cd php-5.2.8/

次のコンフィグが結構ミソです。phpからOracleに接続するにはOCI (Oracle Call Interface) を使うのが一般的かつ、性能面、機能面で最適な方法と言われています。ただしこれにも2種類あって、PDO_OCIと普通のOCI8というのがあります。実際、よりup-to-dateなドライバはOCI8になります。PDO_OCIの方はMySQLやPostgreSQLに接続する際でも統一されたインターフェースを提供してくれるいわゆる抽象化ドライバです。なので一見こいつをつかっといた方が後でDBを切り替えることがあった際に便利なのですが、残念ながら最近このPDO_OCIはメンテナンスされておらず、OCI8で実装されているBugFixや機能拡張などが反映されていません。なのでOracle一筋な方は迷わずOCI8を選択してください。そしてこのOCI8を使用するにはコンフィグ時に--with-oci8オプションを指定しておく必要があります。ちなみにPDO_OCIの方は--with-pdo-ociとします。一応こいつも入れておいてやろう。

# ./configure ¥
--prefix=/srv/php ¥ #適当に置き換えてください
--with-apxs2=/srv/httpd/bin/apxs ¥ #Apacheをインストールした場所によって置き換えてください
--with-oci8=shared,/usr/lib/oracle/xe/app/oracle/product/10.2.0/server ¥ # $ORACLE_HOMEを指定します。
--with-pdo-oci=shared,/usr/lib/oracle/xe/app/oracle/product/10.2.0/server ¥ # 同じく$ORACLE_HOMEを指定します。
--with-gd ¥
--with-gettext ¥
--disable-short-tags ¥
--enable-pdo ¥
--enable-mbstring ¥
--enable-exif ¥
--enable-sigchild

これでOK。ビルドしていきます。

# make
# make install

これでバイナリがインストールされました。次に設定ファイルを作成します。テンプレートがあるのでそれをコピーして少しだけ編集(追記)します。

# cp php.ini-recommended /srv/php/lib/php.ini
# vi /srv/php/lib/php.ini
extension_dir=/srv/php/lib/php/extensions/no-debug-non-zts-20060613
extension=oci8.so

あと、httpd.confにも少し手を入れます。以下を最後の方にでも追記してください。

# vi /srv/httpd/conf/httpd.conf
AddType application/x-httpd-php .php 
AddType application/x-httpd-php .phtml 
AddType application/x-httpd-php-source .phps 

これでOKです。なお、今更ですがSE Linuxとかが有効になっているとphpのモジュールをロードする際にエラーになっていまうので/etc/selinux/configでSELINUX=disabledにしておいてください。もうこれで使える状態にあるのですが、実はこのphpのソースにバンドルされているOCI8は結構古かったりします。気持ち悪いので最新版にアップデートしておきたいところです。というわけでPECLから最新のソースをとってきます。

# wget http://pecl.php.net/get/oci8-1.3.4.tgz
# tar xvfz oci8-1.3.4.tgz
# cd  oci8-1.3.4/
# /srv/php/bin/phpize
# ./configure --with-oci8=shared,/usr/lib/oracle/xe/app/oracle/product/10.2.0/server
# make
# make install

これでばっちりです。最新のモジュールが/srv/php/lib/php/extensions/no-debug-non-zts-2006061にインストールされました。あとはapachectl startするだけです。ちなみに一応ちゃんとOCI8がインストールされているか確認するためにphpinfo()を活用しましょう。Apacheのドキュメントルートに以下の様にファイルを作成します。

# vi /srv/httpd/htdocs/phpinfo.php
<?php
phpinfo();
?>

そしてこのサーバにアクセスしましょう。


http://あなたのIPアドレス/phpinfo.php

するとこんな画面が出てくるはずです。

下の方にスクロールしていき・・・

ありましたね。よかったよかった。ひとまずこれでセットアップは完了です。

ちなみに今回のようなOPAL環境の構築について、佐藤さんがいち早く良いドキュメントを紹介されています。

http://www.oracle.com/technology/tech/php/pdf/underground-php-oracle-manual.pdf

英語にはなってしまうのですがこれははっきり言ってかなりの良書です。Oracle好きだけどJavaはちょっと、という僕のような人にはたまらない感じです。

with one comment

Written by 中嶋 一樹

12月 14th, 2008 at 7:49 pm

Posted in Uncategorized

Tagged with , ,