MacPorts Apache2在启动时停止启动

Rob*_*son 7 apache apache2 macports launchd

我最近在两台不同的机器上注意到的一点是,通过MacPorts安装的Apache2似乎在我启动时停止了启动.诚实的事实是,我不能发誓之前这样做,但我认为这是我注意到的,因为安装LaunchDaemon是我安装过程的一部分.事实上,如果我尝试重新加载LaunchDaemon,它将失败:

$ sudo launchctl load -w /Library/LaunchDaemons/org.macports.apache2.plist
org.macports.apache2: Already loaded
Run Code Online (Sandbox Code Playgroud)

除非我手动启动Apache(使用sudo apachectl restart),否则在我的进程列表中对"apache2"或"httpd"进行grep'ing只产生:

$ sudo ps -ef | egrep "apache2|httpd"
    0    52     1   0   0:00.06 ??         0:00.08 /opt/local/bin/daemondo --label=apache2 --start-cmd /opt/local/etc/LaunchDaemons/org.macports.apache2/apache2.wrapper start ; --stop-cmd /opt/local/etc/LaunchDaemons/org.macports.apache2/apache2.wrapper stop ; --restart-cmd /opt/local/etc/LaunchDaemons/org.macports.apache2/apache2.wrapper restart ; --pid=none
Run Code Online (Sandbox Code Playgroud)

1410639199 6960 6792 0 0:00.00 ttys001 0:00.00 egrep apache2 | httpd

看起来守护进程本身就位,但没有可执行文件.据我所知/可以说,相关的可执行文件(httpd和apachectl)是每个人都可以执行的.

有没有其他人注意到这一点?有任何想法吗?

UPDATE

按照下面的要求,我确实执行了launchctl list.列表很长,我不知道如何剪切它,但足以说没有org.macports.*列出任何项目.这本身很有趣,因为我的MySQL守护进程以相同的方式加载.它有效,但也没有出现在列表中.如果真的需要整个输出,请告诉我.

UPDATE

我以为我是launchctl list在sudo下执行的,但是下面的mipadi评论提示,我再次尝试确保我这样做了,我认为不正确.在sudo下执行时,将显示MacPorts项:

51  -   org.macports.mysql5
52  -   org.macports.apache2
Run Code Online (Sandbox Code Playgroud)

我不确定这是否会有所帮助,但它仍然是一些信息.

UPDATE

我在LaunchDaemons和Environment Variables上问了一个不同但相关的问题.随着我的了解,我会更新这两个问题.

UPDATE

今天,基于邮件列表输入,我尝试使用通配符主目录.在学术上,它比我想要的更具包容性,但实际的现实是我是唯一使用这台电脑的人; 当然是唯一一个拥有Apache配置文件的人.

Include "/Users/*/Dropbox/Application Support/apache/conf.d.osx/*.conf"
Include "/Users/*/Library/Application Support/MacPorts/apache/conf.d/*.conf"
Run Code Online (Sandbox Code Playgroud)

不幸...

httpd: Syntax error on line 512 of /opt/local/apache2/conf/httpd.conf: Wildcard patterns not allowed in Include /Users/*/Dropbox/Application Support/apache/conf.d.osx/*.conf
Run Code Online (Sandbox Code Playgroud)

Rob*_*son 1

既然我现在知道为什么Apache 在启动时停止加载,我将阐明这个答案并将这个问题标记为已回答。Apache 停止在启动时启动的原因是我正在尝试httpd.conf跨系统共享文件。配置文件需要Include来自我的主目录中存在的目录的文件。由于每台计算机的主目录都不同,因此我尝试引用${HOME}环境变量。

当机器启动后手动启动时,这可以正常工作,但启动时会失败,因为尚未设置环境变量。如上所述,请参阅此问题以获取更多信息。