OraRails

Oracle(9i,10g)+RubyOnRails(Ver1.2.1+Apache+mongrel)の設定メモ

PHP OCI接続

2006-12-22 19:12:20 | Xserver+apache
Oracle Instant Client で PHP OCI接続します。

1. apache → DSO対応に して 再コンパイル
2.PHPの再コンパイル

参考サイト1)Do you PHP()

失敗しました。。。

phpのソースフォルダへ移動して

./configure --with-apsx=/usr/local/apache2/bin/apxs --with
-mysql=/usr/local/mysql --with-oci8=instantclient,/usr/local/oracle/instantclient10_1 --e
nable-mbstring --enable-mbstr-enc-trans --enable-mbregx

make

warning /usr/local/oracle/instantclient10_1/libclntsh.dylib cputype (18, architecture ppc) does not match cputype (7) for specified -arch flag: i386 (file not loaded)


/usr/bin/ld: Undefined symbols:
_OCIAttrGet
_OCIAttrSet
・・・・・
_OCIObjectFree
_OCIObjectNew
_OCIStringAssignText
_OCIStringPtr
_OCITypeByName
_OCITypeByRef
collect2: ld returned 1 exit status
make: *** [sapi/cgi/php] Error 1


原因をWEBで調べていると、いろいろ見つかりました。
まず、このマシンはIntel Xeon Mac です。

Intel Mac でPHP OCI接続できない人の叫びがありました
Instant Client for Intel Mac
Oracle が Intel Mac用のlibraryを作るのを待つしかないようです。








Ruby インストール

2006-12-16 15:01:31 | Xserver+apache
OSX Tiger(10.4) に入っているRuby1.8.2は、最適な形ではないらしい。
よって、以下のサイトを参考にRubyをインストールする

参考サイト1)A::Watch OSXにRuby On Railsをインストールする方法

やること
1.readline のインストール readline-5.2.tar.gz
readlineとは..CUIのアプリケーションにおいて快適な行編集や履歴機能を提供するライブラリ.

2. Rubyインストール ruby-1.8.5-p2.tar.gz


Ruby 1.8.5-p2について
Ruby 1.8.5より、より安定したバージョンのRubyをユーザに提供するため、通常のリリース版から重大な不具合のみを修正した版をpatchlevel X (pX) としてリリースしていくこととなりました。今回のRuby 1.8.5-p2は、2006年8月25日にリリースされたRuby 1.8.5に対するpatchlevel 2ということになります*1。

Ruby 1.8.5-p2では、リリースと同時に公開されたCGIライブラリのDoS脆弱性の対応が行われています。また、既に11月2日付で公開済みの脆弱性の対応も含まれています。


既にインストール済みのバージョンと緩衝しないために、ファイル名を変更する

参考サイト2)Mac OSXのRubyを1.8.4にアップデートしつつ、Railsも1.1.4に
ソースからコンパイルをすると、デフォルトでは /usr/local/bin にインストールされるらしい。既存の環境も、とりあえず残しておきたかったので、/usr/bin のrubyをリネームして、シンボリックリンクを張ることにする。

------------------------------------------
mv /usr/bin/ruby /usr/bin/ruby1.8.2
ln -s /usr/local/bin/ruby /usr/bin/ruby
mv /usr/lib/ruby /usr/lib/ruby1.8.2
ln -s /usr/local/lib/ruby /usr/lib/ruby
------------------------------------------

cd /usr/local/bin(enter)
ruby -v (enter)
ruby 1.8.5 が出ればOK

3.RubyGemsインストールrubygems-0.9.0.tar

cd /usr/src/rubygems-0.9.0(enter)
/usr/local/bin/ruby setup.rb(enter)

4.RubyOnRailsインストール
まず プロキシを通す。
cd /usr/local/bin(enter)
export http_proxy=http://プロキシサーバーIP:ポート(enter)
gem install rails --include-dependencies


完了

参考サイト3)Ruby インストールガイド
参考サイト4)[./configure --prefix=$HOME]でインストールしたRubyをアンインストールするにはどうしたらいいですか?

Apache2.0,PHP5 のインストール

2006-12-13 09:16:46 | Mac
MacOSX V10.4 のApache,PHPをバージョンアップしたい。
・Apache 1.3.33 -> 2.0.59
・PHP 4.4.4 ->  5.2.0

参考サイト1MacOSXにApache2とMySQL4とPHP5とTomcat5をインストール

1. httpd-2.2.3.tar.gz を デスクトップで解凍
2.ターミナルで入って、./configure --enable-so
3. make
4. make install
5. /usr/local/apache2以下にhttpdサーバが配置されます。
6. /usr/local/apache2/bin/apachectl start
→ Apache2 起動しました

この状態では、1.3.33と共存しているので,[It Works]は表示されません。

7.Apache2の自動起動設定(参考サイト2MacOSX-Apache2のインストール)

