[pgsql-jp: 27933] Re: PostgreSQLのブート時の起動方法

Masashi Ohba ohba @ intelight.co.jp
2002年 11月 11日 (月) 17:53:00 JST


大場です。

yamanaka wrote;

>教えて欲しいのですが、PostgreSQLをインストールして
>ブート時にPostgreSQLも起動するようにしたいと思っています。
>マニュアルを読んだら配布ファイルの中の
>contrib/start-script/freebsdを使えって書いてあったので
>その通りに、このファイルを
>/usr/local/etc/rc.d/ にコピーして実行権を与えました。

些細なことですがちゃんとスクリプト読んでたら
「/use/local/etc/rc.d/freebsd start」
とはなりませんね?

「# PostgreSQL boot time startup script for FreeBSD.  Copy this file to
 # /usr/local/etc/rc.d/postgresql.」

ですから。

それは置いといて、スクリプトだけなら
#!/bin/sh
case $1 in
start)
    [ -d /usr/local/pgsql/lib ] && /sbin/ldconfig -m /usr/local/pgsql/lib
    [ -x /usr/local/pgsql/bin/pg_ctl ] && {
        if [ -f /tmp/.s.PGSQL.5432 ]; then
                rm /tmp/.s.PGSQL.5432
        fi
        su -l pgsql -c \
            'exec /usr/local/pgsql/bin/pg_ctl start -w -D /usr/local/pgsql/data -l /usr/local/pgsql/errlog'
        echo -n ' pgsql'
    }
    ;;

stop)
    [ -x /usr/local/pgsql/bin/pg_ctl ] && {
        su -l pgsql -c 'exec /usr/local/pgsql/bin/pg_ctl stop -W -D /usr/local/pgsql/data -m fast'
    }
    ;;

status)
    [ -x /usr/local/pgsql/bin/pg_ctl ] && {
        su -l pgsql -c 'exec /usr/local/pgsql/bin/pg_ctl status -D /usr/local/pgsql/data'
    }
    ;;

*)
    echo "usage: `basename $0` {start|stop|status}" >&2
    exit 64
    ;;
esac

ってなスクリプトで私の周囲のマシンでは
FreeBSDの起動時に特に問題無く動いてます。
昔のportsのものベースに手直ししたものですが。

ところで、ソースからインストールしてると仮定して
/usr/local/pgsql/libのパーミッションはどうなってますか?

FreeBSDのどこからのバージョンか忘れましたが
初期設定では起動時にrootがオーナーで無いディレクトリにある
ライブラリは、セキュリティの関係で「読まない」のがデフォルトに
なった記憶があります。それでライブラリが読めないで動いてない
とか。そういうことはありませんか?

FreeBSDのportsも以前は/usr/local/pgsql/lib使ってたような記憶がありますが
最近のportやpackagesだとPostgreSQLのライブラリは/usr/local/libに入ります。

gw> pwd
/usr/ports/databases/postgresql7
gw> grep lib pkg-plist 
(必要無い所カット)
lib/libpq.so
lib/libpq.a
lib/libpq.so.2
lib/libecpg.so
lib/libecpg.a
lib/libecpg.so.3
lib/libpgeasy.so
lib/libpgeasy.a
lib/libpgeasy.so.2
lib/libpq++.so
lib/libpq++.a
lib/libpq++.so.4
(以下カット)

だからソースから入れるとこれが引っかかるかもしれません


私は「/usr/local/pgsql/lib」以下のオーナーをrootに変えちゃって
上記スクリプトで「ldconfig -m /usr/local/pgsql/lib」で読ませてますが
PostgreSQLの再インストールでPostgreSQLのスーパーユーザーに
パーミッションの設定を戻すの忘れたりとかたまーにやっちゃいますが。

これを無視して読ませるなら、rc.confの他の設定だったかもしれませんが
rc.confで「ldconfig_paths=…」あたりの設定をしてあげる必要があったような…

ライブラリの読めない問題だったらrc.confで設定するのは間違い無いですが
別のrc.confの項目だったら記憶違いなので申し訳無いです。

------------------------------------------------------------
大場正志(Masashi Ohba)
E-Mail  ohba @ intelight.co.jp
(株) インテライト
http://www.intelight.co.jp
------------------------------------------------------------



pgsql-jp メーリングリストの案内