웹사이트 검색

Apache 구성 오류 AH00558: 서버의 정규화된 도메인 이름을 안정적으로 확인할 수 없습니다.


소개

Apache가 전역 ServerName 지시문으로 구성되지 않은 경우 Apache AH00558: 서버의 정규화된 도메인 이름을 안정적으로 확인할 수 없음 메시지가 생성됩니다. 이 메시지는 주로 정보 제공용이며 AH00558 오류로 인해 Apache가 올바르게 실행되지 않습니다.

이 자습서에서는 이 시리즈의 시작 부분에 있는 일반적인 Apache 오류를 해결하는 방법 자습서에 설명된 방법을 사용하여 AH00558 메시지를 감지하는 방법을 배웁니다. 또한 메시지를 해결하기 위해 ServerName 지시문을 설정하는 방법도 배웁니다.

Apache 서버가 AH00558 메시지의 영향을 받는 것으로 이미 확인되었고 문제 해결 단계를 건너뛰려는 경우 이 자습서의 끝에 있는 전역 ServerName 지시문 설정 단계에서 문제를 해결하는 방법을 설명합니다. 메시지.

systemctl을 사용한 문제 해결

AH00558: 서버의 정규화된 도메인 이름을 안정적으로 결정할 수 없습니다 메시지 문제를 해결할 때 첫 번째 단계는 systemctl을 사용하여 Apache의 상태를 확인하는 것입니다. 대부분의 경우 systemctl의 출력에는 메시지를 해결하는 데 필요한 모든 정보가 포함됩니다.

Ubuntu 및 Debian 파생 Linux 배포판에서 다음을 실행하여 Apache의 상태를 확인합니다.

  1. sudo systemctl status apache2.service -l --no-pager

Rocky Linux, Fedora 및 Red Hat 파생 시스템에서 다음 명령을 사용하여 Apache의 상태를 검사합니다.

  1. sudo systemctl status httpd.service -l --no-pager

-l 플래그는 systemctl이 긴 줄을 줄임표()로 대체하는 대신 한 줄의 전체 내용을 출력하도록 합니다. --no-pager 플래그는 한 번에 콘텐츠 화면만 표시하는 less와 같은 도구를 호출하지 않고 전체 로그를 화면에 출력합니다.

다음과 유사한 출력이 표시되어야 합니다.

Output
● apache2.service - The Apache HTTP Server Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled) Drop-In: /lib/systemd/system/apache2.service.d └─apache2-systemd.conf Active: active (running) since Wed 2020-07-29 14:30:03 UTC; 33min ago Process: 34 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS) Main PID: 46 (apache2) Tasks: 55 (limit: 2344) CGroup: /system.slice/apache2.service ├─46 /usr/sbin/apache2 -k start ├─47 /usr/sbin/apache2 -k start └─48 /usr/sbin/apache2 -k start Jul 29 14:30:03 68e2cf19f3f1 systemd[1]: Starting The Apache HTTP Server... Jul 29 14:30:03 68e2cf19f3f1 apachectl[34]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message Jul 29 14:30:03 68e2cf19f3f1 systemd[1]: Started The Apache HTTP Server.

AH00558 메시지가 포함된 강조 표시된 줄이 중요한 것입니다. 기본적으로 Apache가 구성 파일에서 유효한 ServerName 지시문을 찾을 수 없음을 알려주므로 감지한 첫 번째 IP 주소를 사용합니다. 이 예에서는 서버의 공개 IP 주소입니다: 172.17.02. AH00558 메시지의 문제를 해결하는 경우 감지된 IP 주소가 다르거나 사람이 읽을 수 있는 DNS 이름일 수 있습니다.

systemctl 출력에 자동 감지된 IP 주소 또는 호스트 이름 값이 포함된 경우 이 자습서의 마지막 섹션인 전역 ServerName 지시문 설정으로 건너뛰어 문제를 해결하세요. 이 섹션에서는 localhost의 IP 주소인 127.0.0.1을 사용하여 안전한 기본 ServerName 값으로 Apache를 구성합니다.

