第8回 2003/2/26

復刻第38弾!!3年半まえ

━━━━━━━━━━━━━━━━━━━━━━ 2003.02.26 Vol.685 ━━━━━━
 □■□
 ■□■□■□■□■ 日刊「WEBのツボ!!」
 □■□                      http://www.soho-union.com/
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
                          配信部数 2923部

【○】本日のお題 「システムはオブジェクト指向、そしてRubyで」(#008) ━━━━
                                                            福井修@Fsys

まず前回 http://www.melma.com/mag/02/m00020302/a00000455.html #008となってい
ましたが #007 の間違いでした。m(_ _)m

■ 旬の話題 から
阪神・淡路大震災被災地域の復興プロジェクトの一環で
「企業のWEBマスターや担当者、またクリエイターのためのWebソリューション講座」
が開催されています。http://www.hero.or.jp/eizo/semina/
2月9日『 web が提供するユーザー体験の実態 』Macromedia 田中章雄 取締役&CTO
を拝聴しました。
・ リッチインターネットアプリが方向
・ 高付加価値を追求しようとすると『 体験 (Experience) 』へ
    原料 → 製品 → サービス → 体験
                                ~~~~
などのお話が印象に残っています。
で 結局 クライアントは 『 Flash 』って ことでした。さすがぁ

# 講演では、スクリプトの話までは言及はありませんでしたが
FlashActionScript は、ECMAScript準拠(要するにJavaScriptECMAScripthttp://www-6.ibm.com/jp/developerworks/web/010803/j_wa-emca.html 参照)
なのですが、当然 独自拡張されていて、なんと『オブジェクト指向スクリプト』だ
そうで、なんかどっかで聞いたことがありそう^^;;

私は、Flash 知らないおじさんなのですが、ActionScriptは、使いこなしてやろうと
心に決めました。(2月9日会場では、稲木さんともお会いしましたし^^)
技術評論社の「WEB+DB PRESS」では、エアビートの羽生章洋氏が Vol.3,Vol.8,Vol10
で記事を書いておられたのを読み飛ばしていましたが、今読み返しています。

「クライアントは ActionScript、サーバは Ruby」で美しい『オブジェクト指向スク
リプト』デュエット誕生ですな。ぱちぱちぱち。

では本題の Ruby CGIの続きです。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■■   Ruby CGI 入門 その4
──────────────────────────────────────
今回は Ruby/eRuby を使ってDBアクセスする準備です。

──────────────────────────────────────
■ Ruby/eRuby-DB 連携準備
──────────────────────────────────────
・ 動作環境
ここのところ Rubyの入門用に敷居の低い Windowsでの説明をしてきました。
DB連携のテーマで、Windowsを続けようとすると お手頃DBには
  1) Access
  2) SQLServer/MDE
  3) MySQL
  4) PostgreSQL on Cygwin
  5) PostgreSQL Windows Native
などがあります。

SQLServer は、SQLServer Slammerとかありましたし。
http://itpro.nikkeibp.co.jp/free/ITPro/NEWS/20030126/1/
http://internet.watch.impress.co.jp/www/article/2003/0203/slammer.htm
http://internet.watch.impress.co.jp/www/article/2003/0204/mi2g.htm

こんな話題もあります『MSのサブライセンス禁じる判決、SQL Server顧客に影響も』
http://www.zdnet.co.jp/news/0302/22/nebt_15.html

MySQLは、試してみましたが View ができないのでくじけました。(MAXは未Try)

結局、私はPostgreSQLを好むので、PostgreSQL の場合で説明します。
そうすると   4) PostgreSQL on Cygwin か 5) PostgreSQL Windows Native となり
ます。

PostgreSQL on Cygwin については、
「WindowsユーザのためのPostgreSQL導入活用ガイド」谷田豊盛さん
http://www.gihyo.co.jp/books/syoseki.php/4-7741-1627-0
が詳しいはず(谷田さんとは、何度も飲んでいる(彼も神戸)のですが、私はその
本はまだ買っていない ^_^;;)なので、そちらにおまかせ。

