Tuesday, June 14, 2005

automatic start postgres on mac os x

ช่วงนี้ใช้ mac os x
ในการพัฒนา web application อยู่
แต่มีปัญหาความไม่สะดวกเล็กๆน้อยในส่วนของ
การ start/stop postgres service
ซึ่งไม่รู้จะทำอย่างไร (os x ไม่เหมือน linux ที่ใช้ init.d)
วันนี้ได้ฤกษ์ค้นหาเสียที

ได้ความว่า os x มี directory
/System/Library/StartupItems
สำหรับทำเรื่องนี้โดยเฉพาะ

วิธีการก็คือ

sudo -c sh
cd /System/Library/StartupItems
mkdir Postgres
cd Postgres
vi Postgres


โดยเนื้อหาของ file Postgres
เป็นดังนี้
#!/bin/sh
DATABASE="/usr/local/pgsql/data"
. /etc/rc.common

StartService ()
{
if [ "${POSTGRES:=-NO-}" = "-YES-" ]; then
ConsoleMessage "Starting Postgres database"
sudo -u postgres /usr/local/pgsql/bin/pg_ctl start -D $DATABASE
elif [ "${POSTGRES:=-NO-}" = "-AUTOMATIC-" ]; then
sudo -u postgres /usr/local/pgsql/bin/pg_ctl start -D $DATABASE
fi
}

StopService ()
{
ConsoleMessage "Stopping Postgres database"
sudo -u postgres /usr/local/pgsql/bin/pg_ctl stop -D $DATABASE
}

RestartService ()
{
if [ "${POSTGRES:=-NO-}" = "-YES-" ]; then
ConsoleMessage "Restarting Postgres database"
sudo -u postgres /usr/local/pgsql/bin/pg_ctl stop -D $DATABASE
sudo -u postgres /usr/local/pgsql/bin/pg_ctl start -D $DATABASE
else
StopService
fi
}

RunService "$1"


จากนั้นก็
vi StartupParameters.plist


โดยมีเนื้อหาดังนี้
{
Description = "Postgres database server";
Provides = ("");
Requires = ("Resolver");
Uses = ("Network Time", "NFS");
Preference = "None";
Messages =
{
start = "Starting Postgres";
stop = "Stopping Postgres";
restart = "Reloading Postgres database";
};
}


เสร็จแล้วก็อย่าลืม chmod +x Postgres ด้วย
สุดท้ายก็ืคือ vi /etc/hostconfig
เพิ่มบรรทัดนี้
POSTGRES=-YES-

เป้าหมายเพื่อใช้เป็น flag ควบคุมการ start, stop service

Related link from Roti

No comments: