Грешка во конфигурацијата на Apache AH00558: не може со сигурност да го одреди целосно квалификуваното име на домен на серверот
Вовед
Се генерира порака AH00558 на Apache-то: Не може со сигурност да се одреди целосно квалификуваното име на домен на серверот
кога Apache-то не е конфигуриран со глобална директива Име на сервер
. Пораката е главно за информативни цели, а грешката AH00558 нема да го спречи Apache да работи правилно.
Во ова упатство ќе научите како да откриете порака AH00558 користејќи ги методите опишани во упатството Како да се решат вообичаени грешки на Apache на почетокот на оваа серија. Исто така, ќе научите како да поставите директива ServerName
за да ја решите пораката.
Ако веќе сте утврдиле дека вашиот Apache-сервер е засегнат од порака AH00558 и сакате да ги прескокнете чекорите за решавање проблеми, чекорот на Директивата Поставување глобална ServerName
на крајот од ова упатство објаснува како да се реши проблемот порака.
Решавање проблеми Користење systemctl
Првиот чекор кога решавате проблеми со пораката AH00558: Не може со сигурност да се одреди целосно квалификуваното име на домен на серверот
е да се провери статусот на Apache со помош на systemctl
. Излезот од systemctl
во многу случаи ќе ги содржи сите информации што ви се потребни за да ја решите пораката.
На дистрибуциите на Linux добиени од Ubuntu и Debian, извршете го следново за да го проверите статусот на Apache:
- sudo systemctl status apache2.service -l --no-pager
На системите добиени од Rocky Linux, Fedora и Red Hat, користете ја оваа команда за да го испитате статусот на Apache:
- 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, извршете ја следнава команда:
- sudo journalctl -u apache2.service --since today --no-pager
На системите добиени од Rocky Linux, Fedora и Red Hat, користете ја оваа команда за да ги прегледате дневниците:
- 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, извршете ја следнава команда:
- sudo apachectl configtest
Треба да добиете излез како следниот ако вашиот сервер е засегнат од порака за грешка AH00558:
OutputAH00558: 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
или претпочитаниот уредувач на текст:
- 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
или претпочитаниот уредувач на текст :
- 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
за да проверите дали конфигурацијата е валидна.
- sudo apachectl configtest
Успешното повикување apachectl configtest
треба да резултира со излез како овој:
OutputSyntax OK
Сега можете повторно да ја вчитате конфигурацијата на Apache користејќи ја соодветната команда systemctl reload
за вашата дистрибуција на Linux.
На системи добиени од Ubuntu и Debian, извршете го следново:
- sudo systemctl reload apache2.service
На системите добиени од Rocky Linux, Fedora и Red Hat ја користат оваа команда за повторно вчитување на конфигурацијата на Apache:
- sudo systemctl reload httpd.service
Откако повторно ќе го вчитате Apache-то, пораката за грешка AH00558 веќе нема да се појавува во вашите дневници. Можете да потврдите дека пораките се стишуваат со извршување на која било од трите команди systemctl
, journalctl
или apachectl
што се прикажани во ова упатство.
Заклучок
Во ова упатство научивте за пораките за грешка AH00558: Не можев со сигурност да ги одредам серверите за целосно квалификувани име на домен
. Иако овие пораки не го спречуваат Apache-то да работи, тие може да се решат со поставување на глобална директива ServerName
.
Научивте како да пребарувате пораки за грешка AH00558 користејќи ги командите systemctl
, journalctl
и apachectl
. Конечно, научивте како да ја уредувате вашата конфигурација на Apache на различни дистрибуции на Linux за да ги замолчите пораките.
Ако сакате да дознаете повеќе за тоа како Apache ги користи директивите ServerName
, документацијата на Apache за виртуелните домаќини базирани на име ја објаснува директивата подетално.