systemctl 출력이 ServerName 지시문에 사용할 수 있는 값을 나타내지 않는 경우 이 자습서의 다음 섹션에서 systemd를 검사하는 방법을 설명합니다. > journalctl을 사용하여 AH00558 메시지를 찾습니다.

journalctl을 사용한 문제 해결

Apache의 systemd 로그를 검사하려면 journalctl 명령을 사용합니다. journalctl을 호출할 때 대량의 로그 항목이 있는 경우 특정 메시지를 찾는 데 도움이 되는 두 가지 특정 플래그가 있습니다.

journalctl 호출에 추가할 첫 번째 플래그는 --since today 플래그입니다. 현재 날짜의 00:00:00부터 시작하는 항목만 기록하도록 명령의 출력을 제한합니다. 이 옵션을 사용하면 오류를 확인할 때 검사해야 하는 로그 항목의 양을 제한하는 데 도움이 됩니다.

사용할 두 번째 플래그는 systemctl에서 사용한 것과 동일한 --no-pager 옵션으로 전체 로그를 한 번에 화면에 출력합니다.

Ubuntu 및 Debian 파생 시스템에서 다음 명령을 실행합니다.

  1. sudo journalctl -u apache2.service --since today --no-pager

Rocky Linux, Fedora 및 Red Hat 파생 시스템에서 다음 명령을 사용하여 로그를 검사합니다.

  1. sudo journalctl -u httpd.service --since today --no-pager

Apache 서버가 AH00558 메시지를 생성하는 경우 journalctl 명령 출력에서 다음과 같은 행을 찾습니다.

Output
-- Logs begin at Wed 2020-07-29 14:30:02 UTC, end at Wed 2020-07-29 14:45:03 UTC. -- . . . Jul 29 14:30:03 68e2cf19f3f1 systemd[1]: Starting The Apache HTTP Server... Jul 29 14:30:03 68e2cf19f3f1 apachectl[34]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message Jul 29 14:30:03 68e2cf19f3f1 systemd[1]: Started The Apache HTTP Server.

두 번째 출력 라인은 AH00558 메시지입니다. 이 행에는 Apache가 런타임에 자동으로 감지하고 기본값으로 설정하는 주소인 서버의 공용 IP 주소가 포함됩니다. 이 메시지를 AH00558 오류 확인으로 사용하여 전역 ServerName 지시문 설정으로 진행하여 문제를 해결할 수 있습니다.

그렇지 않은 경우 다음 섹션에서는 apachectl 명령을 사용하여 AH00558 오류 메시지를 진단하는 방법을 설명합니다.

apachectl을 사용한 문제 해결

AH00558: 서버의 정규화된 도메인 이름을 안정적으로 확인할 수 없음 오류는 Apache의 apachectl 유틸리티를 사용하여 감지할 수 있습니다. apachectl을 사용하면 Apache를 다시 로드하거나 다시 시작하기 전에 이와 같은 메시지를 포착할 수 있으며 오류를 찾기 위해 systemctljournalctl 로그를 검색할 필요가 없습니다. .

AH00558 메시지에 대한 Apache 구성을 확인하려면 다음 명령을 실행하십시오.

  1. sudo apachectl configtest

서버가 AH00558 오류 메시지의 영향을 받는 경우 다음과 같은 출력을 받아야 합니다.

Output
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message Syntax OK

systemctljournalctl을 사용하여 AH00558 메시지를 찾은 이 자습서의 이전 섹션과 마찬가지로 이전 예제에서 강조 표시된 AH00558 메시지가 포함된 라인이 중요합니다. . 이 예에서 IP 주소 172.17.0.2는 서버에서 다를 수 있습니다.

이 자습서의 다음 섹션에서는 AH00558 오류 메시지를 해결하기 위해 ServerName 지시문을 설정하는 방법을 설명합니다.

전역 ServerName 지시문 설정

