MacPorts Apache2在启动时停止启动

MacPorts Apache2在启动时停止启动,apache2,macports,apache,launchd,Apache2,Macports,Apache,Launchd,我最近在两台不同的机器上注意到,通过MacPorts安装的Apache2在启动时似乎已经停止启动。老实说,我不能保证它以前是这样做的,但我想我会注意到这一点,因为安装LaunchDaemon是我安装过程的一部分。事实上,如果我尝试重新加载LaunchDaemon,它会失败: $ sudo launchctl load -w /Library/LaunchDaemons/org.macports.apache2.plist org.macports.apache2: Already loaded

我最近在两台不同的机器上注意到,通过MacPorts安装的Apache2在启动时似乎已经停止启动。老实说,我不能保证它以前是这样做的,但我想我会注意到这一点,因为安装LaunchDaemon是我安装过程的一部分。事实上,如果我尝试重新加载LaunchDaemon,它会失败:

$ sudo launchctl load -w /Library/LaunchDaemons/org.macports.apache2.plist
org.macports.apache2: Already loaded
除非我手动启动Apache(使用
sudo apachectl restart
),否则在进程列表中搜索“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)是每个人都可以执行的

还有人注意到了吗?有什么想法吗

更新

按照下面的要求,我确实执行了
launchctl list
。这个列表很长,我不知道如何剪掉它,但我只想说没有列出
org.macports.*
项。这本身很有趣,因为我的MySQL守护进程也是以同样的方式加载的。它可以工作,但也不会出现在列表中。如果真的需要全部输出,请告诉我

更新

我假设我在sudo下执行了
launchctl list
,但在下面mipadi的评论的提示下,我再次尝试确保我这样做了,我的假设是错误的。在sudo下执行时,将显示MacPorts项:

51  -   org.macports.mysql5
52  -   org.macports.apache2
我不确定这是否会有帮助,但还是有更多的信息

更新

我问了一个不同但相关的问题。随着我了解更多,我将更新这两个问题

更新

今天,基于邮件列表输入,我尝试使用通配符主目录。在学术上,它比我想要的更具包容性,但实际情况是,我是唯一一个使用这台电脑的人;当然是唯一一个有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
既然我现在知道Apache为什么在启动时停止加载,我将清楚地说明这个答案,并将这个问题标记为已回答。Apache在启动时停止启动的原因是我正在尝试跨系统共享一个
httpd.conf
文件。配置文件需要包含我的主目录中存在的目录中的文件。由于每台机器上的主目录不同,我试图引用
${home}
环境变量

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

Rob:

  • 有同样的问题:“sudo launchctl load-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不再注册启动

  • 之后,我按照>文档>老虎>启动Apache上的步骤进行操作。我只需要修改/usr/local/…中的路径。。。至/opt/local/

  • 现在,MacPorts Apache2在每次重新启动时都能正常启动


    祝你好运,Klaus

    我发现我的MacPorts apache2没有在启动时启动,因为我的
    httpd.conf
    中有一个“错误”

    我在用

    Listen 127.0.0.1:80
    Listen 192.168.2.1:80
    Listen 123.123.123.123:80 # Example IP, not the one I was really using
    
    在我看到的Console.app中

    4/8/12 4:59:06.208 PM org.macports.apache2: (49)Can't assign requested address: make_sock: could not bind to address 192.168.2.1:80
    4/8/12 4:59:06.208 PM org.macports.apache2: no listening sockets available, shutting down
    4/8/12 4:59:06.208 PM org.macports.apache2: Unable to open logs
    
    我尝试调整所有日志文件夹的权限(尽管在我手动启动apache2时,日志编写得很好),但没有任何帮助

    即使法律明确规定

    可以使用多个Listen指令指定要侦听的多个地址和端口。服务器将响应来自任何列出的地址和端口的请求

    我决定试着重新使用它

    Listen 80
    

    执行此操作后,apache2将在引导时启动,没有任何错误或警告。

    如果将Subversion用于Apache,您可能会发现Apache没有启动,因为mod_dav_svn.so文件已移动到/opt/local/libexec。您需要调整Apache启动文件以适应此文件的新位置。

    在较新版本的MacPorts中,您可以运行
    sudo port load apache2
    来指示MacPorts处理启动CTL设置并自动启动进程。要停止进程,请运行
    端口卸载


    加载后,检查
    /opt/local/apache2/logs/error\u log
    是否有错误,包括配置问题。

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

    “显然,我在更改本地dnsmasq config.In/etc/hosts时解决了这个问题,我在环回条目中添加了我的服务器名(gala):

    127.0.0.1本地主机晚会

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

    服务器名晚会

    Apache现在为我启动。”

    除了我的启动之外,我还发现有时候Apache无法启动,因为系统中的其他东西还没有准备好

    在一台OSX服务器机器上,我还使用DNS为机器创建“仅限内部”的DNS名称,该名称用于我的Apache配置。有时,当Apache尝试启动DNS服务器时,DNS服务器尚未就绪,Apache无法加载,因为主机名无效

    我在其他没有本地DNS的非服务器系统上也看到了这一点,在这些系统中,Apache需要的其他东西还没有准备好

    O
    Start()
    {
        [ -x /opt/local/apache2/bin/apachectl ] && /opt/local/apache2/bin/apachectl start > /dev/null
    }
    
    Start()
    {
        [ -x /opt/local/apache2/bin/apachectl ] && sleep 10 && /opt/local/apache2/bin/apachectl start > /dev/null
    }