diff options
Diffstat (limited to 'system/postgresql/postgresql.initd')
-rw-r--r-- | system/postgresql/postgresql.initd | 220 |
1 files changed, 0 insertions, 220 deletions
diff --git a/system/postgresql/postgresql.initd b/system/postgresql/postgresql.initd deleted file mode 100644 index 846229a40..000000000 --- a/system/postgresql/postgresql.initd +++ /dev/null @@ -1,220 +0,0 @@ -#!/sbin/openrc-run - -extra_started_commands="reload" -description_reload="Reload configuration" - -extra_stopped_commands="setup" -description_setup="Initialize a new PostgreSQL cluster" - -# Note: Uppercase variables are here for backward compatibility. - -: ${user:=${PGUSER:-"postgres"}} -: ${group:=${PGGROUP:-"postgres"}} - -: ${auto_setup:=${AUTO_SETUP:-"yes"}} -: ${start_timeout:=${START_TIMEOUT:-10}} -: ${nice_timeout:=${NICE_TIMEOUT:-60}} -: ${rude_quit:=${RUDE_QUIT:-"yes"}} -: ${rude_timeout:=${RUDE_TIMEOUT:-30}} -: ${force_quit:=${FORCE_QUIT:-"no"}} -: ${force_timeout:=${FORCE_TIMEOUT:-2}} - -: ${data_dir:=${PGDATA:-"/var/lib/postgresql/@VERSION@/data"}} -: ${conf_dir:=$data_dir} -: ${env_vars:=${PG_EXTRA_ENV:-}} -: ${initdb_opts:=${PG_INITDB_OPTS:-}} -: ${logfile:="$data_dir/postmaster.log"} -: ${pg_opts:=${PGOPTS:-}} -: ${port:=${PGPORT:-5432}} - -command="/usr/bin/postgres" - -conffile="$conf_dir/postgresql.conf" -pidfile="$data_dir/postmaster.pid" -start_stop_daemon_args=" - --user $user - --group $group - --pidfile $pidfile - --wait 100" - -depend() { - use net - after firewall - - if [ "$(get_config log_destination)" = "syslog" ]; then - use logger - fi -} - -start_pre() { - check_deprecated_var WAIT_FOR_START start_timeout - check_deprecated_var WAIT_FOR_DISCONNECT nice_timeout - check_deprecated_var WAIT_FOR_CLEANUP rude_timeout - check_deprecated_var WAIT_FOR_QUIT force_timeout - - if [ ! -d "$data_dir/base" ]; then - if yesno "$auto_setup"; then - setup || return 1 - else - eerror "Database not found at: $data_dir" - eerror "Please make sure that 'data_dir' points to the right path." - eerror "You can run '/etc/init.d/postgresql setup' to setup a new database cluster." - return 1 - fi - fi - - local socket_dirs=$(get_config "unix_socket_directories" "/run/postgresql") - local port=$(get_config "port" "$port") - - start_stop_daemon_args="$start_stop_daemon_args --env PGPORT=$port" - - ( - # Set the proper permission for the socket paths and create them if - # then don't exist. - set -f; IFS="," - for dir in $socket_dirs; do - if [ -e "${dir%/}/.s.PGSQL.$port" ]; then - eerror "Socket conflict. A server is already listening on:" - eerror " ${dir%/}/.s.PGSQL.$port" - eerror "Hint: Change 'port' to listen on a different socket." - return 1 - elif [ "${dir%/}" != "/tmp" ]; then - checkpath -d -m 1775 -o $user:$group "$dir" - fi - done - ) -} - -start() { - local retval - - ebegin "Starting PostgreSQL" - - local var; for var in $env_vars; do - start_stop_daemon_args="$start_stop_daemon_args --env $var" - done - - rm -f "$pidfile" - start-stop-daemon --start \ - $start_stop_daemon_args \ - --exec /usr/bin/pg_ctl \ - -- start \ - --silent \ - -w --timeout="$start_timeout" \ - --log="$logfile" \ - --pgdata="$conf_dir" \ - -o "--data-directory=$data_dir $pg_opts" - retval=$? - - if [ $retval -ne 0 ]; then - eerror "Check the log for a possible explanation of the above error:" - eerror " $logfile" - fi - eend $retval -} - -stop() { - local retry="SIGTERM/$nice_timeout" - - yesno "$rude_quit" \ - && retry="$retry/SIGINT/$rude_timeout" \ - || rude_timeout=0 - - yesno "$force_quit" \ - && retry="$retry/SIGQUIT/$force_timeout" \ - || force_timeout=0 - - local seconds=$(( $nice_timeout + $rude_timeout + $force_timeout )) - - ebegin "Stopping PostgreSQL (this can take up to $seconds seconds)" - - start-stop-daemon --stop \ - --exec "$command" \ - --retry "$retry" \ - --progress \ - --pidfile "$pidfile" - eend $? -} - -reload() { - ebegin "Reloading PostgreSQL configuration" - - start-stop-daemon --signal HUP --pidfile "$pidfile" - eend $? -} - -setup() { - local bkpdir - - ebegin "Creating a new PostgreSQL database cluster" - - if [ -d "$data_dir/base" ]; then - eend 1 "$data_dir/base already exists!"; return 1 - fi - - # If data_dir exists, backup configs. - if [ -d "$data_dir" ]; then - bkpdir="$(mktemp -d)" - find "$data_dir" -type f -name "*.conf" -maxdepth 1 \ - -exec mv -v {} "$bkpdir"/ \; - rm -rf "$data_dir"/* - fi - - install -d -m 0700 -o $user -g $group "$data_dir" - install -d -m 0750 -o $user -g $group "$conf_dir" - - cd "$data_dir" # to avoid the: could not change directory to "/root" - su $user -c "/usr/bin/initdb $initdb_opts --pgdata $data_dir" - local retval=$? - - if [ -d "$bkpdir" ]; then - # Move backuped configs back. - mv -v "$bkpdir"/* "$data_dir"/ - rm -rf "$bkpdir" - fi - - if [ "${data_dir%/}" != "${conf_dir%/}" ]; then - # Move configs from data_dir to conf_dir and symlink them to data_dir. - local name newname - for name in postgresql.conf pg_hba.conf pg_ident.conf; do - newname="$name" - [ ! -e "$conf_dir"/$name ] || newname="$name.new" - - mv "$data_dir"/$name "$conf_dir"/$newname - ln -s "$conf_dir"/$name "$data_dir"/$name - done - fi - - eend $retval -} - - -get_config() { - local name="$1" - local default="${2:-}" - - if [ ! -f "$conffile" ]; then - printf '%s\n' "$default" - return 1 - fi - sed -En "/^\s*${name}\b/{ # find line starting with the name - s/^\s*${name}\s*=?\s*([^#]+).*/\1/; # capture the value - s/\s*$//; # trim trailing whitespaces - s/^['\"](.*)['\"]$/\1/; # remove delimiting quotes - p - }" "$conffile" \ - | grep . || printf '%s\n' "$default" -} - -check_deprecated_var() { - local old_name="$1" - local new_name="$2" - - if [ -n "$(getval "$old_name")" ]; then - ewarn "Variable '$old_name' has been removed, please use '$new_name' instead." - fi -} - -getval() { - eval "printf '%s\n' \"\$$1\"" -} |