0

.vhost で指定して、httpd.conf ファイルの ErrorLog の場所を上書きしようとしていますが、ファイルを作成するだけで、まだ .conf ファイルに書き込んでいます。

httpd.conf ファイルに次のものがあります。

# ErrorLog: The location of the error log file.
# If you do not specify an ErrorLog directive within a <VirtualHost>
# container, error messages relating to that virtual host will be
# logged here.  If you *do* define an error logfile for a <VirtualHost>
# container, that host's errors will be logged there and not here.
#
ErrorLog "logs/error.log"

# Virtual hosts
Include conf/vhosts/xyz_apache.vhost

次に、これを xyz_apache.vhost ファイルに (1 行で) 記述します。

ErrorLog  "C:/Program Files (x86)/Apache Software Foundation/
           Apache2.2/logs/xyzerrors.log"

Apache を起動し、logs ディレクトリを調べて何が作成されたかを確認すると、空白の xyzerrors.log ファイルと、起動メッセージが含まれる error.log ファイルが表示されます (「ポート 80 でリッスンするスレッドを開始しています」など)。

なぜこれが起こっているのか、またはどのように修正できるかについてのアドバイスはありますか? xyzerrors.log ファイルは明確に作成されているため、ファイル パスと「ErrorLog」のスペル、vhost 構成、および明らかなすべての部分が正しいようです。しかし、それは私のhttpd.confで指定されたファイルに書き込んでいます.vhostで指定されていない場合、私が正しく理解している場合、これはバックアップの場所にすぎないはずです。どうにかしてアクセス許可が問題になるのではないかと思いました (作成した xyzerror.log への書き込みアクセス権がなかったため、代わりに error.log に書き込みましたか?)、両方のファイルが同じディレクトリにあります。私が見逃した別の構成要素はありますか?

.conf ErrorLog の名前を変更し、.vhost ErrorLog を削除して何が起こっているかを確認したところ、.vhost ログが作成され、.conf ログが作成されて書き込まれていることがわかりました。Linuxで同様のセットアップを問題なく実行しています。

更新:これは別の作品です。lxml の問題を修正していたところ (エラーが発生し、新しいバージョンをインストールしてから apache を再起動しました)、xyzerror.log にいくつかのメッセージが表示されていることに気付きました。外観は次のとおりです。

エラーログ

[Wed Oct 09 09:14:52 2013] [notice] Child 42900: Starting thread to listen on port 80.
[Wed Oct 09 09:48:11 2013] [error] ERROR:django.request:Internal Server Error: /admin/
[Wed Oct 09 09:48:11 2013] [error] Traceback (most recent call last):
[Wed Oct 09 09:48:11 2013] [error] ImportError: DLL load failed: A dynamic link library (DLL) initialization routine failed. (Rest of traceback omitted)
[Wed Oct 09 09:54:50 2013] [notice] Parent: Received shutdown signal -- Shutting down the server.
Apache server interrupted...
Apache server interrupted...
Apache server interrupted...
Apache server interrupted...
Apache server interrupted...
Released the start mutex
[Wed Oct 09 09:54:52 2013] [notice] Child 42900: All worker threads have exited.
[Wed Oct 09 09:54:52 2013] [notice] Child 42900: Child process is exiting
[Wed Oct 09 09:54:52 2013] [notice] Parent: Child process exited successfully.
[Wed Oct 09 09:54:53 2013] [warn] mod_wsgi: Compiled for Python/2.7.
[Wed Oct 09 09:54:53 2013] [warn] mod_wsgi: Runtime using Python/2.7.2.
[Wed Oct 09 09:54:53 2013] [notice] Apache/2.2.22 (Win32) mod_wsgi/3.3 Python/2.7.2 configured -- resuming normal operations
[Wed Oct 09 09:54:53 2013] [notice] Server built: Jan 28 2012 11:16:39
[Wed Oct 09 09:54:53 2013] [notice] Parent: Created child process 40284
[Wed Oct 09 09:54:53 2013] [warn] mod_wsgi: Compiled for Python/2.7.
[Wed Oct 09 09:54:53 2013] [warn] mod_wsgi: Runtime using Python/2.7.2.
[Wed Oct 09 09:54:53 2013] [notice] Child 40284: Child process is running
[Wed Oct 09 09:54:53 2013] [notice] Child 40284: Acquired the start mutex.
[Wed Oct 09 09:54:53 2013] [notice] Child 40284: Starting 64 worker threads.
[Wed Oct 09 09:54:53 2013] [notice] Child 40284: Starting thread to listen on port 80.

xyzerror.log

[Wed Oct 09 09:47:54 2013] [info] [client 127.0.0.1] mod_wsgi (pid=42900, process='', application='XYZ.sysname.mydomain.local|'): Loading WSGI script 'C:/Users/etc/etc/XYZ_wsgi.py'.
[Wed Oct 09 09:48:11 2013] [error] [client 127.0.0.1] client denied by server configuration: C:/Users/etc/etc/site_media

これらは ErrorLog メッセージではないので、CustomLog 設定を調査する必要があるのでしょうか? それらと同様の動作が見られます(xyzaccess.logファイルが書き込まれていますが、.confのaccess.logが書き込まれています)が、簡単にするためにここには含めませんでした.

更新 2:

サイトを閲覧し続けてログ ファイルを確認すると、最終的にログが vhost の場所にある xyzerror.log (および xyzaccess.log) に書き込まれていることがわかります。最初の起動メッセージ (「ポートをリッスンしています..」など) と 1 つのサイト関連のエラーのみが conf の場所にありました。

誰かが解決策を説明または提案できますか?

アパッチ 2.2/Windows 7/ジャンゴ 1.5/Python 2.7

4

1 に答える 1

1

私が正しく理解している場合、.vhostで指定された場所がない場合は、バックアップの場所のみにする必要があります

全くない !

ErrorLogディレクティブはグローバルに適用することも、VirtualHost宣言されている に適用することもできるため、これは通常の動作です。

考えてみてください。起動イベントやモジュールのロード失敗などの apache 内部イベントのエラー ログにエラーが報告された場合、仮想ホストの解決がまだできないため、特定の仮想ホストのエラー ログをどのように使用できますか?

Apache は、クライアントがリクエストを行い、そのリクエストが IP 解決またはホスト名解決によって特定の仮想ホストを参照することが識別された場合にのみ、使用する仮想ホストを認識します。

そのため、仮想ホストに関連する PHP エラーや、401 または 404 コードなどの HTTP エラーなど、仮想ホスト固有のエラー ログに表示されるのはこれらのエラーのみです。

于 2013-10-11T14:20:43.180 に答える