Darkhttpd: Difference between revisions
Ginjachris (talk | contribs) (Created page with "{{Draft}} Darkhttpd is a simple, fast web server for static content. It does not support PHP or CGI etc but is designed to serve static content, which it does very well. ...") |
Ginjachris (talk | contribs) No edit summary |
||
Line 1: | Line 1: | ||
{{Draft}} | {{Draft}} | ||
Darkhttpd is a simple, fast web server for static content. It does not support PHP or CGI etc but is designed to serve static content, which it does very well. | Darkhttpd is a simple, fast HTTP 1.1 web server for static content. It does not support PHP or CGI etc but is designed to serve static content, which it does very well. Darkhttpd would be an excellent alternative to [[Lighttpd]] for [[How to setup a Alpine Linux mirror|running an Alpine mirror]] | ||
For a full list of features see the [[http://unix4lyfe.org/darkhttpd/ darkhttpd homepage]] | For a full list of features see the [[http://unix4lyfe.org/darkhttpd/ darkhttpd homepage]] | ||
Line 15: | Line 15: | ||
Default log path: {{Path|/var/log/darkhttpd/access.log}} | Default log path: {{Path|/var/log/darkhttpd/access.log}} | ||
There's no | There's no configuration file for {{Pkg|darkhttpd}}, everything is controlled from the command line or in our case the OpenRC init file, which is stored in {{Path|/etc/init.d/darkhttpd}} and by default looks like this: | ||
<pre> | <pre> | ||
Line 28: | Line 28: | ||
</pre> | </pre> | ||
So by default we will serve pages from {{Path|/var/www/localhost/hdocs}} and darkhttpd will run as a background daemon, [https://en.wikipedia.org/wiki/Chroot chrooted] to {{Path|/var/www/localhost/hdocs}} with a user of | So by default we will serve pages from {{Path|/var/www/localhost/hdocs}} and darkhttpd will run as a background daemon, [https://en.wikipedia.org/wiki/Chroot chrooted] to {{Path|/var/www/localhost/hdocs}} with a user of <code>darkhttpd</code> and group of <code>www-data</code>. | ||
Logs will go to {{Path|/var/log/darkhttpd/access.log}}. | Logs will go to {{Path|/var/log/darkhttpd/access.log}}. | ||
The default values have been chosen to provide sane, secure settings. | The default values have been chosen to provide sane, secure settings. | ||
Line 39: | Line 39: | ||
= Use = | = Use = | ||
Filesharing is made easy; simply add your files under {{Path|/var/www/localhost/hdocs}} | |||
== Test == | |||
Create a test page under {{Path|/var/www/localhost/hdocs}} | Create a test page under {{Path|/var/www/localhost/hdocs}} | ||
Line 57: | Line 61: | ||
set uid to 100 | set uid to 100 | ||
</pre> | </pre> | ||
Now point a browser to your darkhttpd server and you should get the index page | Now point a browser to your darkhttpd server and you should get the index page, or a directory listing if you didn't create an index page. | ||
Check the logfile: {{Cmd|tail /var/log/darkhttpd/access.log}} | Check the logfile: {{Cmd|tail /var/log/darkhttpd/access.log}} | ||
== Controlling darkhttpd status == | |||
Stop, start and restart the daemon in the usual fashion: | Stop, start and restart the daemon in the usual fashion: | ||
Line 67: | Line 73: | ||
{{Cmd|rc-service darkhttpd restart}} | {{Cmd|rc-service darkhttpd restart}} | ||
== Auto-start darkhttpd at boot == | |||
To add the daemon to the default runlevel so it auto-starts at boot, do: {{Cmd|rc-update add darkhttpd}} | To add the daemon to the default runlevel so it auto-starts at boot, do: {{Cmd|rc-update add darkhttpd}} | ||
= man darkhttpd = | |||
<pre> | |||
v-alpine-server:~# darkhttpd | |||
darkhttpd/1.9, copyright (c) 2003-2013 Emil Mikulic. | |||
usage: darkhttpd /path/to/wwwroot [flags] | |||
flags: --port number (default: 8080, or 80 if running as root) | |||
Specifies which port to listen on for connections. | |||
--addr ip (default: all) | |||
If multiple interfaces are present, specifies | |||
which one to bind the listening port to. | |||
--maxconn number (default: system maximum) | |||
Specifies how many concurrent connections to accept. | |||
--log filename (default: stdout) | |||
Specifies which file to append the request log to. | |||
--chroot (default: don't chroot) | |||
Locks server into wwwroot directory for added security. | |||
--daemon (default: don't daemonize) | |||
Detach from the controlling terminal and run in the background. | |||
--index filename (default: index.html) | |||
Default file to serve when a directory is requested. | |||
--mimetypes filename (optional) | |||
Parses specified file for extension-MIME associations. | |||
--uid uid/uname, --gid gid/gname (default: don't privdrop) | |||
Drops privileges to given uid:gid after initialization. | |||
--pidfile filename (default: no pidfile) | |||
Write PID to the specified file. Note that if you are | |||
using --chroot, then the pidfile must be relative to, | |||
and inside the wwwroot. | |||
--no-keepalive | |||
Disables HTTP Keep-Alive functionality. | |||
--forward host url (default: don't forward) | |||
Web forward (301 redirect). | |||
Requests to the host are redirected to the corresponding url. | |||
The option may be specified multiple times, in which case | |||
the host is matched in order of appearance. | |||
--no-server-id | |||
Don't identify the server type in headers | |||
or directory listings. | |||
</pre> |
Revision as of 22:24, 15 January 2014
This material is work-in-progress ... Do not follow instructions here until this notice is removed. |
Darkhttpd is a simple, fast HTTP 1.1 web server for static content. It does not support PHP or CGI etc but is designed to serve static content, which it does very well. Darkhttpd would be an excellent alternative to Lighttpd for running an Alpine mirror
For a full list of features see the [darkhttpd homepage]
Install
apk add darkhttpd
Configure
Default location of files to serve: /var/www/localhost/hdocs
Default log path: /var/log/darkhttpd/access.log
There's no configuration file for darkhttpd, everything is controlled from the command line or in our case the OpenRC init file, which is stored in /etc/init.d/darkhttpd and by default looks like this:
#! /sbin/runscript description="darkhttpd web server" command="/usr/bin/darkhttpd" command_args="${document_root:-/var/www/localhost/htdocs} --chroot --daemon --uid darkhttpd --gid www-data --log /var/log/darkhttpd/access.log" procname="darkhttpd" pidfile="" stopsig="SIGTERM"
So by default we will serve pages from /var/www/localhost/hdocs and darkhttpd will run as a background daemon, chrooted to /var/www/localhost/hdocs with a user of darkhttpd
and group of www-data
.
Logs will go to /var/log/darkhttpd/access.log.
The default values have been chosen to provide sane, secure settings.
Change any of these values as you see fit, but it's a good idea to backup the file before making changes.
For a full list of available options, run:
darkhttpd
and amend the command_args
line as you see fit.
Use
Filesharing is made easy; simply add your files under /var/www/localhost/hdocs
Test
Create a test page under /var/www/localhost/hdocs
echo "this is a test page" > /var/www/localhost/htdocs/index.html
Start the daemon:
rc-service darkhttpd start
Output should be something like this:
* Starting darkhttpd ... darkhttpd/1.9, copyright (c) 2003-2013 Emil Mikulic. listening on: http://0.0.0.0:80/ chrooted to `/var/www/localhost/htdocs' set gid to 82 set uid to 100
Now point a browser to your darkhttpd server and you should get the index page, or a directory listing if you didn't create an index page.
Check the logfile:
tail /var/log/darkhttpd/access.log
Controlling darkhttpd status
Stop, start and restart the daemon in the usual fashion:
rc-service darkhttpd start
rc-service darkhttpd stop
rc-service darkhttpd restart
Auto-start darkhttpd at boot
To add the daemon to the default runlevel so it auto-starts at boot, do:
rc-update add darkhttpd
man darkhttpd
v-alpine-server:~# darkhttpd darkhttpd/1.9, copyright (c) 2003-2013 Emil Mikulic. usage: darkhttpd /path/to/wwwroot [flags] flags: --port number (default: 8080, or 80 if running as root) Specifies which port to listen on for connections. --addr ip (default: all) If multiple interfaces are present, specifies which one to bind the listening port to. --maxconn number (default: system maximum) Specifies how many concurrent connections to accept. --log filename (default: stdout) Specifies which file to append the request log to. --chroot (default: don't chroot) Locks server into wwwroot directory for added security. --daemon (default: don't daemonize) Detach from the controlling terminal and run in the background. --index filename (default: index.html) Default file to serve when a directory is requested. --mimetypes filename (optional) Parses specified file for extension-MIME associations. --uid uid/uname, --gid gid/gname (default: don't privdrop) Drops privileges to given uid:gid after initialization. --pidfile filename (default: no pidfile) Write PID to the specified file. Note that if you are using --chroot, then the pidfile must be relative to, and inside the wwwroot. --no-keepalive Disables HTTP Keep-Alive functionality. --forward host url (default: don't forward) Web forward (301 redirect). Requests to the host are redirected to the corresponding url. The option may be specified multiple times, in which case the host is matched in order of appearance. --no-server-id Don't identify the server type in headers or directory listings.