предлагаю включить в дистрибутив nginx управляющий скрипт

Denis F. Latypoff latypoff at yandex.ru
Wed Jan 10 19:44:13 MSK 2007


Hello All,

сабж, например такой:

#!/bin/sh

# Comments to support chkconfig on RedHat Linux
# chkconfig: 2345 64 36
# description: nginx.

# Comments to support LSB init script conventions
### BEGIN INIT INFO
# Provides: nginx
# Required-Start: $local_fs $network $remote_fs
# Should-Start: ypbind nscd ldap ntpd xntpd
# Required-Stop: $local_fs $network $remote_fs
# Default-Start:  2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: start and stop nginx
# Description: nginx.
### END INIT INFO


mode=$1
prefix=/usr/local/nginx
logdir=$prefix/logs

sbindir=$prefix/sbin
pid_file=$logdir/nginx.pid

#
# Use LSB init script functions for printing messages, if possible
#
lsb_functions="/lib/lsb/init-functions"
if test -f $lsb_functions ; then
  source $lsb_functions
else
  log_success_msg()
  {
    echo " SUCCESS! $@"
  }
  log_failure_msg()
  {
    echo " ERROR! $@"
  }
fi

wait_for_pid () {
  i=0
  while test $i -lt 35 ; do
    sleep 1
    case "$1" in
      'created')
        test -s $pid_file && i='' && break
        ;;
      'removed')
        test ! -s $pid_file && i='' && break
        ;;
      *)
        echo "wait_for_pid () usage: wait_for_pid created|removed"
        exit 1
        ;;
    esac
    echo $echo_n ".$echo_c"
    i=`expr $i + 1`
  done

  if test -z "$i" ; then
    log_success_msg
  else
    log_failure_msg
  fi
}

case `echo "testing\c"`,`echo -n testing` in
    *c*,-n*) echo_n=   echo_c=     ;;
    *c*,*)   echo_n=-n echo_c=     ;;
    *)       echo_n=   echo_c='\c' ;;
esac


cd $prefix

case "$mode" in
  'start')
    if test -s "$pid_file"
    then
      echo "nginx is already running"
    else
      echo $echo_n "Starting nginx"
      $sbindir/nginx
      wait_for_pid created
    fi
    ;;

  'stop')
    if test -s "$pid_file"
    then
      nginx_pid=`cat $pid_file`
      echo $echo_n "Shutting down nginx"
      kill -TERM $nginx_pid
      wait_for_pid removed
    else
      log_failure_msg "nginx PID file could not be found!"
    fi
    ;;

  'restart')
    $0 stop  $other_args
    $0 start $other_args
    ;;

  'reload')
    if test -s "$pid_file" ; then
      nginx_pid=`cat $pid_file`
      kill -HUP $nginx_pid && log_success_msg "Reloading nginx"
      touch $pid_file
    else
      log_failure_msg "nginx PID file could not be found!"
    fi
    ;;

  *)
    echo "Usage: $0  {start|stop|restart|reload}"
    exit 1
    ;;
esac


его удобно будет втыкать в /etc/init.d/ в redhat подобных системах

ln -s /usr/local/nginx/bin/nginxctl /etc/init.d/nginx
chkconfig --add nginx

как это делается для подобных веб-сервисов (mysql/apache/postfix etc)

-- 
Best regards,
 Denis Latypoff                          mailto:latypoff at yandex.ru






More information about the nginx-ru mailing list