High Sierraへのアップデート後にApache2(Httpd)が機能しない


15

High Sierra 10.13.1にアップデートした後、Apacheが起動しないという問題があります。エラーログには何も表示されていませんが、何を試みてapachectl startも何も起こりません。実行するapachectl configtestと、「構文OK

私はsudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plist役に立たないようなコマンドを使用しました。Apacheは起動しません。私は走ることができますがsudo launchctl load -w /Library/LaunchDaemons/homebrew.mxcl.httpd.plist、それもうまくいきません。

抽出サービスのリストを確認したところ、httpdが他のプロセス(mysql)とともにリストに表示されましたが、httpdのステータスは、緑色ではなく黄色の「開始済み」を示しています。

私は多くの異なることを試しました、そして私が見つけているのは、私が見つけたsystem.logファイルを調べれば com.apple.xpc.launchctl[1] (homebrew.mxcl.httpd24[11780]): Service exited with abnormal code:1

apachectl startを実行すると、コマンドは機能しているように見えますが、stopコマンドを実行すると、「httpd(pidファイルなし)が実行されていません
。com。; apple.xpc.launchd [1]( org.apache.httpd):OnDemandからKeepAliveに切り替えてください。

High Sierraで、ApacheがSierraで正常に動作したときに実行を妨げているものはありますか?


1
あなたはbrewのApache httpdとAppleのApache httpd(それらの起動デーモンが異なるバイナリを開始する)を混合しています!httpdステータスはどこから取得しますか(つまり、黄色と緑のインジケーター)。どの初期設定ガイドを使用しましたか?
クラノマス2017年

私はそれらを混ぜていません。brewとAppleのapacheの両方を試す手順を実行していましたbrew services list' I receive a yellow indicator, I checked with all of the available users and ran 。brewサービスリストを実行すると、すべて同じインジケーターが表示されます。設定ガイドについては、Ansibleを使用してApacheを設定しました。これは他の5つのMacBookで行われており、それらはまだSierraを実行しています。このMacBookに問題があり、Appleが診断を実行してOSをリセットし、OSをHigh Sierraに更新しました
Alcyeonnero 2017年

ミキシングとは、つまり、少なくとも2つのapachectlとhttpdのバイナリ(および2つの構成ファイル)がインストールされているということです。通常、brewのapachectlが推奨されます(PATH変数のデフォルトの内容のため、実際の設定は異なる場合があります)。AFAIR brewのapachectlは、デフォルトの起動オプション(つまりapachectl start)でAppleのhttpdを起動しません。と同じ... configtest
クラノマス2017年

「AnsibleはApacheのセットアップに使用されました」とは、このガイドを意味します。Mac開発Ansible Playbook?ハウツーまたは設定ガイドへのリンクを追加することをお勧めします。さまざまなmacOSバージョンのさまざまなセットアップガイドには、わずかに異なる構成が含まれており、異なる環境を作成しています。
クラノマス2017年

今週末、High Sierraにアップデートしましたが、まったく同じ問題が発生しています。私はHomebrew httpd式を使用していますが、今ではapacheが応答しません。私が行うときbrew services list、私はまた、取得started黄色でのhttpdのために、そして私が実行したときにsudo apachectl stop、それがいることを私に語ったhttpd (pid 87?) not responding.
wonder95

回答:


16

私の意見では、httpdに関連するコマンドを非常に多く実行して、さまざまなhttpd起動デーモン/開始メカニズムをホースしました。

homebrewとhomebrewのapache-httpdがインストールされ、デフォルトのPATHが設定されている場合、httpdを開始するには6つの方法があります。

AppleのApache:

  • sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plist
  • sudo /usr/sbin/apachectl start

HomebrewのApache:

  • sudo apachectl start
  • apachectl start
  • sudo brew services start httpd
  • brew services start httpd

ファイルhomebrew.mxcl.httpd.plistを手動で〜/ Library / LaunchAgents /または/ Library / LaunchDaemons /にコピーした場合、でロードすることでファイルを開始するためのオプションが2つあります(sudo) launchctl load ...

httpd構成ファイルまたはapachectlスクリプトを大幅に変更しなかった場合、Appleブランチは/ varにあるAppleのhttpd.confファイルと/ LibraryフォルダーにあるDocumentRootを使用します。

homebrewブランチは、/ usr / local /のサブフォルダーを使用します。

httpdポートを1024未満のポートにバインドした場合、一部の起動メソッドは機能しません。

を使用(sudo) brew services ...してhttpdを起動する場合は、適切な(sudo) brew services listコマンドを使用してステータスを確認する必要があります。

rootで開始する場合は、root privsでリストします。

sudo brew services start httpd > sudo brew services list

またはユーザーprivs:

brew services start httpd> brew services list


問題を解決するには、Appleのhttpdをアンロードします。

  • sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist
  • 手動でインストールされたhomebrew.mxcl.httpd.plistを削除します
  • 自作のhttpdサービスを停止する (sudo) brew services stop httpd
  • apachectlによって開始されたhttpdを停止します。

    apachectl stop
    sudo apachectl stop
    sudo /usr/sbin/apachectl stop
    
  • アクティビティモニターを開き、httpdプロセスが実行されていないことを確認します。
  • リブート

ここで-特権ポートでhomebrewのhttpdを使用したい場合-次のように入力します。

sudo brew services start httpd

正常な開始をで確認しsudo brew services listます。


