Apache gagal memuat ulang ... Apakah ada log yang dapat saya lihat detailnya?

12

Saya memiliki server web yang sedang saya tambahkan situs.

Setelah berlari a2ensite, saya berlari service apache2 reload, dan mendapatkan ini:

[FAIL] Memuat ulang konfigurasi server web: apache2 gagal!

Apakah ada file log yang dapat saya lihat untuk detail lebih lanjut?

Tanda tanya
sumber

Jawaban:

9

Anda dapat melihat di mana httpddikonfigurasikan untuk mencari file konfigurasi menggunakan -Vsaklar:

$ httpd -V
Server version: Apache/2.2.15 (Unix)
Server built:   Feb 13 2012 22:31:42
Server's Module Magic Number: 20051115:24
Server loaded:  APR 1.3.9, APR-Util 1.3.9
Compiled using: APR 1.3.9, APR-Util 1.3.9
Architecture:   64-bit
Server MPM:     Prefork
  threaded:     no
    forked:     yes (variable process count)
Server compiled with....
 -D APACHE_MPM_DIR="server/mpm/prefork"
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -D APR_USE_SYSVSEM_SERIALIZE
 -D APR_USE_PTHREAD_SERIALIZE
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D DYNAMIC_MODULE_LIMIT=128
 -D HTTPD_ROOT="/etc/httpd"
 -D SUEXEC_BIN="/usr/sbin/suexec"
 -D DEFAULT_PIDLOG="run/httpd.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_LOCKFILE="logs/accept.lock"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="conf/mime.types"
 -D SERVER_CONFIG_FILE="conf/httpd.conf"

Anda juga dapat menggunakan perintah lsofuntuk melihat file apa yang sedang diakses oleh proses Unix. Versi saya httpdmenggunakan stock port 80 jadi ubah 80 ke 8443 di casing Anda!

$ netstat -tapn|grep ::80
tcp        0      0 :::80                       :::*                        LISTEN      5338/httpd     

Anda sekarang dapat menjalankan lsofuntuk mencari tahu di mana file-file log sedang ditulis untuk:

$ lsof -p 5338|grep log
httpd   5338 root  mem    REG  253,0    10440   3141 /usr/lib64/httpd/modules/mod_logio.so
httpd   5338 root  mem    REG  253,0    27200   3139 /usr/lib64/httpd/modules/mod_log_config.so
httpd   5338 root    2w   REG  253,0     2014 395029 /var/log/httpd/error_log
httpd   5338 root    7w   REG  253,0     4140 394789 /var/log/httpd/access_log

Anda harus dapat menentukan lokasi access_logserta file konfigurasi dan melihat melalui mereka untuk menentukan arahan "Direktori" dan "Lokasi". Ini menentukan direktori lokal apa yang akan digunakan ketika memberi tahu Apache file apa yang akan disajikan.

Sekarang apa?

Saya kemudian akan memeriksa access_loguntuk memastikan bahwa ada entri di sana yang sesuai dengan akses terhadap server. Yang saya maksud dengan ini adalah jika saya menelusuri server di http://www.somedom.com/somefileSaya harus melihat akses ini direkam dalam access_logfile seperti ini:

192.168.1.110 - - [17/Jul/2013:14:39:50 -0400] "GET /somefile HTTP/1.1" 200 4303 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/5
37.36 (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36"

Di mana file-nya?

Anda dapat mengambil pengetahuan di atas yang telah kami peroleh dan mulai menerapkannya seperti ini:

Bit-bit ini dari httpd -Vmemberitahu kita root Apache:

-D HTTPD_ROOT="/etc/httpd"
-D SERVER_CONFIG_FILE="conf/httpd.conf"

Jadi kita tahu file konfigurasi utama di sini: /etc/httpd/conf/httpd.conf. Jadi lihat file itu untuk baris berikut:

$ grep -E "DocumentRoot|Directory \"|^Include" /etc/httpd/conf/httpd.conf |grep -v "^#"
Include conf.d/*.conf
DocumentRoot "/var/www/html"
<Directory "/var/www/html">
<Directory "/var/www/icons">
<Directory "/var/www/cgi-bin">
    <Directory "/var/www/error">

Jadi saya sekarang tahu bahwa direktori ini adalah sumber potensial untuk file yang kita lihat di access_log. Saya DocumentRootdan Directoriessaya akan mencari file somefile,. Jika tidak ada di salah satu lokasi ini maka saya selanjutnya akan fokus pada Includedirektori yang disebutkan di atas dalam grepoutput /etc/httpd/conf.d/*.conf,.

File-file ini adalah konfigurasi tambahan yang digunakan Apache sehingga Anda harus mengulangi langkah-langkah menggunakan grepuntuk melihat melalui file-file ini juga.

slm
sumber
14

Jika Anda tidak dapat menemukan file log atau file log kosong, Anda dapat menjalankan tes konfigurasi apache yang akan mencetak masalah dengan file konfigurasi:

apachectl configtest
kr
sumber
2

Lari service apache2 restart. Ini akan menampilkan pesan kesalahan apa pun (biasanya layanan menjalankan tes konfigurasi sebelum berhenti dan memulai apache)

seydu
sumber