Chinaunix首页 | 论坛 | 博客
  • 博客访问: 123909
  • 博文数量: 23
  • 博客积分: 560
  • 博客等级: 中士
  • 技术积分: 215
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-07 22:58
文章分类

全部博文(23)

文章存档

2012年(6)

2011年(17)

分类: 系统运维

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会解决这个问题。

阅读(3890) | 评论(2) | 转发(1) |
给主人留下些什么吧!~~

邝文琳2012-04-26 23:13:47

huaihetao: 用setsid 就行了
用 setsid lighttpd-angel -D  -f /etc/lighttpd/lighttpd.conf.....
不错,好用,谢谢分享

huaihetao2012-04-20 17:58:23

用setsid 就行了
用 setsid lighttpd-angel -D  -f /etc/lighttpd/lighttpd.conf