This is an old revision of the document!
HOWTO Build lighttpd
First, set up your crosscompile toolchain. Download build_lighttpd_pa1.tgz. Extract, edit the file to correct the bug in tar xvfz zips/.tar.gz –> tar xvfz zips/$APP-$APP_VER.tar.gz and then execute.
Transfer the result, dns323_lighttpd-1.4.13.tar.gz, to /mnt/HD_a2 and extract it lnx_bin/busybox3 tar xvz -f dns323_lighttpd-1.4.13.tar.gz
Create a file, index.html, located in /mnt/HD_a2/www:
<html> <body> Hello World from DNS-323 </body> </html>
Create a file, lighttpd.conf, located in /mnt/HD_a2/lnx_bin:
server.document-root = "/mnt/HD_a2/www/" server.port = 3000 mimetype.assign = ( ".html" => "text/html", ".txt" => "text/plain", ".jpg" => "image/jpeg", ".png" => "image/png" )
Now, let lighttpd analyze the file using ./lighttpd -t -f lighttpd.conf and if that worked out, start the server using ./lighttpd -D -f lighttpd.conf
Access your server on port 3000, e.g. http://192.168.0.200:3000/index.html
Notes on the application
The default path for the mod_-files are compiled into the application to be /mnt/HD_a2/lnx_bin/lib using the -DLIBRARY_DIR directive. To have the modules in another directory, change the build script or start the server with argumet -m PATH
Note on lighttpd version
Beginning with 1.5.0, lighttpd depends on glib2.
Notes on using port 80 for lighttpd
For fun-plug v0.5 click here and look for Port 80 for fun-plug versions 0.3 & 0.4 see below…
Since the DNS-323 Admin service (webs) uses port 80 in order to use port 80 for lighttpd you'll need to do the following:
- Modify ligttpd.conf file to include “server.port = 80”
- Stop the lighttpd service
- Stop the 'webs' service
- Start the lighttpd service
or use the two scripts below and make sure you put them in ./fun_plug.d/start directory with the correct CHMOD settings so they run automatically.
The admin service on your DNS-323 will now be available on port 81. To access: http://192.168.0.200:81
Here's the 'lighttpd.sh' script:
#!/bin/sh
#
# This script was modified by Paul on 2/2/08 as a work around
# in getting the admin website off of port 80 and on to port 81
# It is used in conjuction with admwebs.sh (created) which is
# called from this script. lighttpd.sh stops (via admwebs.sh) the
# web admin service and then starts lighttpd on port 80. The web admin
# now (automatically) starts on port 81 after a few seconds. The admin
# service tests for use on port 80. If it's in use then bumps to the
# next available port (in this case it's bumped to port 81).
#
# NOTE:
# ./fun_plug.d/etc/lighttpd.conf needs to be configured to use
# port 80
#
# USE "netstat -tln" to verify that both port 80 & 81 are in use.
#
lighttpd_start() {
# make sure, upload directory exists
# path must match server.upload-dirs in lighttpd.conf file!
mkdir -p ${VOL1}/tmp
chmod 01777 ${VOL1}/tmp
if [ -x "${SBINDIR}/lighttpd" ]; then
echo "Stopping WEB admin"
/mnt/HD_a2/fun_plug.d/start/admwebs.sh stop
echo "Starting lighttpd... "
${SBINDIR}/lighttpd -f ${ETCDIR}/lighttpd.conf 1>/dev/null 2>/dev/null </dev/null
echo "Starting WEB admin on port 81"
/mnt/HD_a2/fun_plug.d/start/admwebs.sh start
echo "done!"
else
echo "ERROR: lighttpd not found or not executable"
fi
}
lighttpd_stop() {
killall lighttpd
}
lighttpd_status() {
if [ -n "$(pidof lighttpd)" ]; then
echo "running"
else
echo "stopped"
fi
}
case "$1" in
stop)
lighttpd_stop
;;
restart)
lighttpd_stop
sleep 1
lighttpd_start
;;
status)
lighttpd_status
;;
start|'')
lighttpd_start
;;
*)
echo "Usage: $0 start|stop|restart|status"
;;
esac
Here's the 'admwebs.sh' script:
#!/bin/sh
#
# This script was created by Paul on 2/2/08 as a work around
# in getting the admin website off of port 80 and on to port 81
# It is used in conjuction with lighttpd.sh (also modified) which
# calls this script. When used from lighttpd.sh it stops the
# web admin service then starts lighttpd on port 80. The web admin
# service notices that something is on port 80 and then starts on
# port 81.
#
# NOTE:
# ./fun_plug.d/etc/lighttpd.conf needs to be configured to use
# port 80
#
# NOTE2: (2/14/08)
# Updated this script to remove "Starting" webs. Apparently
# if you start webs you will not be able to add users
# webs is set to automatically restart if the /web/webs service
# is stopped.
#
admwebs_start() {
if [ -x "/web/webs" ]; then
# echo "Starting webs... "
# /web/webs & > /dev/null
echo "/webs/webs service will start automatically in 45 sec"
else
echo "ERROR: /web/webs not found or not executable"
fi
}
admwebs_stop() {
killall webs
}
admwebs_status() {
if [ -n "$(pidof webs)" ]; then
echo "running"
else
echo "stopped"
fi
}
case "$1" in
stop)
admwebs_stop
;;
restart)
admwebs_stop
sleep 1
admwebs_start
;;
status)
admwebs_status
;;
start|'')
admwebs_start
;;
*)
echo "Usage: $0 start|stop|restart|status"
;;
esac
Easy Ways
- A pre-compiled variant can be found here
- lighttpd is also included in fonz's fun_plug pack, a comprehensive fun_plug package that's easy to implement and great for first time users. php is a separate package that can be added easily. Instructions are provided.