darkhttpd

来自 阿尔卑斯 Linux

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 的内容

#!/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"

因此,默认情况下,我们将从 /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 的内容

#!/sbin/runscript description="darkhttpd web server" command="/usr/bin/darkhttpd" command_args="/var/files --chroot --daemon --uid darkhttpd --gid www-data --log /var/log/darkhttpd/access.log" procname="darkhttpd" pidfile="" stopsig="SIGTERM"

使用

文件共享变得容易;只需将您的文件添加到服务器根目录下,默认情况下是 /var/www/localhost/htdocs

测试

在服务器根目录下创建一个测试页面,默认情况下是 /var/www/localhost/htdocs

# echo "this is a test page" > /var/www/localhost/htdocs/index.html

注意: 您不必创建测试页面;在工作环境中,如果未找到索引页面,darkhttpd 将生成目录列表。

启动守护程序

# 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