phpにOracle Clientをインストール
php5.4からOracleにアタッチするとかでOracleクライアントのインストール要請。php5.4はすでにyumでインストールされているとして、手順は以下のステップ。
- Oracleクライアントのrpmをダウンロード
- rpmで上記インストール
- Oracleクライアントのライブラリを参照可能なところへリンク
- php-oci8をyumでインストール
- apacheの環境変数で文字コードを設定
Oracleクライアントのrpmをダウンロード
ブツは http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html このあたりにあります。仕様するアーキテクチャとプラットフォームにあったものをダウンロード。
私の場合は以下の二つをダウンロードしました。
oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm oracle-instantclient12.1-devel-12.1.0.2.0-1.x86_64.rpm
この二つをrpmでインストール
あまり考えない。あぁでも順番はあるかも。
# rpm -ivh oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm # rpm -ivh oracle-instantclient12.1-devel-12.1.0.2.0-1.x86_64.rpm
Oracleクライアントのライブラリを参照可能なところへリンク
上記rpmをインストールすると、下記のライブラリが/usr/lib/oracle/12.1/client64/libへインストールされるので、これらを/usr/lib64とか適当なところへリンク。
libclntsh.so.12.1 libmql1.so libipc1.so libnnz12.so libons.so libclntshcore.so.12.1 libocci.so libclntshcore.so libclntsh.so libociei.so liboramysql12.so
apacheの環境変数で文字コードを設定
/etc/sysconfig/httpdへ以下一行追加。もちろん使用する文字コードに合わせて調整。
export NLS_LANG Japanese_Japan.UTF8
chefのレシピとかattributesとか
上記の作業はすべてchef経由で実施しています。レシピとかattributesとかは以下の通り。oracleクライアントのインストールに関する設定は以下。
files/default
以下のファイルを二つ置く。
oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm oracle-instantclient12.1-devel-12.1.0.2.0-1.x86_64.rpm
attributes/default.rb
default['oracle_client']['rpms'] = [ {rpm_package_name:"oracle-instantclient12.1-basic", rpm_file_name:"oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm" } , {rpm_package_name:"oracle-instantclient12.1-devel" , rpm_file_name:"oracle-instantclient12.1-devel-12.1.0.2.0-1.x86_64.rpm" } ] default['oracle_client']['directory'] = "/usr/lib/oracle/12.1/client64/lib" default['oracle_client']['todir'] = "/usr/lib64" default['oracle_client']['libraries'] = [ "libclntsh.so.12.1", "libmql1.so", "libipc1.so", "libnnz12.so", "libons.so", "libclntshcore.so.12.1", "libocci.so", "libclntshcore.so", "libclntsh.so", "libociei.so", "liboramysql12.so" ]
recipes/default.rb
libdir = node['oracle_client']['directory'] todir = node['oracle_client']['todir'] node['oracle_client']['rpms'].each do |rpms| cookbook_file "/tmp/#{rpms['rpm_file_name']}" do source rpms['rpm_file_name'] end package rpms['rpm_package_name'] do provider Chef::Provider::Package::Rpm guard_interpreter :bash source "/tmp/#{rpms['rpm_file_name']}" action :install end end # #インストールされるライブラリを/usr/lib64へリンクする。 # node['oracle_client']['libraries'].each do |libs| link "#{todir}/#{libs}" do to "#{libdir}/#{libs}" link_type :symbolic end end
3月26日追記
肝心なphp-oci8のインストールが抜けていました。追記しておきました。