在运行 OpenBSD 6.2 amd64 的 OpenBSD 机器上,无法使用 rcctl 启动 httpd:
# rcctl start httpd
httpd(failed)
Run Code Online (Sandbox Code Playgroud)
但是,当只输入 开始时httpd,它会起作用;但这不是要走的路,我想。/var/log/messages不包含任何提示,也不包含任何其他文件/var/log/。
我/etc/httpd.conf的比较简单:
server "default" {
listen on * port 80
}
Run Code Online (Sandbox Code Playgroud)
/var/www存在并/var/www/htdocs包含手动启动时提供的文件。在中指定“root”/etc/httpd.conf无效。
我怎样才能httpd被自动启用/启动rcctl?
您的问题是httpd守护进程在开始使用时被赋予了一个无效的命令行参数(字符串YES)rcctl,因此无法正常启动。
中XXX_flags变量的唯一“特殊”值/etc/rc.conf.local是两个字母 string NO,它禁用相应的服务。这是大多数 OpenBSD 服务的默认值(请参阅/etc/rc.conf,您永远不应修改)。
rcctl以 root 身份启用服务,例如
# rcctl enable httpd
Run Code Online (Sandbox Code Playgroud)
在 的情况下httpd,这将写入行
httpd_flags=
Run Code Online (Sandbox Code Playgroud)
into /etc/rc.conf.local,这将启用该httpd服务。
的值httpd_flags将httpd在启动时传递给实际的守护程序。例如,您可以使用以下命令读取替代配置文件
httpd_flags=-f /etc/httpd.conf.local
Run Code Online (Sandbox Code Playgroud)
rcctl可以用来修改/etc/rc.conf.local这样的:
# rcctl set httpd flags -f /etc/httpd.conf.local
Run Code Online (Sandbox Code Playgroud)
最好使用而rcctl不是/etc/rc.conf.local直接使用编辑器进行修改。
Mic*_*ser -2
正如 Kusalananda 指出的,/etc/rc.conf 必须包含
httpd_flags=NO
Run Code Online (Sandbox Code Playgroud)
和 /etc/rc.conf.local 包含
httpd_flags=
Run Code Online (Sandbox Code Playgroud)
启用 httpd 或不属于 httpd 的任何内容以使其禁用。