MacPorts Apache2在启动时停止启动

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

$ sudo launchctl load -w /Library/LaunchDaemons/org.macports.apache2.plist
org.macports.apache2: Already loaded

除非我手动启动Apache(使用sudo apachectl restart ),否则在我的进程列表中grep'ing“apache2”或“httpd”只会产生如下结果:

$ 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

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

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

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

UPDATE

按照下面的要求,我确实执行了launchctl list 。 该列表很长,我不知道如何org.macports.*它,但足以说没有org.macports.*项目被列出。 这本身很有趣,因为我的MySQL守护进程以相同的方式加载。 它可以工作,但也不会出现在列表中。 让我知道是否真的需要整个输出。

UPDATE

我认为我已经执行sudo下的launchctl list ,但是由于launchctl list的评论如下,我再次尝试确保我这样做了,但我错误地假设了。 在sudo下执行时,出现MacPorts项目:

51  -   org.macports.mysql5
52  -   org.macports.apache2

我不确定这是否会有所帮助,但还是有更多信息。

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"

不幸...

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

我在这里找到了我对这个问题的答案:

https://trac.macports.org/ticket/36101

“我在更改我的本地dnsmasq配置时显然修复了这个问题。在/ etc / hosts中,我将我的servername(gala)添加到了loopback条目中:

127.0.0.1 localhost gala

然后我更改/opt/local/apache2/conf/httpd.conf中的ServerName以匹配:

ServerName gala

Apache现在开始为我启动。“


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

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


抢:

  • 有同样的问题:“sudo launchctl加载-w ...”在我登录时启动了Apache2,但在启动过程中没有工作(“-w”应该照顾到这一点)。 另外,正如你注意到的那样,这个守护进程似乎是用launchctl注册的。 它将显示“sudo launchctl list”,另一个“sudo launchctl load ...”将导致错误消息。

  • 我玩“sudo port load apache2”和“sudo port unload apache2”,但无法在重新启动时运行httpd。

  • 最后,我摆脱了MacPorts的启动项:“sudo port unload apache2”,并用“sudo launchctl list”检查了org.macports.apache2不再注册启动。

  • 之后,我按照http://diymacserver.com> Docs> Tiger> Starting Apache中的步骤进行操作。 我只需要修改/ usr / local / ...路径到/ opt / local / ...

  • 现在MacPorts的Apache2在每次重新启动的时候都可以正常启动。

    祝你好运,克劳斯

    链接地址: http://www.djcxy.com/p/43947.html

    上一篇: MacPorts Apache2 Stopped Launching on Boot

    下一篇: How can I make a property "Write Once Read Many" in VB.NET?