이전 기사에서 이어짐
nginx가 실행될 때 하나의 마스터와 세 개의 프로세스 프로세스로 구성된 백그라운드 프로세스로 실행됩니다. 디버깅을 용이하게 하려면 이 구성을 변경해야 합니다.
여기서 소스코드를 직접 변경하세요. 다시 만들기 쉽도록 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>
위에 printf를 추가했습니다. 왜냐하면 nginx는 콘솔에서 직접 실행되어 인쇄를 확인하고 이후 시작의 편의를 위해 conf/nginx.conf의 포트 번호를 8080으로 변경하고 make를 다시 실행하면 콘솔에 인쇄된 출력을 볼 수 있습니다. 브라우저가 http://localhost:8080에 액세스하면 성공도 반환되고 기타 로그 정보는 여전히 로그 디렉터리의 파일에 출력됩니다.
위 내용은 관련 측면을 포함하여 nginx 소스 코드(3)의 디버깅을 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.