harumaki.net

インフラ屋の覚書や、ラーメン食べある記とか。

[DB]FireBirdをインストールしてみた(RPM編)

   


FireBird2.5をVPSを利用して、CentOS6環境でささっといじってみました。
epelリポジトリで提供されているパッケージを使えたので、セットアップは楽でした
(yum を最初に利用する際にGPGキーをインポートする必要あり)。
アーキテクチャごとにパッケージが分かれているので、必要に応じてインストールしてあげる形です。

  • 参考:大変お世話になったサイトです!

アーキテクチャについてメモ

まったくど素人なので、まず3種類から選べるアーキテクチャから見てみました。

  1. classic
    • パッケージの場合、スーパーサーバー(xinetd)でデーモンが動く
    • マルチセッション対応
  2. superserver
    • 単独でデーモンが動く
    • キャッシュを全コネクションでシェアする
    • ネットワークレイヤでのアクセスを受け付ける
  3. superclassic
    • もともとあったclassic、superserverの合いの子?一番新しいアーキテクチャ。
    • 単独でデーモンが動く。
    • classicアーキテクチャと、いくつかのライブラリを共有する

とのことでしたが、ど素人なのでよくわかりませんw
superserverがxinetd管理下でなく単独で動作するとかややこしい部分もありましたが、歴史的な経緯なんだろなと…。

アーキテクチャについて、パッケージインストール時にわかったこと

  • classicを使用する場合、xinetdの環境が必要
    xinetdが入っていない場合、yum install時に追加されます。
  • アーキテクチャを指定しないでfirebirdのベースパッケージのみを指定すると、superclassicが選択された(推奨パッケージということかな?)。
  • パッケージの場合、3種類のアーキテクチャがそれぞれコンフリクトしてしまうので、同時にインストールすることはできない。
    • classicとsuperclassicは、本体がそれぞれ競合
      ※両方ともclassic-commonパッケージを利用するのでコンフリクトしないかとおもったがダメでした。
    • classicとsuperserverの場合、classic-commonパッケージとsuperserverが競合
    • superclassicとsuperserverの場合も同じく、classic-commonパッケージとsuperserverが競合
      →詳しくは後述します。
      ソースの場合も、ビルドする際にどれかを選ぶ必要があるのかも。

パッケージ確認

# yum search firebird
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
 * base: ftp.nara.wide.ad.jp
 * epel: ftp.iij.ad.jp
 * extras: ftp.nara.wide.ad.jp
 * updates: ftp.nara.wide.ad.jp
======================================= N/S Matched: firebird ==============================================
firebird-classic.x86_64 : Classic (xinetd) server for Firebird SQL RDBMS
firebird-classic-common.x86_64 : Common files for Firebird "classic" and "superclassic" servers
firebird-devel.i686 : Development Libraries for Firebird SQL RDBMS
firebird-devel.x86_64 : Development Libraries for Firebird SQL RDBMS
firebird-doc.x86_64 : Documentation for Firebird SQL RDBMS
firebird-filesystem.x86_64 : Filesystem for Firebird SQL RDBMS
firebird-libfbclient.i686 : Multi-threaded, non-local client libraries for Firebird SQL RDBMS
firebird-libfbclient.x86_64 : Multi-threaded, non-local client libraries for Firebird SQL RDBMS
firebird-libfbembed.i686 : Multi-process, local client libraries for Firebird SQL RDBMS
firebird-libfbembed.x86_64 : Multi-process, local client libraries for Firebird SQL RDBMS
firebird-superclassic.x86_64 : SuperClassic (single process) server for Firebird SQL RDBMS
firebird-superserver.x86_64 : Superserver (single process) server for Firebird SQL RDBMS
mono-data-firebird.x86_64 : Firebird database connectivity for Mono
firebird.x86_64 : SQL relational database management system
php-ZendFramework-Db-Adapter-Firebird.noarch : Zend Framework database adapter for InterBase
php-interbase.x86_64 : Standard PHP module provides interbase/firebird support
python-kinterbasdb.x86_64 : A Python DB-API 2.0 compliant interface to Firebird

 Name and summary matches only, use "search all" for everything.

