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


아파치 에러 로그 설정, 오류 해결 방법 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 연결 오류 해결 방법

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