Re: starting PGSQL automatically on Redhat 6.2 - Mailing list pgsql-general

From T F
Subject Re: starting PGSQL automatically on Redhat 6.2
Date
Msg-id 3A5B62B4.C73124BE@hotmail.nospam.com
Whole thread Raw
In response to starting PGSQL automatically on Redhat 6.2  ("Ryan Mahoney" <ryan@paymentalliance.net>)
Responses Re: Re: starting PGSQL automatically on Redhat 6.2
List pgsql-general
Ryan Mahoney wrote:

> Hey all, I copied the pg_ctl script and placed it in my /etc/rc.d/init.d/
> directory and renamed it 'postgres'.  I then made all the necessary symbolic
> links.  When my machine boots up however, pgsql does not start up because it
> cannot be started by root.  I have created the 'postgres' user and data
> directories.  I can start PG manually just fine.  Can someone post or mail a
> working startup script/recommend any changes to pg_ctl?  Thanks!
>
> Ryan Mahoney
> ryan@paymentalliance.net

You might try this, it was taken from the postgresql-6.5.3-6 rpm:


#! /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

pgsql-general by date:

Previous
From: "Ryan Mahoney"
Date:
Subject: starting PGSQL automatically on Redhat 6.2
Next
From: Karel Zak
Date:
Subject: Re: [HACKERS] How to print explain using PHP