[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 メーリングリストの案内