아파치 에러 로그 설정, 오류 해결 방법 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 설정 과정에서 발생하는 오류 해결 방법은 아래의 글을 참고해 주시기 바랍니다.
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 모듈을 포함하여 관련된 모듈을 활성화 해 주시기 바랍니다.
( 본문 인용시 출처를 밝혀 주시면 감사하겠습니다.)