На 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
начать правильно использовать содержимое включаемого файла?
Строка в нижней части , 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
директивой во включаемом файле, показанной выше. Чтобы помочь в диагностике, я включил в РЕДАКТИРОВКУ № 3 ниже ссылки на все .conf
файлы, которые содержатся в трех директивах include в 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 выше.
EDIT # 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, я изучил директивы include в httpd.conf . В httpd.conf есть три директивы include . Я перечислил три ниже, вместе со всеми файлами, расположенными в папке каждой директивы. Это все стандартные .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
?
EDIT # 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
директивы? Добавьте это к своему вопросу.