Project

General

Profile

HowToRunLightyWithRunit » History » Revision 2

Revision 1 (Anonymous, 2006-12-22 11:06) → Revision 2/8 (Anonymous, 2006-12-22 11:19)

= Lighty + Runit -->    (almost) uninterruptible service :) = 

 I had some problem with lighty's stability in the past so I ended up using a simple supervisor written in shell. 
 I didn't need it much for a long time now, bu I thought runit would be a more elegant and robust solution than a shellscript + cron. 

 So here is how I got it working on Debian SID for a quick test: 

  1. Install the wanted components 
 {{{ 
 wajig install lighttpd 
 wajig install runit 
 }}} 
 This takes care of the basic config of both sw. 
  2. Creating the service directories and service scripts 
 {{{ 
 # mkdir -p /etc/sv/lighttpd/log/ 
 # cat <<EOF >/etc/sv/lighttpd/run 
 #!/bin/bash 
 exec lighttpd -D -f /etc/lighttpd/lighttpd.conf 2>&1 
 EOF 
 # 
 # cat <<EOF >/etc/sv/lighttpd/log/run 
 #!/bin/bash 
 exec chpst -u nobody svlogd -tt /var/log/SV/ 
 EOF 
 # 
 # chmod +x /etc/sv/lighttpd/run /etc/sv/lighttpd/log/run 

 }}} 

  3. Setting up the log dir 
 {{{ 
 # mkdir -p /var/log/SV 
 # chown nobody /var/log/SV 
 }}} 

  4. Notifying runit about the new service and removing it from init's control 
 {{{ 
 # ln -s /etc/sv/lighttpd/ /var/service/ 
 # update-rc.d -f lighttpd remove 
  Removing any system startup links for /etc/init.d/lighttpd ... 
    /etc/rc0.d/K20lighttpd 
    /etc/rc1.d/K20lighttpd 
    /etc/rc2.d/S20lighttpd 
    /etc/rc3.d/S20lighttpd 
    /etc/rc4.d/S20lighttpd 
    /etc/rc5.d/S20lighttpd 
    /etc/rc6.d/K20lighttpd 
 }}} 

  5. Checking status 
 {{{ 
 # sv status lighttpd 
 run: lighttpd: (pid 4979) 19s; run: log: (pid 4606) 18s 
 # 
 }}} 


 '''Notes''': Logging will be ok for a single service this way but may    be problematic if you have several processes logging to the same directory. 
 I haven't tried it so I wouldn't know :) 

 It would have been nice to make it log the problems of lighty's startup over syslog but I couldn't get it working. 
 The line below should have taken care of it but it didn't work as expected for me. YMMV. 
 {{{ 
 echo "U127.0.0.1" > /var/log/SV/config 
 }}}