PostgreSQL Windows Native については
・ SRA、WindowsPostgreSQL『PowerGres』を発表 2002年11月27日
http://ascii24.com/news/i/soft/article/2002/11/27/640235-000.htmlオープンソースデータベース「PostgreSQLWindows版
『PowerGres』のベータ版リリース開始のご案内 2003年1月30日
http://www.sra.co.jp/public/sra/topics/topics2002/030130.shtml
正式版は2003年3月中に発売開始予定なので、もうすぐですね。

これは、まだ私自身 賞味していないので今回のところは、LinuxPostgreSQLで行
きます。(まあ オープンソーストレンドでは、Linux がメインなので)

まあ Windowsから世界を拡げるのに「オープンソースなDBを使う為にLinuxへ」と
いうのは、良いきっかけになると思います。
# Nimdaもひとつのきっかけだったでしょうが。
MacOS XBSD系なので Unix系と関わりなしには、もう生きてゆけないでしょう
し :-p

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■ Linux環境準備
  RedHatVine... 特に指定はありません。
  ソースからコンパイル・インストールしますので、Defaultで入っている分は、
  rpm -e ....
  などで、取り除きます。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■ Apacheインストール (2003/02/24現在 2.0.44)
  http://httpd.apache.org/download.cgi から
  tar.gzファイル を hogeへダウンロードし、展開、コンパイル、インストール
  ( 以下 (hoge) というのは 任意の場所 )
  http://www.apache.jp/ など参照

  $ su -
  # cd /usr/local/src
  # tar xvfz (hoge)/apache_2.0.44.tar.gz
  # cd apache_2.0.44
 注)インストール場所指定ありの場合
  # ./configure --prefix=/usr/local/apache --enable-module=so \
       --enable-shared=max --enable-rule=SHARED_CORE
 注)インストール場所指定なしの場合
  # ./configure --enable-module=so \
       --enable-shared=max --enable-rule=SHARED_CORE
  # make
  # make install

────────────────────────────────────
■ Apache設定ファイル編集
  Apacheのインストール場所/conf/httpd.conf に次の設定を追加・変更します。

  # ServerName を定義
  ServerName hoge

  # cgi で .rb .rhtml を動作させる指定
  AddHandler cgi-script .rb .rhtml

  #AddDefaultCharset ISO-8859-1 ← 標準設定では文字化けするので
  AddDefaultCharset EUC-JP #← すべて2バイトEUCでよい場合

  #LanguagePriority en da nl et fr de el it ja kr no pl pt pt-br ltz ca..
  #         ↓
  # ja最優先に
  LanguagePriority ja en da nl et fr de el it kr no pl pt pt-br ltz ca..

  # CGIを実行させたいディレクトリ領域に、オプション「ExecCGI」を追加
    
      order allow,deny
      allow from all
      Options +ExecCGI +Includes
    

  mod_ruby を使用する場合は、もうすこしいろいろ設定があります。
  ここでは、mod_ruby は使いません。

