OS X 服务器网站干扰默认 Apache

OS X 服务器网站干扰默认 Apache

我已经运行了默认的 Mac Apache 服务器,一切运行正常。但我还需要 OS X Server 来实现 Xcode 单元测试自动化和 DNS 服务,所以我今天安装了它。

然而,自从安装了 OS X Server 之后,Apache 就停止工作了。http://127.0.0.1已经无法访问http://localhost,尽管 OS X Server 中已经激活了网站服务。

检查错误日志,我看到以下内容:

[Fri Aug 22 20:22:38.678378 2014] [ssl:emerg] [pid 636] AH02580: Init: Pass phrase incorrect for key ::1:443:0
[Fri Aug 22 20:22:38.678753 2014] [ssl:emerg] [pid 636] SSL Library Error: error:0D094068:asn1 encoding routines:d2i_ASN1_SET:bad tag
[Fri Aug 22 20:22:38.678775 2014] [ssl:emerg] [pid 636] SSL Library Error: error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag
[Fri Aug 22 20:22:38.678798 2014] [ssl:emerg] [pid 636] SSL Library Error: error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error (Type=RSA)
[Fri Aug 22 20:22:38.678817 2014] [ssl:emerg] [pid 636] SSL Library Error: error:0D09A00D:asn1 encoding routines:d2i_PrivateKey:ASN1 lib
[Fri Aug 22 20:22:38.678831 2014] [ssl:emerg] [pid 636] AH02311: Fatal error initialising mod_ssl, exiting. See /var/log/apache2/error_log for more information
[Fri Aug 22 20:22:38.678840 2014] [ssl:emerg] [pid 636] AH02564: Failed to configure encrypted (?) private key ::1:443:0, check /etc/certificates/[...].key.pem
AH00016: Configuration Failed

显然,初始化模块时出错mod_ssl。现在的情况是,默认情况httpd.conf/etc/apache2/mod_ssl一开始就不活动(我检查过,现在仍然不活动),因此显然,OS X Server 启动的 Apache 实例与通常的实例不同。

但是,检查which apachectl时,我仍然得到通常的结果/usr/sbin/apachectl,但是在执行时/usr/sbin/apachectl restart,Apache 错误日志中会出现一批相同的错误消息。

我尝试停用 OS X Server 中的网站,然后启动 apachectl,但 OS X Server 中却亮起绿灯,因此很明显 OS X Server 和 apachectl 现在指的是同一个 Apache 实例。

我想知道的是:如何在不卸载 OS X Server 的情况下运行以前的 OS X 默认版本的 Apache?

我尝试卸载 OS X Server,卸载后 Apache 立即重新开始工作,但在我重新安装 Server 后它又停止了。非常感谢。

编辑:错误日志显示密钥的密码不正确。但是,密钥和证书都没有密码。

答案1

您可以阅读的源代码/usr/sbin/apachectl

apachectl start/restart/stop调用launchctl load -w $LAUNCHD_JOB,并且该任务是启动 plist 配置/System/Library/LaunchDaemon/org.apache.httpd.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Disabled</key>
    <true/>
    <key>EnvironmentVariables</key>
    <dict>
        <key>SERVER_INSTALL_PATH_PREFIX</key>
        <string>/Applications/Server.app/Contents/ServerRoot</string>
        <key>XPC_SERVICES_UNAVAILABLE</key>
        <string>1</string>
    </dict>
    <key>Label</key>
    <string>org.apache.httpd</string>
    <key>OnDemand</key>
    <false/>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/sbin/httpd-wrapper</string>
        <string>-D</string>
        <string>FOREGROUND</string>
        <string>-f</string>
        <string>/Library/Server/Web/Config/apache2/httpd_server_app.conf</string>
        <string>-D</string>
        <string>WEBSERVICE_ON</string>
    </array>
</dict>
</plist>

该作业httpd-wrapper通过/Library/Server/Web/Config/apache2/httpd_server_app.conf配置文件进行调用。

因此,解决方案是sudo apachctl在不带任何参数的情况下进行调用,它将httpd使用默认配置文件进行调用(/etc/apache2/httpd.conf)。

相关内容