インストール(superclassic)

マネージメントシステムである"firebird.x86_64"をインストール対象にすると
アーキテクチャは依存関係パッケージにてfirebird-superclassicが追加されます。

# yum install firebird

Dependencies Resolved

============================================================================================================
 Package                            Arch             Version                   Repository             Size
============================================================================================================
Installing:
 firebird                           x86_64           2.5.1.26351.0-1.el6       epel                   659 k
Installing for dependencies:
 firebird-classic-common            x86_64           2.5.1.26351.0-1.el6       epel                   999 k
 firebird-filesystem                x86_64           2.5.1.26351.0-1.el6       epel                   8.9 k
 firebird-libfbclient               x86_64           2.5.1.26351.0-1.el6       epel                   290 k
 firebird-libfbembed                x86_64           2.5.1.26351.0-1.el6       epel                   1.6 M
 firebird-superclassic              x86_64           2.5.1.26351.0-1.el6       epel                   168 k
 libicu                             x86_64           4.2.1-9.1.el6_2           base                   4.9 M

Transaction Summary
============================================================================================================

Install 7 Package(s)

 
Total download size: 8.6 M
Installed size: 32 M
Is this ok [y/N]: N

ひとまず上記パッケージにdevelを追加する形でインストールしてみることにします。

# yum install firebird \
> firebird-devel \
> firebird-classic-common \
> firebird-filesystem \
> firebird-libfbclient \
> firebird-libfbembed \
> firebird-superclassic \
> libicu

設定ファイル構成

RPM版で入れる分には、ほかのRPMパッケージ同様のファイル配置になるので
パッケージ管理に慣れていれば、特に迷うことはなさそうです。

  • 設定ファイル
    /etc/firebird
  • ファイル構成
    # ll /etc/firebird/
    total 48
    -rw-rw-r-- 1 firebird firebird   247 Feb  3  2012 aliases.conf
    -rw-rw-r-- 1 firebird firebird  6381 Feb  3  2012 fbintl.conf
    -rw-rw-r-- 1 firebird firebird  4914 Feb  3  2012 fbtrace.conf
    -rw-rw-r-- 1 firebird firebird 26723 Feb  3  2012 firebird.conf
  • ログローテート設定ファイル
    /etc/logrotate.d/firebird
  • データ領域
    データ領域はRPM版のmysql、postgreSQL同様、/var/lib以下に展開されていました。
    拡張子.fdbがいわゆるデータファイル(表領域?)です。

    # ls -altR /var/lib/firebird/
    /var/lib/firebird/:
    total 16
    drwxr-xr-x   2 root     root     4096 Aug 15 14:22 system
    drwxr-xr-x   2 firebird firebird 4096 Aug 15 14:22 data
    drwxr-xr-x   4 root     root     4096 Aug 15 14:22 .
    drwxr-xr-x. 23 root     root     4096 Aug 15 14:22 ..
    
    /var/lib/firebird/system:
    total 1968
    drwxr-xr-x 2 root     root       4096 Aug 15 14:22 .
    drwxr-xr-x 4 root     root       4096 Aug 15 14:22 ..
    -rw-r--r-- 1 root     root     159348 Feb  3  2012 de_DE.msg
    -rw-r--r-- 1 root     root     148556 Feb  3  2012 firebird.msg
    -rw-r--r-- 1 root     root     159920 Feb  3  2012 fr_FR.msg
    -rw-r--r-- 1 root     root     811008 Feb  3  2012 help.fdb
    -rw------- 1 firebird firebird 720896 Feb  3  2012 security2.fdb
    
    /var/lib/firebird/data:
    total 1088
    drwxr-xr-x 2 firebird firebird    4096 Aug 15 14:22 .
    drwxr-xr-x 4 root     root        4096 Aug 15 14:22 ..
    -rw-rw---- 1 firebird firebird 1105920 Feb  3  2012 employee.fdb
  • ログファイル出力先
    /var/log/firebird/以下

おまけ:ほかのアーキテクチャをインストールする場合

