前回の記事からの続きです
nginxは実行時にバックグラウンドプロセスとして動作し、1つのマスタープロセスと3つのプロセスプロセスがデバッグを容易にするために、この構成を変更する必要があります。
ここでソースコードを直接変更して、再度作成しやすくするために、最初にMakefileを変更します
。
make clean 後にすべての Makefile ファイルが削除されないように、元の
<code><span>clean:</span> rm -rf Makefile objs</code>
から
<code><span>clean</span>: rm -rf nginx objs<span>/ngx_modules.o objs/src/core*.o objs/src/event/</span>*.o objs<span>/src/event/modules/</span>*.o objs<span>/src/http/</span>*.o objs<span>/src/http/modules/</span>*.o objs<span>/src/http/modules/proxy/</span>*.o objs<span>/src/os/unix/</span>*.o</code>
に変更されました。
core/nginx.c 内のデーモンとマルチプロセスに関連するコードをコメントアウトします:
<code><span>/* if (!ngx_inherited && ccf->daemon) { if (ngx_daemon(cycle->log) == NGX_ERROR) { return 1; } ngx_daemonized = 1; } */</span></code>
と
<code><span>printf</span>(<span>"[main] to start ngx_single_process_cycle\n"</span>); <span>///if (ngx_process == NGX_PROCESS_MASTER) {</span><span>/// ngx_master_process_cycle(cycle, &ctx);</span><span>///} else {</span> ngx_single_process_cycle(cycle, &ctx); <span>///}</span></code>
nginx は印刷を確認し、その後の起動のためにコンソールで直接実行されるため、上記に printf を追加しました。 conf/nginx.conf のポート番号を 8080 に変更し、make を再実行すると、コンソールに出力が表示されます。ブラウザが http://localhost:8080 にアクセスすると、成功も返されますが、他のログ情報は引き続き logs ディレクトリ内のファイルに出力されます。
上記では、関連する側面を含む nginx ソース コードのデバッグについて説明しました。PHP チュートリアルに興味のある友人に役立つことを願っています。