Apache2の自動起動設定
UNIX的な設定ファイルをターミナルで弄る必要があります。

まずStartupItemsを作成します。/Library/StartupItems/Apache2 ディレクトリを作成します。コマンドラインでrootになるか、sudoを使って操作します。/Library/StartupItems/Apache2 ディレクトリに、Apache2というファイルとStartupParameters.plistというファイルを作ります。ファイルの中身は以下のようになります。

/Library/StartupItems/Apache2/Apache2

--------------------------------------
#!/bin/sh

##
# Apache2 HTTP Server
##

. /etc/rc.common

StartService ()
{
if [ "${APACHE2:=-NO-}" = "-YES-" ]; then
ConsoleMessage "Starting Apache2 web server"
if [ ! -e /usr/local/apache2/conf/httpd.conf ] ; then
cp -p /usr/local/apache2/conf/original/httpd.conf /usr/local/apache2/conf/httpd.conf
fi
/usr/local/apache2/bin/apachectl start
fi
}

StopService ()
{
ConsoleMessage "Stopping Apache2 web server"
/usr/local/apache2/bin/apachectl stop
}

RestartService ()
{
if [ "${APACHE2:=-NO-}" = "-YES-" ]; then
ConsoleMessage "Restarting Apache2 web server"
/usr/local/apache2/bin/apachectl restart
else
StopService
fi
}

RunService "$1"
--------------------------------------
オーナーをroot:wheel、パーミッションを755にします。


/Library/StartupItems/Apache2/StartupParameters.plist
-----------------------------------------------
{
Description = "Apache2 web server";
Provides = ("Apache2 Web Server");
Uses = ("Disks", "NFS");
}
-----------------------------------------------
オーナーをroot:wheel、パーミッションを644にします。

MacOSX 10.4では、この2つのファイルのオーナーとパーミッションがセキュリティ的に正しくない場合、なんとOSが起動時に警告を出し、修正するように促してきます。

最後に/etc/hostconfigファイルを修正します。
viエディタ等を用いてAPACHE2=-YES- という文字を最後に追加しておきます。
WEBSERVER=-YES- をNOにします

これでMac起動時にApache2も起動するようになります。書き換えには管理者権限が必要です。

/etc/hostconfig

AFPSERVER=-NO-
AUTHSERVER=-NO-
AUTOMOUNT=-YES-
CUPS=-AUTOMATIC-
NFSLOCKS=-AUTOMATIC-
NISDOMAIN=-NO-
#WEBSERVER=-YES-
WEBSERVER=-NO-
TIMESYNC=-YES-
QTSSERVER=-NO-
WEBSERVER=-NO-
SMBSERVER=-NO-
SNMPSERVER=-NO-
SPOTLIGHT=-YES-
CRASHREPORTER=-YES-
APACHE2=-YES-


参考サイト2
PHP+Oracle Instant Clientのインストール







Oracle instantclient

2006-12-12 20:37:17 | Mac
Mac OS X10.4 をクライアントとしてリモートサーバーに接続する。

1.Instantclientの設定
参考サイト1.Creativist
↑ほとんどこのままでいけます。

ひっかかるのは、sqlplus を/usr/bin/ にコピーすることです。
環境変数の設定です。

command not found :sqlplus になる。

サーバーを再起動したあとに sqlplus を打つと
-----------------------------------------------------
dyld: Library not loaded: /b/729/sqlplus/lib/libsqlplus.dylib
Referenced from: /usr/ora_instant_client/instantclient10_1/ ./sqlplus group16@orca
Reason: image not found
Trace/BPT trap
--------------------------


となった。

source /etc/profile を実行すると良好になった。原因は良くわからない

うまく行かないときは
参考サイト2oracle forum


最終的に
sqlplus ユーザー名/パスワード@//IPアドレス:ポート/スキーマ
で接続される。

具体例は ★設定IP他★ を参照

検索

2006-12-04 09:22:42 | ActiveRecord
手順

1.OracleでOCI接続する。
2.テーブル名、主キーをセットする。
  ->主キー、テーブル名命名規則と異なる場合
   set_table_name,set_primary_keyが必要

(1)
require 'active_record'

ActiveRecord::Base.establish_connection(
:adapter => "oci",
:username => "***",
:password => "***",
:host => "***")

(2)

class Master <ActiveRecord::Base
set_table_name "TM50RC"
set_primary_key "TM50RC_F02"
has_many :reserve

end

class Reserve <ActiveRecord::Base
set_table_name "RESERVE"
set_primary_key "RCODE"
belongs_to :master,
:foreign_key => "RCODE"


def self.yycall(attributes)
patient = attributes[:parameter]
Reserve.find(:all,:conditions => ["RESERVE.PTID = ? and TM50RC.TM50RC_F01 =?", patient,50],>:include =>:master
end

end

:include の参考は RailsML