正常重启Lighttpd Web服务器

时间:2020-01-09 14:17:05  来源:igfitidea点击:

如何在Linux/UNIX操作系统下正常重启lighttpd + php fastcgi Web服务器?
您需要将SIGINT单发送到lighttpd进程。
只有在成功关闭客户端连接后,它才会关闭服务器,而不会中断连接。
这对于重新加载配置选项很有用。
如果您使用的是sysv样式脚本,请确保reload()如下所示:

#!/bin/bash
 
# only works under RHEL / Fedora / CentOS Linux
source /etc/init.d/functions
 
pidfile=/var/run/lighttpd.pid
prog=lighttpd
conf=/etc/lighttpd/lighttpd.conf
lighttpd=/usr/sbin/lighttpd
 
reload(){
  echo -n $"Reloading $prog  "
  killproc -p $pidfile $prog -INT
  start
  local RETVAL=$?
  echo
  return $RETVAL
} 
 
start() {
        echo -n $"Starting $prog: "
        daemon $lighttpd -f $conf
        RETVAL=$?
        echo
        [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
        return $RETVAL
}
 
stop() {
        echo -n $"Stopping $prog: "
        killproc $lighttpd
        RETVAL=$?
        echo
        [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog
        return $RETVAL
}
 
case "" in
        start)
                start
                ;;
        stop)
                stop
                ;;
        restart)
                stop
                start
                ;;
        condrestart)
                if [ -f /var/lock/subsys/$prog ]; then
                        stop
                        start
                fi
                ;;
        reload)
                reload
                ;;
        status)
                status $lighttpd
                RETVAL=$?
                ;;
        *)
                echo $"Usage: 
# kill -INT $(cat /var/run/lighttpd.pid)
# lighttpd -f /etc/lighttpd.conf
{start|stop|restart|condrestart|reload|status}" RETVAL=1 esac exit $RETVAL

UNIX/Linux的命令行选项

如果您没有/init.d/或/rc.d/样式脚本,请使用以下过程。
您可以从命令行本身发送INT单并再次启动服务器:

2009-05-08 18:54:45: (server.c.1355) [note] graceful shutdown started 
2009-05-08 18:54:45: (log.c.97) server started 
2009-05-08 18:54:49: (server.c.1469) server stopped by UID = 0 PID = 957 
2009-05-08 18:56:57: (log.c.97) server started

您应该在lighttpd错误日志文件中看到以下内容:

"socket" => "/tmp/php-cgi.socket" + var.PID

关于php fastcgi进程的说明

确保php套接字配置如下(如果没有以下配置,则在正常重启后将不会重新加载php):

fastcgi.server    = ( ".php" =>
        ((
                "bin-path" => "/usr/bin/php-cgi",
                "socket" => "/tmp/php-cgi.socket"+ var.PID,
                "max-procs" => 1,
                "idle-timeout" => 30,
                "bin-environment" => (
                        "PHP_FCGI_CHILDREN" => "2",
                        "PHP_FCGI_MAX_REQUESTS" => "2000"
                ),
                "bin-copy-environment" => (
                        "PATH", "SHELL", "USER"
                ),
                "broken-scriptfilename" => "enable"
        ))
)

这是一个示例php5 fastcgi lighttpd.conf配置:

# /etc/init.d/lighttpd reload

关于RHEL/CentOS Linux init.d脚本的注释

大多数现代Linux发行版都带有启动/停止/重新启动并重新加载lighttpd的脚本:

reload() {
        echo -n $"Reloading $prog: "
        killproc $lighttpd -HUP
        RETVAL=$?
        echo
        return $RETVAL
}

但是,您需要在RHEL/CentOS Linux下修补/etc/init.d/lighttpd。
查找reload():

reload() {
        echo -n $"Reloading $prog: "
        killproc $lighttpd -INT
        RETVAL=$?
        echo
        return $RETVAL
}

替换成:

# /etc/init.d/lighttpd reload

Debian/Ubuntu Linux用户

如果您使用的是Debian/Ubuntu Linux,请执行:

##代码##