Project

General

Profile

Actions

LighttpdOnSolaris » History » Revision 3

« Previous | Revision 3/15 (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">
<!--
Copyright 2005 Sergiusz Pawlowicz. All rights reserved.
http://pawlowicz.name/
Use is subject to license terms.

ident       "0.1" 
-->

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

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

&lt;!--
Because we may have multiple instances of network/http
provided by different implementations, we keep dependencies
and methods within the instance.
-->
&lt;instance name='lighttpd' enabled='false'&gt;
&lt;dependency name='loopback'
grouping='require_all'
restart_on='error'
type='service'>
&lt;service_fmri value='svc:/network/loopback:default'/&gt;
&lt;/dependency&gt;
&lt;dependency name='physical'
grouping='optional_all'
restart_on='error'
type='service'>
&lt;service_fmri value='svc:/network/physical:default'/&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='startd' type='framework'&gt;
&lt;!-- sub-process core dumps shouldn't restart
session -->
&lt;propval name='ignore_error' type='astring'
value='core,signal' />
&lt;/property_group&gt;
&lt;/instance&gt;
&lt;template&gt;
&lt;common_name&gt;
&lt;loctext xml:lang='C'&gt;
Lighttpd HTTP server
&lt;/loctext&gt;
&lt;/common_name&gt;
&lt;documentation&gt;
&lt;manpage title='lighttpd' section='1M' /&gt;
&lt;doc_link name='lighttpd.net'
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 almost 15 years ago · 3 revisions