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はちょっと、という僕のような人にはたまらない感じです。