あなたが提供した修正を試みると、私と同じ出力が表示されます。 apachectl stopの出力が 表示され、httpd (no pid file) not running実行すると黄色のsudo brew services httpd start sudo brew services listapache2(httpd)が表示さstartedれます。関連するWebページにアクセスしようとすると、アクセスできません。10.13へのアップデートにより、Apacheの何かが変更され、起動が妨げられたのではないかと思います。
Alcyeonnero 2017年

14

自作のhttpdに関して、私が最近遭遇した1つの問題は、httpdの起動を妨げていた古い残りのhttpd.pidファイルでした。症状はapachectl start、httpdはすでに実行されていると言われましたが、実行されていませんでした。

原因は古いファイルでした:

/usr/local/var/run/httpd/httpd.pid

解決策は、このpidファイルを削除してから、httpdを起動することでした。


すごい!私のMBPがスリープから復帰しないと判断し、電源を入れ直す必要がある場合、これは私の問題です。
フルンベール2018

2
このソリューションはMacOS Mojaveでも機能しました。ブリューは、Apacheが実行されていると考えていましたがhttpd、アクティビティモニターがありませんでした。これはそれを修正しました。
Vahid Amiri

これは私に多くのトラブルを救いました!
SEJU 2018

これも私にとってはうまくいきました。ウェブサイトを読み込めず、ERR_CONNECTION_REFUSEDが表示され続けました。で実行されているサービスを一覧表示しようとするとbrew services list、黄色の「開始」ステータスが表示されました。これは、サーバーのアクティブステータスに問題があることを意味します。pidを削除すると、これが修正され、サービスリストにアクティブステータスが緑色の「開始済み」として表示されるようになりました。これありがとう!
マイクコルメンディ、

カーネルパニック/電源切断などの後にマシンがハードリブートした場合、これはおそらく問題です。ありがとう!
Dom Stubbs

2

今日の初めにHigh Sierraにアップグレードした後、私は同じことに直面しました。次のapacheファイルが新しいバージョンに置き換えられていることがわかりました。幸い、これらすべてのファイルについて、同じフォルダにFILE〜前のファイルが存在していました。以前のバージョンを元のバージョンにコピーし、Apacheを再起動したところ、問題はありませんでした。

フォルダ内/etc/apache2

./httpd.conf
./extra/httpd-vhosts.conf
./extra/httpd-ssl.conf

例:

cp /etc/apache2/httpd.conf~previous /etc/apache2/httpd.conf

フォルダー/etc/apache2/extra/には約10個のファイルがあり、/etc/apache2/extra/
〜previousが

httpd.confファイルとhttpd-vhosts.confファイルから始めます。SSLを設定している場合は、httpd-ssl.confも更新する必要があります。残りは、以前に変更したかどうかによって異なります。私はdiffを使用して、ファイルが変更されたかどうかを確認します。たとえば、他のすべてのファイルのdiff httpd.conf httpd.conf〜previous
Unmesh

私はそれらのファイルから始めましたが、何も変更しませんでした。
Alcyeonnero 2017年

1

同じ問題がありました

com.apple.xpc.launchctl[1] (homebrew.mxcl.httpd24[11780]): Service exited with abnormal code:1

これは、httpdが異常終了したことを意味します。

次に、手動でhttpdを起動して、問題を確認しました

> httpd
(13)Permission denied: AH00091: httpd: could not open error log file /usr/local/var/log/httpd/error_log.

権限を見ると、かなり明確でした

> ll /usr/local/var/log/httpd/
total 96
-rw-r--r--  1 root  admin    242 15 apr 12:38 access_log
-rw-r--r--  1 root  admin  42062 20 jun 11:01 error_log

この問題の原因となったrootとしてhttpdを起動したと思います。ファイルを削除した後

brew services restart httpd

すべて大丈夫だった。


1

最近これに遭遇しました。原因は、homebrewがユーザーがアクセス可能なフォルダーにapache2 / httpdをインストールし、ユーザーとして実行することです(コマンドを実行することによって:brew services start httpd)。

通常のユーザーとして実行されていないということは、httpdが特権ポート(1024以下)でリッスンできないことを意味します。

そのため、httpd.confが80と443をリッスンするように設定されている場合でも、httpdはこれらのポートを介してリクエストを受信できません。

特殊なのは、sudo apachectl startコマンドを実行してhttpdを起動したときです。このコマンドは、httpdをrootユーザーとして開始します。rootユーザーは、ポート80および443でリッスンすることが許可されます。httpdは、_wwwユーザーとして実行されている特権を破棄します。

したがって、簡単な答えは、ポート80と443でhomebrew httpdを実行することです:sudo apachectl startを使用して開始します。sudo brew services start httpdで開始することもできます。sudo apachectl startはファイルのアクセス許可や所有者の変更を必要としないので、Brewはそれがルートの特定のフォルダーを要求していることを教えてくれます。


0

私はHomeBrewが常にsudoによってhttpdを実行すると言っていることとは逆に提案します。ps -aef | grep httpdを実行すると、実行中と表示されます。sudoなしで実行すると、ps出力が生成されず、httpdが実行されていないという誤った印象を与える可能性があります。

また、両方のケースで異なる設定または同じ設定が読み込まれているかどうかもわかりません。PHPをインストールし、phpInfoを使用してtest.phpファイルをDocumentRootディレクトリに作成しました。sudoでapacheを起動すると、brewサービスの使用中にphpinfoでlocalhost / test.phpが表示される場合があります。ルートアクセスが必要な場所にDocumentRootがある場合、httpdでエラーが発生します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.