apache sẽ không khởi động lại sau khi thêm tập tin conf Virtualhost, tại sao không?


14

Trong CentOS 7máy chủ, tôi gặp lỗi sau khi nhập sudo apachectl restartsau 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ể apachekhở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ó apachethể bắt đầu sử dụng đúng nội dung của tệp đính kèm?

Dòng ở dưới cùng httpd.confgây ra lỗi là : IncludeOptional sites-enabled/*.conf. Các .conftập tin duy nhất trong sites-enabledthư 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.confnà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_sslsudo yum install httpd mod_sslngay trước khi kích hoạt lỗi này. Toàn bộ httpd.confcó 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.comphục vụ thành công nội dung tĩnh nằm trong /var/www/html, được DocumentRootxác định trong httpd.conf. Vấn đề dường như đến từ VirtualHostchỉ 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 .conftệ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, apachevẫn sẽ không khởi động lại và systemctl status httpd.servicekế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/hoststệ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 configtestvà 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 .conftậ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 .conftệ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/*.conftham chiếu các tệp sau trong conf.modules.dthư 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/*.conftài liệu tham khảo các tập tin sau đây trong conf.dthư 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/*.confchỉ 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 VirtualHostcài đặt trong mydomain.com.confkhông?

EDIT # 4

Theo đề nghị của garethTheRed, tôi chuyển mydomain.com.confđến conf.dthư mục và sau đó bắt đầu bình luận từng dòng mydomain.com.confmột cho đến khi httpdcó 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à httpdvẫn khởi động lại. Tôi đã có thể httpdkhởi động lại, nhưng systemctl status httpd.service -ltiế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 VirtualHostcú 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 httpdvà 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.


1
Lỗi "chính xác" nào được tạo ra khi bạn thêm một lệnh ServerName? Thêm nó vào câu hỏi của bạn.
wurtel

1
Đầu ra của là apachectl configtestgì?
DerekC

Có một IncludeOptionalphần cuối của httpd.conftậ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 IncludeOptionalvào cuối mà buộc apachephải đọc tệp cấu hình đi kèm hai lần và do đó gây ra lỗi.
garethTheRed

Để bắt đầu, bạn cần di chuyển 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à IncludeOptionalbạn đã thêm vào httpd.conf. Bạn có thể bỏ qua AH00558tin 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 conftệ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).
garethTheRed

1
@garethTheRed và bất kỳ ai từ google, bạn không cần phải xóa Bao gồm các trang web được kích hoạt / *. conf. Đó là một con cá trích đỏ. Vấn đề thực sự là các tệp nhật ký như được chỉ ra dưới đây bởi garethTheRed. Tôi đã làm theo hướng dẫn tương tự như OP và có cùng một vấn đề. Xóa các dòng tệp nhật ký khỏi tệp conf máy chủ ảo đã sửa nó.
Louise Eggleton

Câu trả lời:


19

Các nhật ký gây ra lỗi vì apachekhông thể ghi vào thư mục gốc của trang web của bạn. Ngay cả khi bạn đã sửa các quyền của tập tin, bạn vẫn sẽ bị chặn bởi SELinux; mà chỉ cho phép apacheviết nhật ký /var/log/httpd. Giải pháp đơn giản nhất là thay đổi trang web của bạn để đăng nhập vào thư mục này - có thể với một tên tệp có chứa tên trang web để phân biệt với các nhật ký khác.

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

Để đặt tên máy chủ của máy chủ và thoát khỏi cảnh báo AH00558, chỉ cần sử dụng:

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

ví dụ

hostnamectl set-hostname --static mydomain.com

Tôi gặp một lỗi khác khi tôi tiếp tục làm việc này. Bạn có sẵn sàng giúp tôi với nó không? Đây là đường dẫn: unix.stackexchange.com/questions/176052/iêu
CodeMed 26/12/14

2

Tôi đã gặp lỗi này khi tôi quên đặt tên máy chủ cho máy. Bạn đã làm như vậy?
Chạy lệnh này:

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

Xác minh với hostname

Chỉnh sửa:
Với OP được cập nhật, có vẻ như tệp máy chủ của bạn không được thiết lập đúng. Đây là những gì của tôi trông như thế nào;

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

Hãy thử đặt nó thành một cái gì đó đơn giản như thế. Tất nhiên, thay thế tất cả các thông tin với của riêng bạn.
166.66.666.66với IP của riêng bạn
m32.me and m32với tên miền của bạn và tên miền mà không cần TLD


Điều đó không khắc phục được sự cố, tôi vẫn gặp AH00558lỗi khi tôi sử dụng tệp lưu trữ ví dụ của bạn, với của tôi ipmydomain.com mydomain.
CodeMed
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.