7

2 台の異なるマシンで最近気付いたのは、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" を grep すると、次のようになります。

$ 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 デーモンは同じ方法でロードされるため、それ自体が興味深いものです。動作しますが、リストにも表示されません。出力全体が本当に必要かどうか教えてください。

アップデート

私はlaunchctl listsudoの下で実行したと思いましたが、以下のmipadiのコメントに促されて、実行したことを確認し直しましたが、間違っていると思いました。sudo で実行すると、MacPorts 項目が表示されます。

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

参考になるかどうかわかりませんが、もう少し情報を。

アップデート

LaunchDaemons and Environment Variablesで、別の、しかし関連する質問をしました。詳細がわかり次第、両方の質問を更新します。

アップデート

今日は、メーリング リストの入力に基づいて、ワイルドカード ホーム ディレクトリを使用してみました。学術的には、私が望むよりも少し包括的ですが、実際には、このコンピューターを使用しているのは私だけです。確かに、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
4

7 に答える 7

1

Apache が起動時にロードを停止した理由がわかったので、その回答を明確にして、この質問を回答済みとしてマークします。起動時に Apache が起動しなくなった理由は、httpd.confシステム間でファイルを共有しようとしているからです。Include構成ファイルは、ホーム ディレクトリ内に存在するディレクトリからのファイルが必要です。マシンごとにホームディレクトリが違うので、${HOME}環境変数を参照するようにしていました。

これは、マシンの起動後に手動で開始する場合は問題なく機能しますが、環境変数がまだ設定されていないため、起動時に失敗します。上記のように、詳細についてはこの質問を参照してください。

于 2010-03-04T15:11:36.340 に答える
1

ロブ:

  1. 同じ問題がありました: "sudo launchctl load -w ..." は、ログイン中に Apache2 を起動しましたが、起動時に機能しませんでした ("-w" で対処する必要がありました)。また、お気づきのとおり、デーモンは launchctl に登録されているようです。「sudo launchctl list」で表示され、別の「sudo launchctl load ...」でエラー メッセージが表示されます。

  2. 「sudo port load apache2」と「sudo port unload apache2」で遊んでみましたが、再起動時に httpd を実行できませんでした。

  3. 最後に、MacPorts のスタートアップ項目「sudo port unload apache2」を削除し、「sudo launchctl list」で org.macports.apache2 がスタートアップ用に登録されていないことを確認しました。

  4. その後、http://diymacserver.com > Docs > Tiger > Starting Apache の手順に従いました。/usr/local/... から /opt/local/... へのパスを変更するだけで済みました。

これで、MacPorts Apache2 は再起動するたびに正常に起動します。

幸運を祈ります、クラウス

于 2010-07-08T22:17:43.947 に答える
0

新しいバージョンの MacPorts では、実行sudo port load apache2して MacPorts に launchctl セットアップを処理し、プロセスを自動的に開始するように指示できます。プロセスの実行を停止するにはport unload.

読み込み後/opt/local/apache2/logs/error_log、構成の問題を含むエラーを確認します。

于 2013-10-11T18:07:21.213 に答える
0

以前の回答に加えて、システムの他の何かがまだ準備されていないために、Apache が起動しない場合があることもわかりました。

1 台の OS X Server マシンでは、DNS を使用してマシンの「内部専用」DNS 名も作成し、その名前を Apache 構成で使用しています。Apache が DNS サーバーを開始しようとすると、ホスト名が有効でないためにまだ準備ができておらず、Apache のロードに失敗することがあります。

また、ローカル DNS を持たない他のサーバー以外のシステムでも、Apache が必要とする他の何かがまだ準備されていない場合に、これを見てきました。

うまくいったことの 1 つは、MacPorts がApache を起動するために使用するapache2.wrapper場所を編集することです。/opt/local/etc/LaunchDaemons/org.macports.apache2/apache2.wrapperdaemondo

関数を編集して、Apache を起動する前に少し待機するコマンドStart()を追加します。sleep

オリジナル (私のマシンの 14 ~ 17 行目)

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
}
于 2014-04-03T00:03:56.927 に答える
0

Apache で Subversion を使用している場合、mod_dav_svn.so ファイルが /opt/local/libexec に移動したため、Apache が起動しないことがあります。このファイルの新しい場所を考慮して、Apache 起動ファイルを調整する必要があります。

于 2013-08-18T00:13:30.107 に答える
0

私の 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のApacheドキュメントには明確に記載されていますが

複数の Listen ディレクティブを使用して、リッスンするアドレスとポートの数を指定できます。サーバーは、リストされたアドレスとポートのいずれかからの要求に応答します。

使用するだけに戻してみることにしました

Listen 80

その後、apache2は起動時にエラーや警告なしで起動します。

于 2012-04-09T00:19:15.733 に答える