apache tidak akan memulai kembali setelah menambahkan file conf VirtualHost, mengapa tidak?

14

Di CentOS 7server, saya mendapatkan kesalahan berikut ketika saya mengetik sudo apachectl restartsetelah saya menambahkan file sertakan di bagian bawah httpd.conf:

Job for httpd.service failed. See 'systemctl status httpd.service' and 'journalctl -xn' for details.

Saat saya mengetik sudo systemctl status httpd.service -l, hasilnya adalah:

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.

Saya bisa apachememulai kembali jika saya mengomentari sertakan directive, dan saya dapat membuat kembali kesalahan dengan tidak mengomentari sertakan directive. Bagaimana saya bisa apachememulai dengan benar menggunakan konten file sertakan?

Garis di bagian bawah httpd.confpemicu bahwa kesalahan adalah: IncludeOptional sites-enabled/*.conf. Satu-satunya .conffile dalam sites-enabledfolder ini adalah mydomain.com.conf, yang memiliki konten berikut:

<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>

Yang httpd.confsama dengan apa yang datang pra-instal dengan httpd, kecuali untuk satu baris termasuk direktif di atas. Saya tahu karena saya lakukan sudo yum remove httpd mod_ssldan sudo yum install httpd mod_sslbenar sebelum memicu kesalahan ini. Seluruhnya httpd.confdapat dibaca di situs berbagi file dengan mengklik tautan ini .

Saya mengalami masalah ini ketika secara eksplisit mengikuti langkah-langkah dalam tutorial ini .

Ketika saya mengomentari file sertakan, http/mydomain.comberhasil menyajikan konten statis yang terletak di /var/www/html, yang DocumentRootdidefinisikan dalam httpd.conf. Masalahnya tampaknya berasal dari VirtualHostarahan dalam file include yang ditunjukkan di atas. Untuk membantu dalam diagnosis, saya telah memasukkan dalam EDIT # 3 tautan di bawah ini ke semua .conffile yang terkandung dalam ketiganya termasuk arahan dalam httpd.conf.

EDIT # 1

Ketika saya mencoba saran m32 untuk mengubah /etc/hostnameuntuk mendefinisikan mydomain.com, apachemasih tidak akan restart, dan systemctl status httpd.servicehasilnya sebagai berikut:

[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

Saya juga mencoba saran eyoung100 untuk mengubah isi /etc/hostsfile saya , sebagaimana didefinisikan dalam gambar berikut, tetapi saya masih mendapatkan kesalahan yang sama seperti yang didefinisikan dalam EDIT # 1 di atas.

EDIT # 3

Sesuai permintaan DerekC, saya berlari sudo apachectl configtestdan mendapatkan:

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

Selain itu, sesuai saran GarethTheRed, saya memeriksa arahan include di httpd.conf . Ada tiga termasuk arahan di httpd.conf . Saya telah mencantumkan tiga di bawah ini, bersama dengan semua file yang terletak di folder masing-masing direktif. Ini semua adalah .conffile standar yang diinstal httpd. Saya belum memodifikasinya. Anda dapat melihat setiap .conffile di situs berbagi file dengan mengklik tautan di bawah ini:

Include conf.modules.d/*.confreferensi file berikut dalam conf.modules.ddirektori: 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/*.confreferensi file berikut dalam conf.ddirektori: autoindex.conf
ssl.conf
userdir.conf
welcome.conf
Ada juga file README yang saya hilangkan di sini.

Selain itu, IncludeOptional sites-enabled/*.confarahan dan isinya diuraikan secara menyeluruh dalam OP di atas.

Apakah ada yang termasuk file yang bertentangan dengan VirtualHostpengaturan mydomain.com.conf?

EDIT # 4

Sesuai saran GarethTheRed, saya pindah mydomain.com.confke conf.ddirektori dan kemudian mulai mengomentari baris mydomain.com.confsatu per satu hingga httpddapat memulai kembali. Saya kemudian mulai berhenti mengomentari baris untuk melihat berapa banyak baris yang bisa tetap dan httpdmasih restart. Saya bisa httpdmemulai kembali, tetapi systemctl status httpd.service -lterus menghasilkan peringatan yang sama:

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

The VirtualHostsintaks yang memungkinkan httpduntuk memulai (meskipun terus menghasilkan peringatan di atas) adalah sebagai berikut:

<VirtualHost *:80>
    ServerName www.mydomain.com
    ServerAlias mydomain.com
    DocumentRoot /var/www/mydomain.com/public_html
</VirtualHost>  

Perhatikan bahwa saya harus menghilangkan baris berikut ini, yang kehadirannya meningkatkan peringatan menjadi ketidakmampuan lengkap untuk memulai http:

# ErrorLog /var/www/mydomain.com/error.log
# CustomLog /var/www/mydomain.com/requests.log combined

Juga, saya berlari sudo journalctl -xelu httpddan terminal membalas dengan mengulangi beberapa kali berikut ini:

-- 
-- 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)

Catatan: Hasil di atas tetap sama terlepas dari apakah saya menggunakan file host eyoung100 atau file host m32. Agar pertanyaan ini dijawab, saya pikir saya harus dapat membuat file log dan juga menghindari peringatan nama server. Kalau tidak, saya khawatir bahwa langkah-langkah selanjutnya untuk mengkonfigurasi httpd akan rentan terhadap kesalahan yang masih ada.

CodeMed
sumber
1
Kesalahan "nebulous" apa yang dihasilkan saat Anda menambahkan ServerNamearahan? Tambahkan ke pertanyaan Anda.
Wurtel
1
Apa output dari apachectl configtest?
DerekC
Apakah ada IncludeOptionaldi akhir httpd.conffile asli ? Saya percaya ada instalasi default. Masalahnya mungkin Anda menambahkan ekstra IncludeOptionaldi akhir yang memaksa apacheuntuk membaca file konfigurasi yang disertakan dua kali dan akibatnya menyebabkan gagal.
garethTheRed
Sebagai permulaan, Anda perlu memindahkan mydomain.com.confke /etc/httpd/conf.d(di mana yang lainnya) dan menghapus /etc/httpd/sites-enabled(itu adalah Debian / Ubuntu) dan yang IncludeOptionalAnda tambahkan httpd.conf. Anda dapat mengabaikan AH00558pesan untuk saat ini karena tidak berhenti apache. Selanjutnya hapus satu baris dari conffile Anda sampai Anda menemukan pelakunya (atau alternatifnya, mulai dengan yang kosong dan pulihkan satu baris sekaligus).
garethTheRed
1
@garethTheRed dan siapa pun dari google, Anda tidak perlu menghapus IncludeOptional sites-enabled / *. conf. Itu adalah ikan haring merah. Masalah sebenarnya adalah file log seperti yang ditunjukkan di bawah ini oleh garethTheRed. Saya mengikuti tutorial yang sama dengan OP dan memiliki masalah yang sama. Menghapus baris file log dari file conf virtual host memperbaikinya.
Louise Eggleton

Jawaban:

19

Log menyebabkan kesalahan karena apachetidak dapat menulis ke root situs web Anda. Bahkan jika Anda harus memperbaiki izin file, Anda masih akan diblokir oleh SELinux; yang hanya memungkinkan apacheuntuk menulis log /var/log/httpd. Solusi termudah adalah dengan mengubah situs web Anda untuk login ke direktori ini - mungkin dengan nama file yang berisi nama situs web untuk membedakannya dari log lain.

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

Untuk mengatur nama host server dan menyingkirkan peringatan AH00558, cukup gunakan:

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

misalnya

hostnamectl set-hostname --static mydomain.com
garethTheRed
sumber
Saya menemukan kesalahan lain saat saya terus mengerjakan ini. Apakah Anda bersedia membantu saya juga? Inilah tautannya: unix.stackexchange.com/questions/176052/…
CodeMed
2

Saya mendapatkan kesalahan ini ketika saya lupa mengatur nama host untuk mesin. Sudahkah Anda melakukannya?
Jalankan perintah ini:

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

Verifikasi dengan hostname

Sunting:
Dengan OP yang diperbarui, sepertinya file host Anda tidak diatur dengan benar. Inilah yang tampak seperti milikku;

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

Coba atur ke sesuatu yang sederhana seperti itu. Tentu saja, ganti semua informasi dengan milik Anda.
166.66.666.66dengan IP Anda sendiri
m32.me and m32dengan domain Anda, dan domain tanpa TLD

m32
sumber
Itu tidak memperbaiki masalah, saya masih mendapatkan AH00558kesalahan ketika saya menggunakan file contoh host Anda, dengan saya ipdan mydomain.com mydomain.
CodeMed