Re[2]: autostart postgresql - Mailing list pgsql-general

From Andy Corteen
Subject Re[2]: autostart postgresql
Date
Msg-id 718599373.20001102132218@telecam.demon.co.uk
Whole thread Raw
In response to Re: autostart postgresql  (Mike E <mee@quidquam.com>)
List pgsql-general
Hello Mike,

Thursday, November 02, 2000, 1:00:51 PM, you wrote:

ME> * Bob Hartung (rwhart@netexpress.net) wrote:
>> Partial success!
>>   I have postgresql started and have "createdb testdb"
>> successfully.  I am having trouble with autostarting
>> postmaster in RH6.2 however.
>>
>>   I have copied the file
>> "/usr/local/postgresql-7.0.2.......postgres-init"  to
>> /etc/rc.d/init.d and made a softe link to it from .../rc5.d
>> as follows       ln /etc/rc.d/init.d/postgres.init
>> /etc/rc.d/rc5.d/S98postgres.init
>>
>>   postmaster does not autostart upon a reboot.  Do I have to
>> use a start command or other paramater to tell postgres.init
>> to start the postmaster up?  I am not good at reading and
>> deciphering these scripts but would like postgres to
>> autostart everytime the PC boots to runlevel 5.

ME> You can't run postmaster as root, so to do this I believe you
ME> have to write a wrapper script and give it a postgres (or whatever
ME> your admin account is named) sticky bit.

ME> Is this the 'one true way' for doing this?

ME> Mike

See following (and attached) dump of my init script,
/etc/rc.d/init.d/postgresql which should be linked to the runlevel
directories as suitable for your system.

This works automatically on my hosts

*************************************************************************

#! /bin/sh
# postgresql    This is the init script for starting up the PostgreSQL
#               server

# Version 6.5.3-2 Lamar Owen
# Added code to determine if PGDATA exists, whether it is current version
#     or not, and initdb if no PGDATA (initdb will not overwrite a database).

# chkconfig: 345 85 15
# description: Starts and stops the PostgreSQL backend daemon that handles \
#              all database requests.
# processname: postmaster
# pidfile: /var/run/postmaster.pid
#

# Source function library.
. /etc/rc.d/init.d/functions

# Get config.
. /etc/sysconfig/network

# Check that networking is up.
# Pretty much need it for postmaster.
[ ${NETWORKING} = "no" ] && exit 0

[ -f /usr/bin/postmaster ] || exit 0

# This script is slightly unusual in that the name of the daemon (postmaster)
# is not the same as the name of the subsystem (postgresql)

# See how we were called.
case "$1" in
  start)
        echo -n "Checking postgresql installation: "
        # Check for the PGDATA structure
        if [ -f /var/lib/pgsql/PG_VERSION ] && [ -d /var/lib/pgsql/base/template1 ]
        then
        # Check version of existing PGDATA

                if [ `cat /var/lib/pgsql/PG_VERSION` != '6.5' ]
                then
                        echo "old version. Need to Upgrade."
                        echo "See /usr/doc/postgresql-6.5.3/README.rpm for more information."
                        exit 1
                else
                        echo "looks good!"
                fi

        # No existing PGDATA! Initdb it.

        else
                echo "no database files found."
                if [ ! -d /var/lib/pgsql ]
                then
                        mkdir -p /var/lib/pgsql
                        chown postgres.postgres /var/lib/pgsql
                fi
                su -l postgres -c '/usr/bin/initdb --pglib=/usr/lib/pgsql --pgdata=/var/lib/pgsql'
        fi

        # Check for postmaster already running...
        pid=`pidof postmaster`
        if [ $pid ]
        then
                echo "Postmaster already running."
        else
                #all systems go -- remove any stale lock files
                rm -f /tmp/.s.PGSQL.* > /dev/null
                echo -n "Starting postgresql service: "
                su -l postgres -c '/usr/bin/postmaster -i -S -D/var/lib/pgsql'
                sleep 1
                pid=`pidof postmaster`
                if [ $pid ]
                then
                        echo -n "postmaster [$pid]"
                        touch /var/lock/subsys/postgresql
                        echo $pid > /var/run/postmaster.pid
                        echo
                else
                        echo "failed."
                fi
        fi
        ;;
  stop)
        echo -n "Stopping postgresql service: "
        killproc postmaster
        sleep 2
        rm -f /var/run/postmaster.pid
        rm -f /var/lock/subsys/postgresql
        echo
        ;;
  status)
        status postmaster
        ;;
  restart)
        $0 stop
        $0 start
        ;;
  *)
        echo "Usage: postgresql {start|stop|status|restart}"
        exit 1
esac

exit 0

*************************************************************

--
Best regards,
 Andy                            mailto:lbc@telecam.demon.co.uk

Attachment

pgsql-general by date:

Previous
From: Neil Conway
Date:
Subject: Re: autostart postgresql
Next
From: hubert depesz lubaczewski
Date:
Subject: Re: SQL question - problem with INTERSECT