AH00558: 서버의 정규화된 도메인 이름을 안정적으로 결정할 수 없습니다 오류 메시지를 해결하려면 Apache 구성에 ServerName 지시문을 추가해야 합니다. Apache는 ServerName 지시어를 사용하여 단일 서버를 사용하여 여러 사이트에 대한 요청을 처리하기 위해 VirtualHost 지시어를 사용하여 들어오는 HTTP 요청을 IP 주소 또는 DNS 호스트 이름에 매핑합니다.

오류 메시지는 전역 ServerName 지시문도 설정해야 함을 나타냅니다. 이렇게 하면 Apache가 추가 오류를 생성하지 않고 VirtualHost에 매핑되지 않는 들어오는 요청을 정상적으로 처리할 수 있습니다.

다양한 Apache 구성과의 최대 호환성을 위해 전역 ServerName 지시문에 127.0.0.1 값을 사용합니다. 필요한 경우 서버 구성에 해당하는 다른 IP 주소 또는 DNS 이름을 사용할 수 있지만 127.0.0.1을 사용하는 것이 가장 안전합니다.

Ubuntu 및 Debian 파생 시스템에서 nano 또는 원하는 텍스트 편집기를 사용하여 루트 권한으로 /etc/apache2/apache2.conf 파일을 엽니다.

  1. sudo nano /etc/apache2/apache2.conf

파일 끝에 ServerName 127.0.0.1이 포함된 줄을 추가합니다.

. . .
# Include the virtual host configurations:
IncludeOptional sites-enabled/*.conf

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
ServerName 127.0.0.1

Rocky Linux, Fedora 및 Red Hat 파생 시스템에서 nano 또는 원하는 텍스트 편집기를 사용하여 루트 권한으로 /etc/httpd/conf/httpd.conf 파일을 엽니다. :

  1. sudo nano /etc/httpd/conf/httpd.conf

파일 끝에 ServerName 127.0.0.1 줄을 추가합니다.

. . .
# Supplemental configuration
#
# Load config files in the "/etc/httpd/conf.d" directory, if any.
IncludeOptional conf.d/*.conf
ServerName 127.0.0.1

완료되면 파일을 저장하고 닫습니다. nano를 사용한 경우 CTRL + X, Y를 누른 다음 ENTER를 눌러 수행합니다.

구성에 ServerName 지시문을 추가했으면 apachectl을 실행하여 구성이 유효한지 테스트합니다.

  1. sudo apachectl configtest

apachectl configtest 호출에 성공하면 다음과 같은 결과가 출력되어야 합니다.

Output
Syntax OK

이제 Linux 배포에 적합한 systemctl reload 명령을 사용하여 Apache 구성을 다시 로드할 수 있습니다.

Ubuntu 및 Debian 파생 시스템에서 다음을 실행합니다.

  1. sudo systemctl reload apache2.service

Rocky Linux, Fedora 및 Red Hat 파생 시스템에서 다음 명령을 사용하여 Apache 구성을 다시 로드합니다.

  1. sudo systemctl reload httpd.service

Apache를 다시 로드하면 AH00558 오류 메시지가 더 이상 로그에 나타나지 않습니다. 이 자습서에서 설명하는 세 가지 systemctl, journalctl 또는 apachectl 명령 중 하나를 실행하여 메시지가 음소거되었는지 확인할 수 있습니다.

결론

이 자습서에서는 AH00558: 서버의 정규화된 도메인 이름을 안정적으로 확인할 수 없습니다 오류 메시지에 대해 배웠습니다. 이러한 메시지가 Apache 실행을 방해하지는 않지만 전역 ServerName 지시문을 설정하여 해결할 수 있습니다.

systemctl, journalctlapachectl 명령을 사용하여 AH00558 오류 메시지를 검색하는 방법을 배웠습니다. 마지막으로 다양한 Linux 배포판에서 Apache 구성을 편집하여 메시지를 무음으로 만드는 방법을 배웠습니다.

Apache가 ServerName 지시문을 사용하는 방법에 대해 자세히 알아보려면 이름 기반 가상 호스트에 대한 Apache 설명서에서 지시문에 대해 자세히 설명합니다.