我想为 httpd 服务器创建 launchd.plist 文件。问题是 - 当 httpd 作为特权用户运行时,它会守护进程,这是不允许的launchd.plist 手册页。如果我不以超级用户身份运行它 - 它无法绑定到特权端口(这不是必需的,但很高兴拥有)。
问题 - 将非特权守护进程绑定到特权端口有哪些选项?我确实知道 Linux 有特权绑定项目。有没有可以和Mac OS X的launchd一起使用的解决方案?我可以/应该使用 privbind 并将其与 launchd.plist 格式一起破解吗?
答案1
阿帕奇支持几个特殊的调试定义,与 -D 一起使用:
- NO_DETACH:不与控制终端分离。
- FOREGROUND:(隐含 NO_DETACH):不要守护进程或从控制终端分离
- ONE_PROCESS(隐含NO_DETACH和FOREGROUND):不允许子进程处理客户端请求;请改用初始过程。
- DEBUG(暗示前面的所有内容):将 MPM 置于带有附加日志记录的特殊调试模式。
因此,运行“httpd -D FOREGROUND”将阻止其守护进程。
我也遇到了带有 Apache2 的 launchd plist 的论坛帖子你也许能够适应。
(注意:我知道这些都不能回答实际问题,但希望它们对最初描述的问题有用。)