darkhttpd
darkhttpd 是一个简单、快速的 HTTP 1.1 静态内容 Web 服务器。它不支持 PHP 或 CGI 等,但旨在服务静态内容,并且在这方面做得非常好。对于运行 Alpine 镜像,darkhttpd 将是 Lighttpd 的绝佳替代品
有关完整的功能列表,请参见 darkhttpd 首页
安装
# apk add darkhttpd
配置
要服务的文件的默认位置: /var/www/localhost/htdocs
默认日志路径: /var/log/darkhttpd/access.log
darkhttpd 没有配置文件,一切都从命令行或我们的 OpenRC init 文件中控制,该文件存储在 /etc/init.d/darkhttpd 中,默认情况下看起来像这样
/etc/init.d/darkhttpd 的内容
因此,默认情况下,我们将从 /var/www/localhost/htdocs 提供页面,并且 darkhttpd 将作为后台守护程序运行,chrooted 到 /var/www/localhost/htdocs,用户为 darkhttpd
,组为 www-data
。日志将转到 /var/log/darkhttpd/access.log。选择默认值是为了提供理智、安全的设置。
根据您的需要更改这些值,但最好在进行更改之前备份文件。
有关可用选项的完整列表,请运行
$ darkhttpd
并根据需要修改 command_args
行。例如,您可能希望从 /var/files 提供文件,因此您可以使用您选择的编辑器(vi、nano、vim 或其他)编辑 /etc/init.d/darkhttpd 文件,并使其像这样
/etc/init.d/darkhttpd 的内容
使用
文件共享变得容易;只需将您的文件添加到服务器根目录下,默认情况下是 /var/www/localhost/htdocs
测试
在服务器根目录下创建一个测试页面,默认情况下是 /var/www/localhost/htdocs
# echo "this is a test page" > /var/www/localhost/htdocs/index.html
启动守护程序
# rc-service darkhttpd start
输出应如下所示
* 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
现在将浏览器指向您的 darkhttpd 服务器,您应该获得索引页面,或者如果您没有创建索引页面,则会获得目录列表。
检查日志文件
$ tail /var/log/darkhttpd/access.log
控制 darkhttpd 状态
以通常的方式停止、启动和重启守护程序
# rc-service darkhttpd start
# rc-service darkhttpd stop
# rc-service darkhttpd restart
启动时自动启动 darkhttpd
要将守护程序添加到默认运行级别以便在启动时自动启动,请执行
# rc-update add darkhttpd
故障排除
- 重启守护程序时,您可能会看到错误消息
Stopping darkhttpd ... /lib/rc/sh/runscript.sh: line 202: can't create /sys/fs/cgroup/openrc/darkhttpd/tasks: nonexistent directory Starting darkhttpd ...
此错误消息似乎是良性的,没有后果,因此可以忽略。我只能在 VMWare vSphere 客户端上重现此错误。
- 如果守护程序无法启动,请确保您没有在 init 脚本中犯语法错误。
- 确保守护程序正在运行,使用
$ rc-status
- 利用日志检查它是否正在接收请求。为此,请运行
$ tail -f /var/log/darkhttpd/access.log
然后向 Web 服务器发送请求。如果 darkhttpd 正在接收请求,则会记录行。如果您没有看到这些行,可能是防火墙规则阻止了对服务器的访问,或者某处存在路由问题?
使用 Ctrl+C 完成测试后退出回到提示符。
参见
darkhttpd --help