Nginx w/ ssh restart
Igor Sysoev
is at rambler-co.ru
Wed Sep 17 10:51:28 MSD 2008
On Wed, Sep 17, 2008 at 10:42:19AM +0400, Igor Sysoev wrote:
> 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"
I'm wrong, -QUIT should work in this case, because upon the -QUIT signal
reception a master and worker processes close listening sockets and this
allows a new master process to bind them. So existant d_stop is better then
-TERM signal.
--
Igor Sysoev
http://sysoev.ru/en/
More information about the nginx
mailing list