아파치 에러 로그 설정, 분석 해결 방법


아파치 에러 로그 설정, 오류 해결 방법 Apache 웹 서버에서 발생 할 수 있는 에러 종료와 해결 방법에 대해서 설명드립니다. 아파치 오류 로그 설정과 해결 방법 에러 페이지 설정 방법 등에서 대해서 예제를 통해서 께 알려드리도록 하겠습니다.

아파치 에러

에러 로그 설정

Apache 웹 서버는 접속 로그외에 에러 로그를 함께 기록하게 됩니다. 에러로그는 ErrorLog 라는 지시어와 함께 에러 파일 경로를 설정하면서 지정할 수 있습니다.
아래의 내용은 절대 경로로 에러파일의 위치를 지정한 것입니다.

ErrorLog /var/log/error_log

그리고 아래와 같이 APACHE_LOG_DIR 변수를 이용하여 로그 파일이 저장될 경로를 지정 할 수도 있습니다.

ErrorLog ${APACHE_LOG_DIR}/error.log

APACHE_LOG_DIR 위치는 각가 리눅스 배포판에 따라 아래와 같이 경로의 차이가 있습니다.

  • Debian, Ubuntu : /var/log/apache2
  • RedHat, CentOS, Fedora : /var/log/httpd

그리고 APACHE_LOG_DIR 위치는 /etc/apache2/envvars 파일에 정의되어 있습니다.

아파치 에러 페이지

웹서버에서 오류가 발 생 할 경우 응답하는 에러 코드에 따라, 에러 페이지를 보여줄 수 있습니다.
아래의 에제는 각각의 에러 코드에 따른 에러페이지를 출력하도록 설정 하는 옵션입니다.

ErrorDocument 500 http://example.com/cgi-bin/server-error.cgi
ErrorDocument 404 /errors/bad_urls.php
ErrorDocument 401 /subscription_info.html
ErrorDocument 403 "Sorry, can't allow you access today"
ErrorDocument 403 Forbidden!
ErrorDocument 403 /errors/forbidden.py?referrer=%{escape:%{HTTP_REFERER}}

자주 발생 발생하는 오류

아래는 Apache 웹 서버에서 자주 발생하는 오류 해결 방법입니다.

Mutex 관련 오류

아파치 웹서버가 실행되는 중간에 아래의 에러 로그가 발생하면서 종료 되는 증상입니다.

[Mon Jul 01 21:57:01.985428 2019] [mpm_prefork:notice] [pid 12509] AH00163: Apache/2.4.29 (Ubuntu) configured -- resuming normal operations
[Mon Jul 01 21:57:01.985493 2019] [core:notice] [pid 12509] AH00094: Command line: '/usr/sbin/apache2'
[Mon Jul 01 22:06:19.573110 2019] [mpm_prefork:emerg] [pid 12545] (43)Identifier removed: AH00144: couldn't grab the accept mutex
[Mon Jul 01 22:06:19.573117 2019] [mpm_prefork:emerg] [pid 12547] (43)Identifier removed: AH00144: couldn't grab the accept mutex
[Mon Jul 01 22:06:19.573118 2019] [mpm_prefork:emerg] [pid 12549] (43)Identifier removed: AH00144: couldn't grab the accept mutex
[Mon Jul 01 22:06:19.573441 2019] [mpm_prefork:emerg] [pid 12546] (43)Identifier removed: AH00144: couldn't grab the accept mutex
[Mon Jul 01 22:06:20.486108 2019] [core:alert] [pid 12509] AH00050: Child 12545 returned a Fatal error... Apache is exiting!
[Mon Jul 01 22:06:20.486131 2019] [:emerg] [pid 12509] AH02818: MPM run failed, exiting

위와 같은 에러가 발생 할 경우 /etc/apache2/apache2.conf 파일을 열고, 다음과 같은 내용을 수정하면 됩니다.

기존 내용

#Mutex file:${APACHE_LOCK_DIR} default

수정 내용

 Mutex posixsem

그리고 다음과 같이 서버를 재실행 합니다.

$ sudo service apache2 restart

접근 권한 문제

다음과 같이 client denied by server configuration 라는 에러가 발생할 경우 해결방법입니다.

[Thu Sep 24 00:22:43.016754 2015] [authz_core:error] [pid 25144] [client 127.0.0.1:36131] AH01630: client denied by server configuration: /var/www/html/

apache 상위 버전에는 다음과 같이 서버설정에서 Require all granted 라는 내용이 추가되어야 합니다.

<Directory />
  AllowOverride All
  Options All -Indexes
  Require all granted
</Directory>

아파치 SSL 설정 과정에서 발생하는 오류 해결 방법은 아래의 글을 참고해 주시기 바랍니다.

SSL 연결 오류 해결 방법

schema 처리 문제

다음과 같은 에러 메세지가 발생할 경우입니다.

No protocol handler was valid for the URL / (scheme 'http'). If you are using a DSO version of mod_proxy, make sure the proxy submodules are included in the configuration using LoadModule.

http 프로토콜 핸들러를 처리할 수 없는 문제로 proxy 설정을 할 때 관련 모듈이 활성화 되지 않았기 때문에 발생하는 에러 메세지 입니다. 위에서 설명드렸듯이 proxy_http 모듈을 포함하여 관련된 모듈을 활성화 해 주시기 바랍니다.

( 본문 인용시 출처를 밝혀 주시면 감사하겠습니다.)