Project

General

Profile

Actions

LighttpdOnSolaris » History » Revision 3

« Previous | Revision 3/16 (diff) | Next »
Anonymous, 2005-10-07 07:11


= Running lighttpd on Solaris Service Management Facility (SMF) =

If you want to use native Solaris management facility (SMF), you have to create two files describing lighttpd service:

  • Manifest file: /var/svc/manifest/network/lighttpd.xml

{{{

<!DOCTYPE service_bundle SYSTEM "/usr/share/lib/xml/dtd/service_bundle.dtd.1">

<service_bundle type='manifest' name='lighttpd'>

<service
name='network/lighttpd'
type='service'
version='1'>

&lt;instance name=&#039;lighttpd&#039; enabled=&#039;false&#039;&gt;
&lt;dependency name=&#039;loopback&#039;
grouping='require_all'
restart_on='error'
type='service'>
&lt;service_fmri value=&#039;svc:/network/loopback:default&#039;/&gt;
&lt;/dependency&gt;
&lt;dependency name=&#039;physical&#039;
grouping='optional_all'
restart_on='error'
type='service'>
&lt;service_fmri value=&#039;svc:/network/physical:default&#039;/&gt;
&lt;/dependency&gt;
&lt;exec_method
type='method'
name='start'
exec='/lib/svc/method/http-lighttpd start'
timeout_seconds='60' />
&lt;exec_method
type='method'
name='stop'
exec='/lib/svc/method/http-lighttpd stop'
timeout_seconds='60' />
&lt;exec_method
type='method'
name='refresh'
exec='/lib/svc/method/http-lighttpd refresh'
timeout_seconds='60' />
&lt;property_group name=&#039;startd&#039; type=&#039;framework&#039;&gt;

&lt;propval name=&#039;ignore_error&#039; type=&#039;astring&#039;
value='core,signal' />
&lt;/property_group&gt;
&lt;/instance&gt;
&lt;template&gt;
&lt;common_name&gt;
&lt;loctext xml:lang=&#039;C&#039;&gt;
Lighttpd HTTP server
&lt;/loctext&gt;
&lt;/common_name&gt;
&lt;documentation&gt;
&lt;manpage title=&#039;lighttpd&#039; section=&#039;1M&#039; /&gt;
&lt;doc_link name=&#039;lighttpd.net&#039;
uri='http://www.lighttpd.net/' />
&lt;/documentation&gt;
&lt;/template&gt;
&lt;/service&gt;

</service_bundle>
}}}

  • init file: /lib/svc/method/http-lighttpd
{{{
#!/sbin/sh #
  1. Copyright 2005 Sergiusz Pawlowicz All rights reserved.
  2. Use is subject to license terms. #
  3. ident "0.1" #

LIGHTTPD_HOME=/global/lighttpd
CONF_FILE=/etc/lighttpd/lighttpd.conf
PIDFILE=/var/run/lighttpd.pid

[ ! -f ${CONF_FILE} ] && exit $CONF_FILE

case "$1" in
start)
/bin/rm -f ${PIDFILE}
exec ${LIGHTTPD_HOME}/sbin/lighttpd -f ${CONF_FILE} 2>&1
;;
refresh)
if [ -f "$PIDFILE" ]; then
/usr/bin/kill -HUP `/usr/bin/cat $PIDFILE`
fi
;;
stop)
if [ -f "$PIDFILE" ]; then
/usr/bin/kill -QUIT `/usr/bin/cat $PIDFILE`
fi
;;
*)
echo "Usage: $0 {start|stop|refresh}"
exit 1
;;
esac
}}}

Now import the file into SMF database:

{{{
bash-3.00# svccfg -v import /var/svc/manifest/network/lighttpd.xml
}}}

and enable this service:

{{{
bash-3.00# svcadm enable network/lighttpd
}}}

Lastly, you can check verbose information about this service:

{{{
bash-3.00# svcs -l network/lighttpd
fmri svc:/network/lighttpd:lighttpd
name Lighttpd HTTP server
enabled true
state online
next_state none
state_time Sun Sep 25 14:21:49 2005
logfile /var/svc/log/network-lighttpd:lighttpd.log
restarter svc:/system/svc/restarter:default
contract_id 143
dependency require_all/error svc:/network/loopback:default (online)
dependency optional_all/error svc:/network/physical:default (online)
}}}

Of course it is simple example of such a service, if you have better one, please cut and paste it here.

Updated by Anonymous about 19 years ago · 3 revisions