Nginx w/ ssh restart

Igor Sysoev is at rambler-co.ru
Wed Sep 17 10:42:19 MSD 2008


On Tue, Sep 16, 2008 at 11:29:36PM -0700, mike wrote:

> On Tue, Sep 16, 2008 at 10:35 PM, Igor Sysoev <is at rambler-co.ru> wrote:
> 
> > The problem is probably in "service" utility. What is it ?
> 
> redhat style init
> 
> i install nginx on redhat using this:
> 
> cp /usr/src/build/extras/nginx.initd /etc/init.d/nginx
> /sbin/chkconfig --add nginx
> 
> then 'service' works properly
> 
> this is the nginx.initd script:
> 
> #!/bin/sh
> #
> # Init file for nginx
> #
> # chkconfig: 2345 55 25
> # description: Nginx web server
> #
> # processname: nginx
> # config: /usr/local/nginx/nginx.conf
> # pidfile: /usr/local/nginx/nginx.pid
> 
> # Description: Startup script for nginx webserver on Debian. Place in
> /etc/init.d and
> # run 'sudo update-rc.d nginx defaults', or use the appropriate command on your
> # distro. For CentOS/Redhat run: '/sbin/chkconfig --add nginx'
> #
> # Author:  Ryan Norbauer <ryan.norbauer at gmail.com>
> # Modified:     Geoffrey Grosenbach http://topfunky.com
> # Modified:     David Krmpotic http://davidhq.com
> # Modified:                     Vishnu Gopal http://vish.in
> 
> set -e
> 
> PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
> DESC="nginx daemon"
> NAME=nginx
> DAEMON=/usr/sbin/nginx
> CONFIGFILE=/etc/nginx/nginx.conf
> PIDFILE=/var/run/nginx.pid
> SCRIPTNAME=/etc/init.d/nginx
> 
> # Gracefully exit if the package has been removed.
> test -x $DAEMON || exit 0
> 
> d_start() {
>   $DAEMON -c $CONFIGFILE || echo -en "\n already running"
> }
> 
> d_stop() {
>   kill -QUIT `cat $PIDFILE` || echo -en "\n not running"
> }
> 
> d_reload() {
>   kill -HUP `cat $PIDFILE` || echo -en "\n can't reload"
> }
> 
> case "$1" in
>   start)
>     echo -n "Starting $DESC: $NAME"
>     d_start
>         echo "."
>   ;;
>   stop)
>     echo -n "Stopping $DESC: $NAME"
>     d_stop
>         echo "."
>   ;;
>   reload)
>     echo -n "Reloading $DESC configuration..."
>     d_reload
>         echo "."
>   ;;
>   restart)
>     echo -n "Restarting $DESC: $NAME"
>     d_stop
>     # One second might not be time enough for a daemon to stop,
>     # if this happens, d_start will fail (and dpkg will break if
>     # the package is being upgraded). Change the timeout if needed
>     # be, or change d_stop to have start-stop-daemon use --retry.
>     # Notice that using --retry slows down the shutdown process somewhat.
>     sleep 1
>     d_start
>     echo "."

BTW, this restart may not work, because -QUIT is a graceful exit, and
it may hang for long time, and new nginx will can not bind to listen sockets.
It should be changed to somethig like this:

      echo -n "Restarting $DESC: $NAME"
-     d_stop
+     kill `cat $PIDFILE` || echo -en "\n not running"

>   ;;
>   *)
>     echo "Usage: $SCRIPTNAME {start|stop|restart|reload}" >&2
>     exit 3
>   ;;
> esac
> 
> exit 0


-- 
Igor Sysoev
http://sysoev.ru/en/





More information about the nginx mailing list