→結論から言うと、3種類あるアーキテクチャのうち2種類、あるいは3種すべてを
同時にインストールしたり、用途に応じて使い分けたり、といったことは出来ない様子です
※インストール時に–nodepsで入れた場合はわかりませんが、sandboxで試す感じですね。

FireBirdに用意されているアーキテクチャは3種類、firebirdのRPM版の場合はデフォルトでは依存関係によりsuperclassicがインストールされますが
後からclassic、superserverを追加でインストールしようとするとコンフリクトが発生してしまいました。

  • firebird-classicの場合
    # yum install firebird-classic
    
    -- 中略 --
    
    --> Processing Conflict: firebird-superclassic-2.5.1.26351.0-1.el6.x86_64 conflicts firebird-classic
    --> Processing Conflict: firebird-classic-2.5.1.26351.0-1.el6.x86_64 conflicts firebird-superclassic
    --> Finished Dependency Resolution
    Error: firebird-superclassic conflicts with firebird-classic
    Error: firebird-classic conflicts with firebird-superclassic
     You could try using --skip-broken to work around the problem
     You could try running: rpm -Va --nofiles --nodigest
    #
  • firebird-superserverの場合
    # yum install firebird-superserver
    
    -- 中略 --
    
    --> Processing Conflict: firebird-classic-common-2.5.1.26351.0-1.el6.x86_64 conflicts firebird-superserver
    --> Processing Conflict: firebird-superserver-2.5.1.26351.0-1.el6.x86_64 conflicts firebird-classic-common
    --> Finished Dependency Resolution
    Error: firebird-classic-common conflicts with firebird-superserver
    Error: firebird-superserver conflicts with firebird-classic-common
     You could try using --skip-broken to work around the problem
     You could try running: rpm -Va --nofiles --nodigest
    #

yumインストール時に"–skip-broken"を使うか、いったんダウンロードしてrpmコマンドで
個別にインストールする、などの対応になるかと思います。

参考1 classicの場合のファイル構成

	# yum install firebird-classic
	--- snip ---
	=================================================================
	 Package                                           Arch          
	=================================================================
	Installing:
	 firebird-classic                                  x86_64        
	Installing for dependencies:
	 firebird                                          x86_64        
	 firebird-classic-common                           x86_64        
	 firebird-filesystem                               x86_64        
	 firebird-libfbclient                              x86_64        
	 firebird-libfbembed                               x86_64        
	 libicu                                            x86_64        
	
	Transaction Summary
	=================================================================
	Install       6 Package(s)
	
	Total download size: 8.4 M
	Installed size: 32 M

参考2 superserverの場合のファイル構成

	# yum install firebird-superserver
	--- snip ---
	=================================================================
	 Package                                         Arch            
	=================================================================
	Installing:
	 firebird-superserver                            x86_64          
	Installing for dependencies:
	 firebird                                        x86_64          
	 firebird-filesystem                             x86_64          
	 firebird-libfbclient                            x86_64          
	 firebird-libfbembed                             x86_64          
	 libicu                                            x86_64        
	
	Transaction Summary
	=================================================================
	Install       6 Package(s)
	
	Total download size: 10 M
	Installed size: 37 M
	

superserverは"firebird-classic-common"パッケージがインストールされないので
パッケージ数が減るが、firebird-superserver が2MB以上あり、トータルではインストールサイズがもっとも大きいですね。

プロセス(インスタンス)の起動/停止

アーキテクチャ別の運用方法を。

1. classic

classicはxinetd(スーパーサーバー)の起動でアクセスできるようになるので
/etc/xinetd.d/以下の"firebird"ファイルを編集して有効にします。
この辺はtelnetやvsftpdなどと同じなので、特筆事項はありませんが、念のためまとめました。

  • /etc/xinetd.d/firebird
    disble = yesに変更すればOK。

    	{
    	        disable = no
    	        flags           = REUSE
    	        socket_type     = stream
    	        wait            = no
    	        user            = firebird
    	# These lines cause problems with Windows XP SP2 clients
    	# using default firewall configuration (SF#1065511)
    	#       log_on_success  += USERID
    	#       log_on_failure  += USERID
    	        server          = /usr/sbin/fb_inet_server
    	}

    コメントアウトされていますが、Windows XP SP2のファイアウォールの設定に対応したユーザー設定パラメータもある様子(要調査ですが、さすがにSP2はもういいのでは…)

