Trong CentOS 7
máy chủ, tôi gặp lỗi sau khi nhập sudo apachectl restart
sau khi tôi thêm tệp bao gồm ở cuối httpd.conf
:
Job for httpd.service failed. See 'systemctl status httpd.service' and 'journalctl -xn' for details.
Khi tôi gõ sudo systemctl status httpd.service -l
, kết quả 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.
Tôi có thể apache
khởi động lại nếu tôi nhận xét lệnh bao gồm và tôi có thể tạo lại lỗi một lần nữa bằng cách không bình luận lệnh bao gồm. Làm cách nào tôi có apache
thể bắt đầu sử dụng đúng nội dung của tệp đính kèm?
Dòng ở dưới cùng httpd.conf
gây ra lỗi là : IncludeOptional sites-enabled/*.conf
. Các .conf
tập tin duy nhất trong sites-enabled
thư mục là mydomain.com.conf
, có nội dung sau đây:
<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>
Điều httpd.conf
này giống như những gì được cài đặt sẵn httpd
, ngoại trừ một dòng bao gồm chỉ thị ở trên. Tôi biết bởi vì tôi đã làm sudo yum remove httpd mod_ssl
và sudo yum install httpd mod_ssl
ngay trước khi kích hoạt lỗi này. Toàn bộ httpd.conf
có thể được đọc tại một trang web chia sẻ tập tin bằng cách nhấp vào liên kết này .
Tôi gặp phải vấn đề này khi rõ ràng làm theo các bước trong hướng dẫn này .
Khi tôi nhận xét tệp bao gồm, http/mydomain.com
phục vụ thành công nội dung tĩnh nằm trong /var/www/html
, được DocumentRoot
xác định trong httpd.conf
. Vấn đề dường như đến từ VirtualHost
chỉ thị trong tệp bao gồm ở trên. Để hỗ trợ chẩn đoán, tôi đã đưa vào EDIT # 3 bên dưới các liên kết đến tất cả các .conf
tệp có trong ba bao gồm các chỉ thị trong httpd.conf
.
EDIT # 1
Khi tôi thử lời khuyên của m32 để thay đổi /etc/hostname
định nghĩa mydomain.com
, apache
vẫn sẽ không khởi động lại và systemctl status httpd.service
kết quả như sau:
[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.
EDIT # 2
Tôi cũng đã thử lời khuyên của Eyoung100 để thay đổi nội dung /etc/hosts
tệp của mình , như được định nghĩa trong hình ảnh sau đây, nhưng tôi vẫn nhận được cùng một lỗi được xác định trong EDIT # 1 ở trên.
EDIT # 3
Theo yêu cầu của DerekC, tôi đã chạy sudo apachectl configtest
và nhận:
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
Ngoài ra, theo đề xuất của GarethTheRed, tôi đã xem xét các chỉ thị bao gồm trong httpd.conf . Có ba bao gồm các chỉ thị trong httpd.conf . Tôi đã liệt kê ba cái bên dưới, cùng với tất cả các tệp nằm trong thư mục của mỗi lệnh. Đây là tất cả các .conf
tập tin tiêu chuẩn được cài đặt với httpd
. Tôi chưa sửa đổi bất kỳ trong số họ. Bạn có thể xem từng .conf
tệp tại một trang chia sẻ tệp bằng cách nhấp vào các liên kết bên dưới:
Include conf.modules.d/*.conf
tham chiếu các tệp sau trong conf.modules.d
thư mục:
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
tài liệu tham khảo các tập tin sau đây trong conf.d
thư mục:
autoindex.conf
ssl.conf
userdir.conf
welcome.conf
Ngoài ra còn có một tập tin README rằng tôi bỏ qua ở đây.
Ngoài ra, IncludeOptional sites-enabled/*.conf
chỉ thị và nội dung của nó đã được phác thảo kỹ lưỡng trong OP ở trên.
Có ai trong số này bao gồm các tệp xung đột với các VirtualHost
cài đặt trong mydomain.com.conf
không?
EDIT # 4
Theo đề nghị của garethTheRed, tôi chuyển mydomain.com.conf
đến conf.d
thư mục và sau đó bắt đầu bình luận từng dòng mydomain.com.conf
một cho đến khi httpd
có thể khởi động lại. Sau đó tôi bắt đầu các dòng không bình luận để xem có bao nhiêu dòng có thể vẫn còn và httpd
vẫn khởi động lại. Tôi đã có thể httpd
khởi động lại, nhưng systemctl status httpd.service -l
tiếp tục đưa ra cảnh báo tương tự:
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
Các VirtualHost
cú pháp cho phép httpd
để bắt đầu (mặc dù tiếp tục tạo ra các cảnh báo ở trên) như sau:
<VirtualHost *:80>
ServerName www.mydomain.com
ServerAlias mydomain.com
DocumentRoot /var/www/mydomain.com/public_html
</VirtualHost>
Lưu ý rằng tôi đã phải bỏ qua các dòng sau, sự hiện diện của nó làm tăng cảnh báo thành không có khả năng bắt đầu http:
# ErrorLog /var/www/mydomain.com/error.log
# CustomLog /var/www/mydomain.com/requests.log combined
Ngoài ra, tôi đã chạy sudo journalctl -xelu httpd
và thiết bị đầu cuối trả lời bằng cách lặp lại nhiều lần sau đây:
--
-- 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)
Lưu ý: Các kết quả trên vẫn giữ nguyên cho dù tôi sử dụng tệp máy chủ của Eyoung100 hay tệp máy chủ của m32. Để câu hỏi này được trả lời, tôi nghĩ rằng tôi có thể tạo các tệp nhật ký và cũng tránh cảnh báo tên máy chủ. Mặt khác, tôi sợ rằng các bước tiếp theo của việc định cấu hình httpd sẽ dễ bị lỗi kéo dài.
apachectl configtest
gì?
IncludeOptional
phần cuối của httpd.conf
tập tin gốc ? Tôi tin rằng có một cài đặt mặc định. Vấn đề có thể là bạn đang thêm phần bổ sung IncludeOptional
vào cuối mà buộc apache
phải đọc tệp cấu hình đi kèm hai lần và do đó gây ra lỗi.
mydomain.com.conf
đến /etc/httpd/conf.d
(nơi có tất cả những thứ khác) và xóa /etc/httpd/sites-enabled
(đó là một thứ Debian / Ubuntu) và IncludeOptional
bạn đã thêm vào httpd.conf
. Bạn có thể bỏ qua AH00558
tin nhắn ngay bây giờ vì nó không dừng lại apache
. Tiếp theo xóa một dòng khỏi conf
tệp của bạn cho đến khi bạn tìm thấy thủ phạm (hoặc cách khác, bắt đầu với một dòng trống và khôi phục một dòng tại một thời điểm).
ServerName
? Thêm nó vào câu hỏi của bạn.