登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

SeaRiver Blog

实力才是你一生最好的依靠!

 
 
 

日志

 
 

daemontools + lighttpd  

2010-06-08 20:01:50|  分类: daemontools |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

Linux下进程有时候会莫名的断掉,我在使用旧版MySQL Proxy的时候就时常被问题困恼,俗话说:不怕贼偷,就怕贼惦记着;进程断掉并不可怕,可怕的是没有任何先兆,稀里糊涂的就断了,究其原因,一来可能是误操作引起来的,二来可能是软件本身的BUG造成的,三来也可能是臭名昭著的OOM问题等等。最初我是使用init的方法来解决这个问题的,不过那个方法稍显麻烦,下面介绍一下daemontools

# mkdir /package
# chmod 1755 /package
# cd /package
# wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
# tar zxf daemontools-0.76.tar.gz
# rm -f daemontools-0.76.tar.gz
# cd admin/daemontools-0.76
# package/install


以上大体是按照官方手册介绍的安装步骤进行的,如果你的glibc库比较新,此时你很可能会遇到下面错误:

/usr/bin/ld: errno:
TLS definition in /lib/libc.so.6 section .tbss mismatches non-TLS reference in envdir.o
/lib/libc.so.6: could not read symbols: Bad value
collect2: ld returned 1 exit status
make: *** [envdir] Error 1
Copying commands into ./command...
cp: cannot stat `compile/svscan': No such file or directory


为了解决这个问题,接着上面的安装步骤继续:

# cd src
# wget http://www.qmail.org/moni.csi.hu/pub/glibc-2.3.1/daemontools-0.76.errno.patch
# patch < daemontools-0.76.errno.patch
# cd ..
# package/install


如果你对patch有恐惧感,也可以采取手动修改的方式:

# vi src/conf-cc

在最后加上 -include /usr/include/errno.h

缺省会安装到/usr/local/bin目录,最好加到PATH环境变量里。

接着安装man手册:

# wget http://smarden.org/pape/djb/manpages/daemontools-0.76-man.tar.gz
# tar zxf daemontools-0.76-man.tar.gz
# cd daemontools-man
# gzip *.8
# cp *.8.gz /usr/share/man/man8


这下安装应该成功了,你可以用下面命令确认:

# ps -ef | grep svscan
# man svscan


此时你查看一下inittab文件:

# cat /etc/inittab

会发现原来daemontools是使用init的方式来保护自己的:

SV:123456:respawn:/command/svscanboot

通过strace命令你能看到系统每隔五秒会核对一下服务:

# strace -p `pidof svscan`

daemontools最经典的搭配是和lighttpd一起使用,下面介绍一下:

先简单配置一个可运行的lighttpd,如果已经有了可以略过这段:

wget http://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-1.4.25.tar.gz
tar zxf lighttpd-1.4.25.tar.gz
cd lighttpd-1.4.25
./configure
make
make install


sed -e 's/FOO/lighttpd/g' doc/rc.lighttpd > /etc/init.d/lighttpd

如果操作系统是CentOS或者RHEL:
sed -e 's/FOO/lighttpd/g' doc/rc.lighttpd.redhat > /etc/init.d/lighttpd


接着需要修改一下/etc/init.d/lighttpd文件中的执行路径指向,应该是:lighttpd="/usr/local/sbin/lighttpd",如果你安装在别的路径,可以通过type lighttpd命令确认。

chmod a+rx /etc/init.d/lighttpd
cp -p doc/sysconfig.lighttpd /etc/sysconfig/lighttpd
install -Dp ./doc/lighttpd.conf /etc/lighttpd/lighttpd.conf


按如下命令可以设置服务自动启动,不过我们就不设置了,自动启动的工作由daemontools帮我们完成:

chkconfig lighttpd on

如果操作系统是Debian或者Ubuntu:
update-rc.d lighttpd defaults

这样lighttpd就安装好了,可以用/etc/init.d/lighttpd start命令确认一下,确认成功后别忘了/etc/init.d/lighttpd stop掉相应的进程,因为我们下面要配置daemontools来管理lighttpd:

先建立标准的文件目录结构(如果操作系统是Gentoo,则用/var/services替代/srv):

/srv/lighttpd/           # the service directory
/srv/lighttpd/run        # the script that starts lighttpd
/srv/lighttpd/log/       # the service directory for the logger
/srv/lighttpd/log/run    # the script that starts the logger
/srv/lighttpd/log/main/  # log files go here


目录/srv/lighttpd-main/是755权限,下面的run脚本也是755,接着进行必要的设置:

注意:被保护的进程要运行在非daemon模式下,这样daemontools才能获得所有权去管理它,流行软件基本都有相应参数控制这个,比如apache是-DFOREGROUND参数,而在lighttpd里,就是-D参数。

文件:./run
#! /bin/sh
exec 2>&1
exec lighttpd -D -f /etc/lighttpd/lighttpd.conf


文件:./log/run
#! /bin/sh
umask 0027
exec setuidgid nobody multilog ./main


目录:./log/main/
chown nobody ./log/main/

最后一步:

ln -s /srv/lighttpd /service/

稍等片刻就能生效了,可以用ps -ef | grep supervise确认,日志处理相关内容没有细说,在官方faq基本都能找到答案。

常用操作:

# svstat /service/lighttpd(查看lighttpd状态)

# svc -t /service/lighttpd(重启lighttpd进程)
# svc -u /service/lighttpd
启动lighttpd进程
# svc -d /service/lighttpd停止lighttpd进程

还有几个其他的类似软件可供选择:runitsupervisordmonit

相关文档:

http://redmine.lighttpd.net/projects/lighttpd/wiki/InstallFromSource
http://redmine.lighttpd.net/wiki/lighttpd/lighttpdundersupervise
 
  评论这张
 
阅读(1067)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018