Грешка во конфигурацијата на Apache AH00558: не може со сигурност да го одреди целосно квалификуваното име на домен на серверот


Вовед

Се генерира порака AH00558 на Apache-то: Не може со сигурност да се одреди целосно квалификуваното име на домен на серверот кога Apache-то не е конфигуриран со глобална директива Име на сервер. Пораката е главно за информативни цели, а грешката AH00558 нема да го спречи Apache да работи правилно.

Во ова упатство ќе научите како да откриете порака AH00558 користејќи ги методите опишани во упатството Како да се решат вообичаени грешки на Apache на почетокот на оваа серија. Исто така, ќе научите како да поставите директива ServerName за да ја решите пораката.

Ако веќе сте утврдиле дека вашиот Apache-сервер е засегнат од порака AH00558 и сакате да ги прескокнете чекорите за решавање проблеми, чекорот на Директивата Поставување глобална ServerName на крајот од ова упатство објаснува како да се реши проблемот порака.

Решавање проблеми Користење systemctl

Првиот чекор кога решавате проблеми со пораката AH00558: Не може со сигурност да се одреди целосно квалификуваното име на домен на серверот е да се провери статусот на Apache со помош на systemctl. Излезот од systemctl во многу случаи ќе ги содржи сите информации што ви се потребни за да ја решите пораката.

На дистрибуциите на Linux добиени од Ubuntu и Debian, извршете го следново за да го проверите статусот на 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 за да го решите проблемот. Во тој дел ќе го конфигурирате Apache со безбедна стандардна вредност ServerName користејќи ја IP адресата за localhost: 127.0.0.1.

Ако вашиот излез systemctl не покажува вредност што можете да ја користите за директивата ServerName, следниот дел од ова упатство објаснува како да се испита systemd евидентира користејќи journalctl за да лоцира порака AH00558.

Решавање проблеми Користење journalctl

За да ги испитате дневниците systemd за Apache, ќе ја користите командата journalctl. Кога се повикувате journalctl, постојат две специфични знаменца кои ќе ви помогнат да лоцирате одредени пораки доколку има голем обем на записи во дневникот.

Првото знаме што ќе го додадете во повикувањето journalctl е знамето --од денес. Ќе го ограничи излезот на командата на записите во дневникот кои започнуваат само во 00:00:00 часот од тековниот ден. Користењето на оваа опција ќе помогне да се ограничи обемот на записи во дневникот што треба да ги испитате кога проверувате за грешки.

Второто знаме што ќе го користите е истата опција --no-pager што ја користевте со systemctl, што ќе го емитува целиот дневник на вашиот екран одеднаш.

На системи добиени од 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. Линијата ја вклучува јавната IP адреса на серверот, што е адресата што Apache автоматски ја открива и ја поставува како стандардна при извршување. Со оваа порака како потврда за грешката AH00558, можете да продолжите до Директивата Поставување глобална ServerName за да го решите проблемот.

Инаку, следниот дел објаснува како да дијагностицирате порака за грешка AH00558 користејќи ја командата apachectl.

Решавање проблеми со помош на apachectl

Може да се открие грешка во AH00558: Не може со сигурност да се одреди целосно квалификуваното име на домен на серверите со помош на алатката apachectl на Apache. Со apachectl можете да фаќате пораки како овие пред повторно да го вчитате или рестартирате Apache-то и може да избегнете да барате низ дневниците systemctl и journalctl за да ги лоцирате грешките .

За да ја проверите вашата конфигурација на Apache за порака AH00558, извршете ја следнава команда:

  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

Како и со претходните делови во ова упатство кои користеа systemctl и journalctl за да ги лоцираат пораките AH00558, линијата што ја содржи пораката AH00558, истакната во претходниот пример, е важна. . Повторно забележете дека IP адресата 172.17.0.2 во овој пример може да биде различна на вашиот сервер.

Следниот дел од ова упатство објаснува како да ја поставите директивата ServerName да ги решава пораките за грешка AH00558.

Поставување глобална директива за името на серверот

За да се реши пораката за грешка AH00558: Не може со сигурност да се одреди целосно квалификуваното име на домен на серверот, ќе треба да додадете директива Име на сервер во вашата конфигурација на Apache. Apache ја користи директивата ServerName за да ги мапира дојдовните HTTP барања на IP адреса или име на DNS-домаќин користејќи ги директивите VirtualHost со цел да се справи со барањата за повеќе локации користејќи еден сервер.

Пораката за грешка забележува дека треба да се постави и глобална директива ServerName. Со тоа ќе се осигури дека Apache може благодатно да се справи со дојдовните барања што не се мапираат на VirtualHost без да генерира дополнителни грешки.

За максимална компатибилност со различни конфигурации на Apache, користете ја вредноста на 127.0.0.1 за вашата глобална директива ServerName. Може да користите друга IP адреса или име на DNS што одговара на конфигурацијата на вашиот сервер доколку е потребно, но најбезбедно е да користите 127.0.0.1.

На системи изведени од Ubuntu и Debian, отворете ја датотеката /etc/apache2/apache2.conf со права на root користејќи nano или претпочитаниот уредувач на текст:

  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, отворете ја датотеката /etc/httpd/conf/httpd.conf со права на root користејќи nano или претпочитаниот уредувач на текст :

  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

Сега можете повторно да ја вчитате конфигурацијата на Apache користејќи ја соодветната команда systemctl reload за вашата дистрибуција на Linux.

На системи добиени од 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.

Научивте како да пребарувате пораки за грешка AH00558 користејќи ги командите systemctl, journalctl и apachectl. Конечно, научивте како да ја уредувате вашата конфигурација на Apache на различни дистрибуции на Linux за да ги замолчите пораките.

Ако сакате да дознаете повеќе за тоа како Apache ги користи директивите ServerName, документацијата на Apache за виртуелните домаќини базирани на име ја објаснува директивата подетално.