На CentOS 7
сервері я отримую таку помилку під час введення тексту, sudo apachectl restart
коли додаю файл включення внизу httpd.conf
:
Job for httpd.service failed. See 'systemctl status httpd.service' and 'journalctl -xn' for details.
Коли я потім набираю sudo systemctl status httpd.service -l
, результат:
httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled)
Active: failed (Result: exit-code) since Tue 2014-12-23 20:10:37 EST; 2min 15s ago
Process: 2101 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=0/SUCCESS)
Process: 2099 ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND (code=exited, status=1/FAILURE)
Main PID: 2099 (code=exited, status=1/FAILURE)
Status: "Total requests: 0; Current requests/sec: 0; Current traffic: 0 B/sec"
Dec 23 20:10:37 ip-address httpd[2099]: AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::e23f:49ff:feb7:2a21. Set the 'ServerName' directive globally to suppress this message
Dec 23 20:10:37 ip-address systemd[1]: httpd.service: main process exited, code=exited, status=1/FAILURE
Dec 23 20:10:37 ip-address systemd[1]: Failed to start The Apache HTTP Server.
Dec 23 20:10:37 ip-address systemd[1]: Unit httpd.service entered failed state.
Я можу apache
перезапуститись, якщо прокоментую директиву include, і знову можу відтворити помилку, не коментуючи директиву include. Як я можу apache
почати правильно використовувати вміст файлу include?
Рядок в нижній частині , httpd.conf
який призводить до помилки: IncludeOptional sites-enabled/*.conf
. Єдиний .conf
файл у sites-enabled
папці - mydomain.com.conf
це такий вміст:
<VirtualHost *:80>
ServerName www.mydomain.com
ServerAlias mydomain.com
DocumentRoot /var/www/mydomain.com/public_html
ErrorLog /var/www/mydomain.com/error.log
CustomLog /var/www/mydomain.com/requests.log combined
</VirtualHost>
Це httpd.conf
те саме, що і з попередньо встановленим httpd
, за винятком того, що один рядок містить директиву вище. Я знаю, тому що я зробив sudo yum remove httpd mod_ssl
і sudo yum install httpd mod_ssl
прямо перед тим, як викликати цю помилку. Ціле httpd.conf
можна прочитати на сайті обміну файлами , натиснувши на це посилання .
Я зіткнувся з цією проблемою, коли чітко слідував крокам у цьому підручнику .
Коли я коментую файл включення, http/mydomain.com
успішно подає статичний вміст, розташований у /var/www/html
, який DocumentRoot
визначено в httpd.conf
. Здається, проблема VirtualHost
випливає з директиви у файлі включення, показаному вище. Щоб допомогти в діагностиці, я включив у EDIT №3 нижче посилання на всі .conf
файли, які містяться в трьох включених директивах у httpd.conf
.
РЕДАКТИКА №1
Коли я спробую поради m32 змінити значення /etc/hostname
для визначення mydomain.com
, apache
все одно не перезапустяться, а systemctl status httpd.service
результати в наступному:
[sudo_user_account@server-ip-address ~]$ sudo systemctl status httpd.service -l
httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled)
Active: failed (Result: exit-code) since Tue 2014-12-23 14:25:35 EST; 20s ago
Process: 31993 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=0/SUCCESS)
Process: 31991 ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND (code=exited, status=1/FAILURE)
Main PID: 31991 (code=exited, status=1/FAILURE)
Status: "Total requests: 1; Current requests/sec: 0; Current traffic: 0 B/sec"
Dec 23 14:25:35 hostname systemd[1]: httpd.service: main process exited, code=exited, status=1/FAILURE
Dec 23 14:25:35 hostname systemd[1]: Failed to start The Apache HTTP Server.
Dec 23 14:25:35 hostname systemd[1]: Unit httpd.service entered failed state.
ЗРІД №2
Я також спробував поради eyoung100 змінити вміст мого /etc/hosts
файлу, як визначено на наступному зображенні, але я все одно отримую ту саму помилку, яку визначено в EDIT №1 вище.
ЗРІД №3
На прохання Дерека я побіг sudo apachectl configtest
і отримав:
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::e23f:49ff:feb7:2a21. Set the 'ServerName' directive globally to suppress this message
Syntax OK
Крім того, за пропозицією GarethTheRed я вивчив директиви щодо включення в httpd.conf . У httpd.conf є три директиви, що включають . Я перерахував три нижче, а також усі файли, що знаходяться в папці кожної директиви. Це всі стандартні .conf
файли, встановлені з httpd
. Я ще жодного з них не змінив. Ви можете переглянути кожен із .conf
файлів на сайті спільного використання файлів, натиснувши посилання нижче:
Include conf.modules.d/*.conf
посилається на такі файли в conf.modules.d
каталозі:
00-base.conf
00-dav.conf
00-lua.conf
00-mpm.conf
00-proxy.conf
00-ssl.conf
00-systemd.conf
01-cgi.conf
IncludeOptional conf.d/*.conf
посилання на наступні файли в conf.d
каталозі:
autoindex.conf
ssl.conf
userdir.conf
welcome.conf
Існує також README файл , який я опускаючи тут.
Крім того, IncludeOptional sites-enabled/*.conf
директива та її зміст були детально викладені в ОП вище.
Чи включають будь-який із цих файлів суперечливі VirtualHost
налаштування mydomain.com.conf
?
ЗРІД №4
За пропозицією garethTheRed я перейшов mydomain.com.conf
до conf.d
каталогу, а потім почав коментувати рядки mydomain.com.conf
по одному, поки httpd
не зміг перезапустити. Потім я почав скасовувати рядки для коментування, щоб побачити, скільки рядків може залишитися і httpd
ще перезапустити. Мені вдалося httpd
перезапустити, але systemctl status httpd.service -l
продовжує видавати те саме попередження:
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::e23f:49ff:feb7:2a21. Set the 'ServerName' directive globally to suppress this message
VirtualHost
Синтаксис , який дозволяє httpd
почати (хоча продовжує генерувати вище попередження) виглядає наступним чином :
<VirtualHost *:80>
ServerName www.mydomain.com
ServerAlias mydomain.com
DocumentRoot /var/www/mydomain.com/public_html
</VirtualHost>
Зауважте, що мені довелося опустити наступні рядки, наявність яких перетворює попередження до повної неможливості запустити http:
# ErrorLog /var/www/mydomain.com/error.log
# CustomLog /var/www/mydomain.com/requests.log combined
Також я побіг sudo journalctl -xelu httpd
і термінал відповів, повторюючи наступні багато разів:
--
-- Unit httpd.service has finished shutting down.
Dec 24 17:48:43 server-ip-address systemd[1]: Stopped The Apache HTTP Server.
-- Subject: Unit httpd.service has finished shutting down
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit httpd.service has finished shutting down.
Dec 24 17:48:48 server-ip-address systemd[1]: Starting The Apache HTTP Server...
-- Subject: Unit httpd.service has begun with start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit httpd.service has begun starting up.
Dec 24 17:48:48 server-ip-address httpd[10364]: AH00558: httpd: Could not reliably d
Dec 24 17:48:48 server-ip-address systemd[1]: Started The Apache HTTP Server.
-- Subject: Unit httpd.service has finished start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit httpd.service has finished starting up.
--
-- The start-up result is done.
lines 887-909/909 (END)
Примітка. Вищенаведені результати залишаються однаковими незалежно від того, використовую я файл хосту eyoung100 або файл хоста m32. Щоб відповісти на це питання, я думаю, я повинен мати можливість створювати файли журналів, а також уникати попередження про ім’я сервера. В іншому випадку я побоююся, що наступні кроки налаштування httpd будуть схильні до тривалих помилок.
apachectl configtest
?
IncludeOptional
кінець оригінального httpd.conf
файлу? Я вважаю, що це встановлено за замовчуванням. Проблема може полягати в тому, що ви додаєте додаткове IncludeOptional
в кінці, яке змушує apache
двічі прочитати включений конфігураційний файл і, отже, призводить до його збою.
mydomain.com.conf
до /etc/httpd/conf.d
(де всі інші) і видаляти /etc/httpd/sites-enabled
(це Debian / Ubuntu річ) і IncludeOptional
ви можете розмістити фотографії httpd.conf
. Наразі ви можете ігнорувати AH00558
повідомлення, оскільки воно не припиняється apache
. Далі видаліть рядок зі свого conf
файлу, поки ви не знайдете винуватця (або, будь ласка, почніть з порожнього та відновіть по одному рядку за один раз).
ServerName
директиву? Додайте його до свого питання.