apache не перезапуститься після додавання файлу конфіденційності VirtualHost, чому б ні?


14

На 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 будуть схильні до тривалих помилок.


1
Яка точна "туманна" помилка виникає, коли ви додаєте ServerNameдирективу? Додайте його до свого питання.
wurtel

1
Який вихід apachectl configtest?
ДерекC

Чи є IncludeOptionalкінець оригінального httpd.confфайлу? Я вважаю, що це встановлено за замовчуванням. Проблема може полягати в тому, що ви додаєте додаткове IncludeOptionalв кінці, яке змушує apacheдвічі прочитати включений конфігураційний файл і, отже, призводить до його збою.
garethTheRed

Для початку, вам потрібно , щоб перемістити mydomain.com.confдо /etc/httpd/conf.d(де всі інші) і видаляти /etc/httpd/sites-enabled(це Debian / Ubuntu річ) і IncludeOptionalви можете розмістити фотографії httpd.conf. Наразі ви можете ігнорувати AH00558повідомлення, оскільки воно не припиняється apache. Далі видаліть рядок зі свого confфайлу, поки ви не знайдете винуватця (або, будь ласка, почніть з порожнього та відновіть по одному рядку за один раз).
garethTheRed

1
@garethTheRed і будь-хто з google, вам не потрібно видаляти включення сайтів, включених / *. конф. Це була червона оселедець. Справжньою проблемою були файли журналів, як зазначено нижче в garethTheRed. Я дотримувався того ж посібника, що і ОП, і мав той самий випуск. Видалення ліній файлу журналу з віртуального файлу конфіденційного хоста виправлено.
Луїза Еглтон

Відповіді:


19

Журнали спричиняють помилки, оскільки apacheвони не можуть записувати в корінь вашого веб-сайту. Навіть якби ви виправили дозволи файлів, вас все одно заблокує SELinux; що дозволяє лише apacheписати журнали в /var/log/httpd. Найпростішим рішенням буде змінити ваш веб-сайт, щоб увійти до цього каталогу - можливо, з ім'ям файлу, що містить ім'я веб-сайту, щоб відрізняти його від інших журналів.

ErrorLog /var/log/httpd/mydomain_com_error.log
CustomLog /var/log/httpd/mydomain_com_requests.log combined

Щоб встановити ім'я хоста сервера та позбутися попередження AH00558, просто скористайтеся:

hostnamectl set-hostname --static <FQDN of your machine>

напр

hostnamectl set-hostname --static mydomain.com

Під час продовження роботи над цим я зіткнувся з черговою помилкою. Чи готові ви мені також допомогти? Ось посилання: unix.stackexchange.com/questions/176052/…
CodeMed

2

Я отримав цю помилку, коли забув встановити ім'я хоста для машини. Ви зробили це?
Виконайте цю команду:

echo 'example.com' >> /etc/hostname  

Перевірте за допомогою hostname

Редагувати:
Оновлений ОП виглядає, що файл хостів не налаштовано правильно. Ось як виглядає моя;

127.0.0.1 localhost.localdomain localhost
# Auto-generated hostname. Please do not remove this comment.
166.66.666.66 m32.me m32
::1     ip6-localhost ip6-loopback

Спробуйте встановити це на щось просте подібне. Звичайно, замініть всю інформацію своєю.
166.66.666.66з власним IP-адресою
m32.me and m32з вашим доменом та доменом без TLD


Це не вирішило проблему, я все одно отримую AH00558помилку, коли використовую ваш файл хостів-прикладів, з моїм ipі mydomain.com mydomain.
CodeMed
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.