본 페이지에서는 Apach2 서비스의 IncludeOptional 구문에서 에러가 발생할 경우 조치 방법에 대해서 설명합니다.
이 문제를 발견했을 때 syntax error로 로그가 남아서 설정 파일의 문법 오류가 아닌지를 먼저 살펴봤습니다만, 결론적으로는 모듈을 제대로 로드하지 못해서 발생한 에러였습니다.
이 문제를 어떻게 진단하고 해결했는지에 대해서 설명드리고자 합니다.
환경
필자가 경험한 문제의 환경은 아래와 같습니다.
No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 22.04 LTS Release: 22.04 Codename: jammy |
라즈베리파이4B에 Ubuntu Linux 22.04가 설치된 환경입니다.
문제의 현상
Ubuntu Linux를 20.04 LTS 버전으로 업그레이드 한 이후부터 웹서버가 동작하지 않는 문제가 발생함.
문제의 진단
$ sudo service apache2 status
service apache2 status 명령으로 로그를 살펴본 결과 아래와 같은 에러 메시지가 있음
apache2: Syntax error on line 146 of /etc/apache2/apache2.conf: Syntax error on line 3 of /etc/apache2/mods-enabled/php8.0.load: Cannot load /usr/lib/apache2/modules/libphp8.0.so into server: /usr/lib/apache2/modules/libphp8.0.so: cannot open shared object file: No such file or directory |
$ apachectl configtest
apachectl configtest 명령으로 체크해보면 동일한 에러가 표시됨.
apache2: Syntax error on line 146 of /etc/apache2/apache2.conf: Syntax error on line 3 of /etc/apache2/mods-enabled/php8.0.load: Cannot load /usr/lib/apache2/modules/libphp8.0.so into server: /usr/lib/apache2/modules/libphp8.0.so: cannot open shared object file: No such file or directory Action 'configtest' failed. The Apache error log may have more information. |
살펴보면 에러 메시지의 depth가 여러 단계라는 것을 알 수 있음.
최종적으로는 /etc/apache2/apach2.conf 파일의 146번 라인에서 syntax error가 발생함.
그렇지만 좀 더 자세히 살펴보면 /etc/apache2/mods-enabled/php8.0.load 3번 라인에서 문제가 발생했음.
그 이유는 /usr/lib/apache2/modules/libphp8.0.so 파일이 존재하지 않기 때문임.
$ vi /etc/apache2/apache2.conf
vi로 /etc/apache2/apache2.conf 파일을 열어서 로그를 순차적으로 따라가 봄.
IncludeOptional mods-enable/*.load 구문 자체는 문제가 없어 보임.
$ vi /etc/apache2/mods-enabled/php8.0.load
vi로 /etc/apache2/mods-enabled/php8.0.load 파일을 열어보니 아래와 같이 되어 있음
# Conflicts: php5 # Depends: mpm_prefork LoadModule php_module /usr/lib/apache2/modules/libphp8.0.so |
$ ls /usr/lib/apache2/modules
/usr/lib/apache2/modues 디렉토리를 살펴보니 libphp8.0.so 파일이 아니라 libphp8.1.so 파일이 존재함
ls /usr/lib/apache2/modules httpd.exp mod_dav_fs.so mod_proxy_connect.so libphp8.1.so mod_dav_lock.so mod_proxy_express.so mod_access_compat.so mod_dbd.so mod_proxy_fcgi.so mod_actions.so mod_deflate.so mod_proxy_fdpass.so |
config 파일은 libphp8.0.so 파일로 지정되어 있지만, 실제로 해당 파일은 없고 libphp8.1.so 파일이 존재해서 발생한 문제로 추정됨. 아무래도 ubuntu 업그레이드 과정에서 php 버전업이 되었는데, apache쪽 설정 파일은 변경되지 않은게 원인일 가능성이 높음.
문제의 해결
설정 파일을 아래와 같이 바꿈.
$ vi /etc/apache2/mods-enabled/php8.0.load
기존 | # Conflicts: php5 # Depends: mpm_prefork LoadModule php_module /usr/lib/apache2/modules/libphp8.0.so |
변경 | # Conflicts: php5 # Depends: mpm_prefork LoadModule php_module /usr/lib/apache2/modules/libphp8.1.so |
$ apachectl configtest
apachectl configtest 명령으로 설정 파일의 무결성을 재확인함.
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message Syntax OK |
$ sudo service apache2 restart
아파치 웹서버 서비스를 재시작함
$ sudo service apache2 status
아파치 서비스가 정상적으로 재시작 된 것을 확인할 수 있음
'웹페이지 운영' 카테고리의 다른 글
[무료글꼴 추천] 배달의 민족 폰트 다운로드 방법 (0) | 2022.08.26 |
---|---|
마이크로소프트 빙(Bing) 웹 마스터 도구의 인상 깊은 강점들 (0) | 2022.03.10 |
[구글 서치콘솔] 사이트맵 제출시에 사이트맵을 읽을 수 없음 문제 조치 방법 (7) | 2022.03.10 |