設定変更後、xinetdを起動すればOKです。

2. superclassic

  • 起動/停止スクリプト(init)
    initスクリプトはDBアーキテクチャごとに用意されるようで、今回は
    sperclassicのinitスクリプトがインストールされていました。
  • スクリプト:/etc/init.d/firebird-superclassic
    # ll /etc/init.d/firebird-superclassic
    -rwxr-xr-x 1 root root 2493 Feb  3  2012 /etc/init.d/firebird-superclassic
  • コマンドからの起動/停止
    • 起動
      	# /etc/init.d/firebird-superclassic start
      	Starting Firebird server [default]                         [  OK  ]

      または

      	# service firebird-superclassic start
    • 起動時、"/var/log/firebird/firebird.log"に出力されるログを抜粋
      	hogehoge.localhost (Client)        Tue Jul  1 17:43:20 2012
             /usr/sbin/fbguard: guardian starting /usr/sbin/fb_smp_server
  • 停止
    	# /etc/init.d/firebird-superclassic stop

    または

    	# service firebird-superclassic stop

    ただしデフォルトでは自動起動はONになっていないので、ここは適宜変更してあげるかたちで。

  • ランレベル確認
    	# chkconfig --list | grep firebird
    	firebird-superclassic   0:off   1:off   2:off   3:off   4:off   5:off   6:off
  • ランレベル設定
    	# chkconfig firebird-superclassic on
    	または
    	# chkconfig --level 2345 firebird-superclassic
  • 設定後のランレベル確認
    	# chkconfig --list | grep firebird
    	firebird-superclassic   0:off   1:off   2:on    3:on    4:on    5:on    6:off

3. superserver

  • 起動
    	# /etc/init.d/firebird-superserver start
    	Starting Firebird server [default]                         [  OK  ]

    または

    	# service firebird-superserver start
    • 起動時、"/var/log/firebird/firebird.log"に出力されるログを抜粋
      	hogehoge.localhost (Client)        Tue Jul  1 18:33:19 2012
            /usr/sbin/fbguard: guardian starting /usr/sbin/fbserver

      ※こちらの起動プロセスはfb_smp_serverでなく"fbserver"となっています。

  • プロセスはこんな感じ
    	# ps -aef  | grep firebird
    	firebird 23819     1  0 18:33 ?        00:00:00 /usr/sbin/fbguard -pidfile /var/run/firebird/default.pid -daemon -forever
    	firebird 23820 23819  0 18:33 ?        00:00:00 /usr/sbin/fbserver
    	root     23832  1369  0 18:34 pts/0    00:00:00 grep firebird
  • TCPポート3050番を使って待機してます
    • netstat
      	# netstat -ln | grep 3050
      	tcp        0      0 0.0.0.0:3050                0.0.0.0:*                   LISTEN
    • lsof
      	# lsof -i:3050
      	COMMAND    PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
      	fbserver 23820 firebird    0u  IPv4  28444      0t0  TCP *:gds_db (LISTEN)
  • 停止
    	# /etc/init.d/firebird-superserver stop
    	Stopping Firebird server [default]:                        [  OK  ]

    または

    	# service firebird-superserver stop

こちらもfirebird-superclassic同様デフォルトでは自動起動はONになっていないので
ここは適宜変更してあげるかたちで。chkconfigの設定をすればよいので設定方法は省きます。

  • ランレベル確認
    	# chkconfig --list | grep firebird
    	firebird-superserver    0:off   1:off   2:off   3:off   4:off   5:off   6:off
Firebird 徹底入門
Firebird 徹底入門

posted with amazlet at 13.08.16
木村 明治 はやし つとむ 坂井 恵
翔泳社
売り上げランキング: 446,102

 - CentOS, DB, FireBird, メモ, 作業ログ ,