────────────────────────────────────
■ Apache(再)起動
  (# Apacheのインストール場所/bin/apachectl stop)
  # Apacheのインストール場所/bin/apachectl start

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■ Rubyインストール (2003/02/24現在 1.6.8)
  http://www.ruby-lang.org/ja/20020102.html から
  tar.gzファイル を (hoge)へダウンロードし、展開、コンパイル、インストール

  $ cd /usr/local/src
  $ tar fxzv (hoge)/ruby-1.6.8.tar.gz
  $ cd ruby-1.6.8
  $ ./configure
  $ make
  $ su -
  # make install
  # ldconfig

────────────────────────────────────
■ eRubyインストール (2003/02/24現在 1.0.3)
  
  http://raa.ruby-lang.org/list.rhtml?name=eruby から 
  tar.gzファイル を (hoge)へダウンロードし、展開、コンパイル、インストール

  $ cd /usr/local/src
  $ tar fxzv (hoge)/eruby-1.0.3.tar.gz
  $ cd eruby-1.0.3
  $ ./configure.rb --with-charset=euc-jp
  $ make
  $ su -
  # make install
  # ldconfig

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■ PostgreSQLインストール (2003/02/24現在 7.3.2)
  (http://osb.sra.co.jp/PostgreSQL/7.3/install.htmlなども参照)
  
  ftp://ftp6.jp.postgresql.org/postgresql/source/v7.3.2/
  から 
  tar.gzファイル を (hoge)へダウンロードし、展開、コンパイル、インストール

  $ su -
  # mkdir /usr/local/pgsql
  # chown postgres:postgres /usr/local/pgsql
  # cd /usr/local/src/
  # tar xzvf postgresql-7.3.2.tar.gz 
  # chown postgres.postgres -R postgresql-7.3.2

  login:postgres  
  $ cd postgresql-7.3.2

  $ ./configure --enable-syslog
  $ make 
  $ make install

───────────────────────────────────
■ PostgreSQL実行環境設定
  $ cd ~
  $ vi ./bashrc
  export PG=/usr/local/pgsql
  export PGCLIENTENCODING=EUC_JP
  export PGLIB=$PG/lib
  export PGDATA=$PG/data
  export PATH=$PATH:$PG/bin
  export MANPATH="$MANPATH":$PG/man
  export LD_LIBRARY_PATH="$LD_LIBRARY_PATH":"$PGLIB"

  ・ 変更を反映させる
  $ source .bashrc

  ・ DB初期化
  $ initdb -E EUC_JP

  ・ 設定ファイル編集準備
  $ cd /usr/local/pgsql/data
  $ chmod 600 pg_hba.conf
  
  ・ 設定ファイル編集
  $ vi pg_hba.conf
  host     all    *1  255.255.255.0  trust

  $ vi postgresql.conf
  fsync = false
  tcpip_socket = true
  silent_mode = true
  syslog = 2

  ・ データベースの起動
  $ pg_ctl start

───────────────────────────────────
■ ruby-postgres のインストール
  これは PostgreSQL にアクセスするための Rubyの拡張モジュールです。
  
  ・ ruby-postgres (2003/02/24現在 0.7.1)
  http://www.postgresql.jp/interfaces/ruby/index-ja.html から
  tar.gzファイル を (hoge)へダウンロードし、展開、コンパイル、インストール

  $ su -
  # cd /usr/local/src
  # tar xzfv (hoge)/ruby-postgres-0.7.1.tar.gz
  # cd ruby-postgres-0.7.1

・ extconf.rb を実行。--with-pgsql-lib-dir と --with-pgsql-include-dir で
    PostgreSQL のライブラリ及びインクルードファイルがインストールされて
    いる場所を指定します。

  # ruby extconf.rb --with-pgsql-lib-dir=/usr/local/pgsql/lib \
                    --with-pgsql-include-dir=/usr/local/pgsql/include

  # make
  # make install
  # ldconfig

 【注】makeに成功しても、実行時にlibpqライブラリが見つからずにエラーになる場
  合があります。この場合は、LD_LIBRARY_PATH環境変数で、libpqライブラリの位置
  を指定することで対処できますが、make時にあらかじめpath位置を埋め込んでlink
  することで、設定モレに対処できます。
  LD_RUN_PATH環境変数libpqのpath位置をセットしてmakeします。

  $ env LD_RUN_PATH=/usr/local/pgsql/lib make

──────────────────────────────────────
準備だけで 今回は、おしまいです。次回をお楽しみに。

【プロフィール】
福井 修 ( FUKUI Osamu )o-fukui@po.iijnet.or.jp
福井システムリサーチ http://fsys.net/  主幹。システム構築歴25年。
日本リヌクス協会、神戸商工会議所情報処理学会 会員
関西ソーホ・デジタルコンテンツ事業協同組合デジタルハリウッド三宮校 Java講師

*1:hoge).(hoge).(hoge).(hoge