postgresql: improve rc service, INSTALL, add pam conf file.
--HG-- extra : convert_revision : d5fe81f0ac5134f796f8e9fce96e53c764fbfacf
This commit is contained in:
parent
888834d9c5
commit
e791f83899
5 changed files with 33 additions and 122 deletions
|
@ -5,18 +5,17 @@ post)
|
||||||
cat << _EOF
|
cat << _EOF
|
||||||
=====================================================================
|
=====================================================================
|
||||||
|
|
||||||
Please note that to properly initialize the PostgreSQL server,
|
Please note that to properly start the PostgreSQL server,
|
||||||
a configuration file should be copied to /var/lib/postgresql from
|
a sample configuration file should be copied to
|
||||||
/usr/share/postgresql/postgresql.conf.sample.
|
/var/lib/postgresql/data from
|
||||||
|
/usr/share/postgresql/postgresql.conf.sample, edit it accordingly
|
||||||
To initialize the PostgreSQL data directory, use this:
|
and use the following the command:
|
||||||
|
|
||||||
$ sudo su -l postgres -c initdb -D /var/lib/postgresql/data
|
|
||||||
|
|
||||||
To start the server finally use:
|
|
||||||
|
|
||||||
$ /etc/init.d/postgresql start
|
$ /etc/init.d/postgresql start
|
||||||
|
|
||||||
|
The configuration file for starting the service is available in
|
||||||
|
/etc/conf.d/postgresql.
|
||||||
|
|
||||||
=====================================================================
|
=====================================================================
|
||||||
_EOF
|
_EOF
|
||||||
;;
|
;;
|
||||||
|
|
|
@ -3,6 +3,9 @@
|
||||||
# PostgreSQL's Database Directory
|
# PostgreSQL's Database Directory
|
||||||
PGDATA="/var/lib/postgresql/data"
|
PGDATA="/var/lib/postgresql/data"
|
||||||
|
|
||||||
|
# PostgreSQL's log file.
|
||||||
|
PGLOG="/var/log/postgresql.log"
|
||||||
|
|
||||||
# PostgreSQL User
|
# PostgreSQL User
|
||||||
PGUSER="postgres"
|
PGUSER="postgres"
|
||||||
|
|
||||||
|
@ -15,40 +18,3 @@ PGGROUP="postgres"
|
||||||
# Please read the man-page to postmaster for more options. Many of these options
|
# Please read the man-page to postmaster for more options. Many of these options
|
||||||
# can be set directly in the configuration-file.
|
# can be set directly in the configuration-file.
|
||||||
#PGOPTS="-N 512 -B 1024"
|
#PGOPTS="-N 512 -B 1024"
|
||||||
|
|
||||||
|
|
||||||
# SERVER SHUTDOWN:
|
|
||||||
# The server will receive 3 signals in the worst case:
|
|
||||||
# 1. SIGTERM
|
|
||||||
# This signals the server to ignore new connections and to
|
|
||||||
# wait for all clients to end their transactions before shutting down.
|
|
||||||
# Use WAIT_FOR_DISCONNECT to control how much time the clients
|
|
||||||
# should have until the next signal is being sent.
|
|
||||||
# 2. SIGINT
|
|
||||||
# Tell the server to forcefully disconnect all clients.
|
|
||||||
# Terminating a client results in a rollback of the open transactions for this client.
|
|
||||||
# Use WAIT_FOR_CLEANUP to determine how much time the server has
|
|
||||||
# for cleanup.
|
|
||||||
# 3. SIGQUIT
|
|
||||||
# This will terminate the server immediately and results in a recovery run for the next start.
|
|
||||||
|
|
||||||
# Wait for clients to disconnect
|
|
||||||
WAIT_FOR_DISCONNECT=30
|
|
||||||
|
|
||||||
# Time the server has to clean up
|
|
||||||
WAIT_FOR_CLEANUP=60
|
|
||||||
|
|
||||||
# Time the server has to quit (with a recover-run on next startup)
|
|
||||||
# Set to 0 to deactivate it
|
|
||||||
WAIT_FOR_QUIT=60
|
|
||||||
|
|
||||||
# Comment this out if you don't want to wait for the server to
|
|
||||||
# startup before continuing. For example, if this server is a
|
|
||||||
# PITR log shipping based replication standby
|
|
||||||
WAIT_FOR_START="-w"
|
|
||||||
|
|
||||||
# If you have to export environment variables for the database process,
|
|
||||||
# this can be done here.
|
|
||||||
#
|
|
||||||
# Example:
|
|
||||||
# export R_HOME="/usr/lib/R"
|
|
||||||
|
|
3
srcpkgs/postgresql/files/postgresql.pam
Normal file
3
srcpkgs/postgresql/files/postgresql.pam
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
auth required pam_unix.so
|
||||||
|
account required pam_unix.so
|
||||||
|
session required pam_unix.so
|
|
@ -1,9 +1,7 @@
|
||||||
#!/sbin/runscript
|
#!/sbin/runscript
|
||||||
# Copyright 1999-2009 Gentoo Foundation
|
|
||||||
# Distributed under the terms of the GNU General Public License v2
|
|
||||||
# $Header: /var/www/viewcvs.gentoo.org/raw_cvs/gentoo-x86/dev-db/postgresql-server/files/postgresql.init-8.4,v 1.4 2010/01/26 22:01:21 patrick Exp $
|
|
||||||
|
|
||||||
opts="${opts} reload"
|
: ${PGLOG:=/var/log/postgresql.log}
|
||||||
|
extra_commands="reload"
|
||||||
|
|
||||||
depend()
|
depend()
|
||||||
{
|
{
|
||||||
|
@ -11,96 +9,39 @@ depend()
|
||||||
provide postgresql
|
provide postgresql
|
||||||
}
|
}
|
||||||
|
|
||||||
checkconfig()
|
start_pre()
|
||||||
{
|
{
|
||||||
if [ ! -d "$PGDATA" ] ; then
|
if [ ! -d "$PGDATA" ] ; then
|
||||||
eerror "Directory not found: $PGDATA"
|
einfo "Creating PostgreSQL dbdir: ${PGDATA}"
|
||||||
eerror "Please make sure that PGDATA points to the right path."
|
mkdir -p ${PGDATA} && \
|
||||||
return 1
|
chown -R ${PGUSER}.${PGGROUP} ${PGDATA}
|
||||||
|
einfo "Initializing PostgreSQL dbdir: ${PGDATA}"
|
||||||
|
su -l ${PGUSER} -c "/usr/bin/initdb -D ${PGDATA}"
|
||||||
|
fi
|
||||||
|
if [ ! -e ${PGLOG} ]; then
|
||||||
|
touch -f ${PGLOG}
|
||||||
|
chown ${PGUSER} ${PGLOG}
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
start()
|
start()
|
||||||
{
|
{
|
||||||
checkconfig || return 1
|
|
||||||
|
|
||||||
ebegin "Starting PostgreSQL"
|
ebegin "Starting PostgreSQL"
|
||||||
|
su -l ${PGUSER} -c "/usr/bin/pg_ctl -D ${PGDATA} -l ${PGLOG} \
|
||||||
if [ -f "$PGDATA/postmaster.pid" ] ; then
|
-W start ${PGOPTS}"
|
||||||
rm -f "$PGDATA/postmaster.pid"
|
|
||||||
fi
|
|
||||||
|
|
||||||
local retval
|
|
||||||
|
|
||||||
su -l ${PGUSER} \
|
|
||||||
-c "env PGDATA=\"${PGDATA}\" ${PG_EXTRA_ENV} pg_ctl \
|
|
||||||
start ${WAIT_FOR_START} -o '--silent-mode=true ${PGOPTS}'"
|
|
||||||
retval=$?
|
|
||||||
[ $retval -ne 0 ] && eend $retval && return $retval
|
|
||||||
|
|
||||||
# The following is to catch the case of an already running server
|
|
||||||
# in which pg_ctl doesn't know to which server it connected to and
|
|
||||||
# false reports the server as 'up'
|
|
||||||
sleep 2
|
|
||||||
if [ ! -f "$PGDATA/postmaster.pid" ] ; then
|
|
||||||
eerror "The pid-file doesn't exist but pg_ctl reported \
|
|
||||||
a running server."
|
|
||||||
eerror "Please check whether there is another server running \
|
|
||||||
on the same port or read the log-file."
|
|
||||||
eend 1
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
local pid=$(grep "^[0-9]\+" "$PGDATA/postmaster.pid")
|
|
||||||
ps -p "${pid}" &> /dev/null
|
|
||||||
eend $?
|
eend $?
|
||||||
}
|
}
|
||||||
|
|
||||||
stop()
|
stop()
|
||||||
{
|
{
|
||||||
ebegin "Stopping PostgreSQL (this can take up to \
|
ebegin "Stopping PostgreSQL"
|
||||||
$(( ${WAIT_FOR_DISCONNECT} + ${WAIT_FOR_CLEANUP} )) seconds)"
|
su -l ${PGUSER} -c "/usr/bin/pg_ctl -D ${PGDATA} -l ${PGLOG} -w stop"
|
||||||
|
|
||||||
local retval
|
|
||||||
|
|
||||||
su -l ${PGUSER} \
|
|
||||||
-c "env PGDATA=\"${PGDATA}\" pg_ctl \
|
|
||||||
stop -t ${WAIT_FOR_DISCONNECT} -m smart"
|
|
||||||
|
|
||||||
retval=$?
|
|
||||||
[ $retval -eq 0 ] && eend $retval && return $retval
|
|
||||||
|
|
||||||
ewarn "Some clients did not disconnect within \
|
|
||||||
${WAIT_FOR_DISCONNECT} seconds."
|
|
||||||
ewarn "Going to shutdown the server anyway."
|
|
||||||
|
|
||||||
su -l ${PGUSER} -c "env PGDATA=\"${PGDATA}\" pg_ctl stop -m fast"
|
|
||||||
retval=$?
|
|
||||||
[ $retval -eq 0 ] && eend $retval && return $retval
|
|
||||||
|
|
||||||
if [ ${WAIT_FOR_QUIT} -eq 0 ] ; then
|
|
||||||
eerror "Server did not shut down and sending the \
|
|
||||||
SIGQUIT has been disabled."
|
|
||||||
eend $retval
|
|
||||||
return $retval
|
|
||||||
fi
|
|
||||||
|
|
||||||
ewarn "Shutting down the server gracefully failed."
|
|
||||||
ewarn "Forcing it to shutdown which leads to a recover-run \
|
|
||||||
on next startup."
|
|
||||||
|
|
||||||
su -l ${PGUSER} -c "env PGDATA=\"${PGDATA}\" pg_ctl stop -m immediate"
|
|
||||||
retval=$?
|
|
||||||
[ $retval -eq 0 ] && eend $retval && return $retval
|
|
||||||
|
|
||||||
eerror "Forced shutdown failed!!! Something is wrong with your \
|
|
||||||
system, please take care of it manually."
|
|
||||||
eend $?
|
eend $?
|
||||||
}
|
}
|
||||||
|
|
||||||
reload()
|
reload()
|
||||||
{
|
{
|
||||||
ebegin "Reloading PostgreSQL configuration"
|
ebegin "Reloading PostgreSQL configuration"
|
||||||
su -l ${PGUSER} -c "env PGDATA=\"${PGDATA}\" pg_ctl reload"
|
su -l ${PGUSER} -c "/usr/bin/pg_ctl -D ${PGDATA} -l ${PGLOG} reload"
|
||||||
eend $?
|
eend $?
|
||||||
}
|
}
|
||||||
|
|
|
@ -54,4 +54,6 @@ post_install()
|
||||||
${DESTDIR}/etc/conf.d/postgresql
|
${DESTDIR}/etc/conf.d/postgresql
|
||||||
install -D -m755 ${FILESDIR}/postgresql.rc \
|
install -D -m755 ${FILESDIR}/postgresql.rc \
|
||||||
${DESTDIR}/etc/init.d/postgresql
|
${DESTDIR}/etc/init.d/postgresql
|
||||||
|
install -D -m644 ${FILESDIR}/postgresql.pam \
|
||||||
|
${DESTDIR}/etc/pam.d/postgresql
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue