トップ  »  コンピュータガイド  »  データベース  »  PostgreSQL  »  SysVスクリプトを使った自動起動の設定

SysVスクリプトを使った自動起動の設定

PostgreSQLのソースの中には起動制御用のSysVスクリプトファイルが入っています。
これを"/etc/rc.d/init.d"ディレクトリ内にコピーして自動起動の設定をします。

1. SysVスクリプトファイルの在り処

PostgreSQLのSysVスクリプトファイルはPostgreSQLのソースを展開したディレクトリ内の"/contrib/start-scripts"ディレクトリ内に"linux"というファイル名で入っています。
"/{ソースの解凍先}/posgresql-{バージョン番号}/contrib/start-scripts/linux"
"PostgreSQL7.2.3(Unix Source)"をLinuxにインストール」ページの手順どおりであれば"/usr/local/src/postgresql-7.2.3/contrib/start-scripts/linux"ファイルになります。

2. SysVスクリプトファイルのコピーと実行権限の付与

上記のSysVスクリプトファイルを"/etc/rc.d/init.d"ディレクトリ内にコピーして実行可能ファイルにする為の権限を付与します。
コピーのファイル名は任意に付けられますが、一般的には"postgresql"または"postgres"とされるようです。
今回はこの例に倣って"postgresql"としました。

[root@host root]# cd /usr/local/src/postgresql-7.2.3/contrib/start-scripts/
[root@host start-scripts]# cp ./linux /etc/rc.d/init.d/postgresql
[root@host start-scripts]# chmod a+x /etc/rc.d/init.d/postgresql  (実行権限の付与)
[root@host start-scripts]#

3. SysVスクリプトファイルの編集

PostgreSQLのソースの中のSysVスクリプトファイルは標準的な起動オプションが指定されているので、そのままでも十分ですが、TCP/IP接続でPostgreSQLを利用する事は出来ません。
ネットワークで利用できないと不便なのでTCP/IP接続のフラグ("-i")を"postmaster"バックエンドに渡す様に編集します。
その為には起動時のオプションに"-o '-i'"を追記します。
また、その他のフラグを指定する事でより細かな起動の制御が可能になります。

[root@host start-scripts]# vi /etc/rc.d/init.d/postgresql
 :
 :
# Parse command line parameters.
case $1 in
  start)
        $ECHO_N "Starting PostgreSQL: "$ECHO_C
        su - $PGUSER -c "$DAEMON start -D '$PGDATA' -s -l $PGLOG -o '-i'"
        echo "ok"
        ;;
  stop)
 :
 :
:wq
[root@host start-scripts]#

変数"$DAEMON"にはこのファイルの前半で"{インストール先}/bin/pg_ctl"が指定されています。
つまり、これらのフラグは"pg_ctl"アプリケーション(スクリプト)に渡されるオプションという訳です。
そして、"-o {option}"フラグは{option}で指定されたオプションを"postmaster"バックエンドに渡します。
ここでは"-i"を指定してTCP/IP接続を有効にしています。

TCP/IP接続を有効にしても"pg_hba.conf"ファイルにホストレコードの設定をしなければ接続は拒否されます。
"pg_hba.conf"ファイルへのホストレコードの設定方法は「クライアント認証の設定」のページをご参照ください。

4. 自動起動の設定

RedHatLinuxなどではこのままでも手動起動用のスクリプトファイルとして利用できますが、やはりOSの起動時に一緒に立ち上がった方が何かと便利なので自動起動するように設定します。

chkconfigコマンドが使える場合

chkconfigが利用出来る環境であれば"chkconfig --add postgresql"を実行してサービスに組み込む事が出来ます。
その場合にはSysVスクリプトファイル先頭近くに以下のような記述が必要です。

#! /bin/sh
#
# chkconfig: 2345 98 02  (実行の設定)
# description: PostgreSQL RDBMS  (説明文)
                   :

"chkconfig: ..."の行部分で実行の設定を記述します。
初めの"2345"の数字は"2"、"3"、"4"、"5"の各ランレベルで開始(起動)する事を指示しています。
2番目の"98"は各ランレベルでの起動を開始する順序を表し、3番目の"02"は各ランレベルでの停止する順序を表しています。
つまり、起動時には他のプログラムより遅めに起動し、停止する際には早めに停止させる為に2番目の数字は大きく3番目の数字は小さくなっています。
"description: ..."の行部分は起動を制御するプログラムの説明文です。

PostgreSQLのソースからコピーしたSysVスクリプトファイルには既に記述がある筈ですが、万が一無い場合は追記してください。

上記の記述を確認、或いは追記しましたら"chkconfig --add postgresql"を実行します。

[root@host start-scripts]# chkconfig --add postgresql
[root@host start-scripts]#

chkconfigコマンドが使えない場合

chkconfigが使えない環境の場合は"/etc/rc.d/rc0.d"?"/etc/rc.d/rc5.d"の各ランレベル毎のディレクトリにシンボリックリンクを作ります。

[root@host root]# ln -s /etc/rc.d/init.d/postgresql /etc/rc.d/rc0.d/K02postgresql
[root@host root]# ln -s /etc/rc.d/init.d/postgresql /etc/rc.d/rc1.d/K02postgresql
[root@host root]# ln -s /etc/rc.d/init.d/postgresql /etc/rc.d/rc2.d/K02postgresql
[root@host root]# ln -s /etc/rc.d/init.d/postgresql /etc/rc.d/rc3.d/S98postgresql
[root@host root]# ln -s /etc/rc.d/init.d/postgresql /etc/rc.d/rc4.d/S98postgresql(注)
[root@host root]# ln -s /etc/rc.d/init.d/postgresql /etc/rc.d/rc5.d/S98postgresql
[root@host root]#

(注):ランレベル"4"は未使用のランレベルなので作らなくても問題ありません。

以上で自動起動の設定は完了です。
OSを再起動してPostgreSQLがちゃんと起動するか確認してみてください。

トラックバック(0)

トラックバックURL: http://www.ezms.net/mt/mt-tb.cgi/15