分类: 系统运维
2011-04-25 09:36:57
转载自:架构研究室
lighttpd1.4.x
默认情况下无法使用reload功能,即kill -HUP “PID OF LIGHTTPD” ?
在网上搜索了一番,结果发现可以使用lighttpd的sbin目录下的lighttpd-angel来实现这个reload功能;
方法如下:
/pathtolighttpd/sbin/lighttpd-angel -D -f /pathtolighttpd/conf/lighttpd.conf
-D 表示不在后台执行;(默认是在后台执行的)
而这个reload功能一定是要-D参数才能获得支持;
这样新问题就出现;一般管理服务器都是远程登录的ssh中执行&指令的话会导致退出登录ssh后无响应;
可以通过调整延时时间来设定,但毕竟使用起来有点麻烦;
最后执行在前面增加一个nohup工具,总算问题解决了,但毕竟还不完美;
nohup /pathtolighttpd/sbin/lighttpd-angel -D -f /pathtolighttpd/conf/lighttpd.conf &
然后再修改lighttpd的service脚本如下:
…
prog=”lighttpd”
lighttpd=”/pathtolighttpd/sbin/lighttpd-angel” #多增加一个lighttpd-angel的变量
lighttpd1=”/pathtolighttpd/sbin/lighttpd”
RETVAL=0
start() {
echo -n $”Starting $prog: ”
#以lighttpd-angel启动,去掉daemon函数,不然会启动失败,无法和nohup一起使用;
/usr/bin/nohup $lighttpd -D -f $LIGHTTPD_CONF_PATH 2 >/dev/null &
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
return $RETVAL
}
stop() {
echo -n $”Stopping $prog: ”
killproc $lighttpd1 #杀进程的依旧是lighttpd
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog
return $RETVAL
}
reload() {
echo -n $”Reloading $prog: ”
killproc $lighttpd -HUP
RETVAL=$?
echo
return $RETVAL
}
….
这样修改完发现每次start的时候不能正常显示[OK];lighttpd-angel开启的时候会调用lighttpd主程序;这样就是lighttpd和lighttpd-angel一起运行,这个也是执行reload必须的;
如果有更好的办法,请留言讨论!
貌似lighttpd1.5.x会解决这个问题。