Anahtarı httpdkullanarak yapılandırma dosyalarını arayacak şekilde nerede yapılandırıldığını görebilirsiniz -V:
$ 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"
Bu komutu lsof, bir Unix işleminin hangi dosyalara eriştiğini görmek için de kullanabilirsiniz . Benim httpdsürümüm stok portu 80 kullanıyor, bu yüzden sizin durumunuzda 80'i 8443 olarak değiştirin!
$ netstat -tapn|grep ::80
tcp 0 0 :::80 :::* LISTEN 5338/httpd
Artık lsofgünlük dosyalarının nereye yazıldığını bulmak için çalışabilirsiniz :
$ 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
access_logYapılandırma dosyalarının yanı sıra konumunu da belirleyebilmeli ve "Dizin" ve "Konum" yönergelerini belirlemek için bu dosyalara bakabilmelisiniz. Bunlar, Apache'ye hangi dosyaların sunulacağını söylerken hangi yerel dizinlerin kullanılacağını belirtir.
Şimdi ne olacak?
Daha sonra access_logorada sunucuya erişim karşılık gelen girişleri olduğundan emin olmak için bakmak . Bununla ne demek istediğim ben sunucuya göz atarsanız http://www.somedom.com/somefileben bu erişim access_logdosya gibi kaydedilmiş görmeliyim :
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"
Dosyalar nerede?
Aldığımız yukarıdaki bilgiyi alabilir ve aşağıdaki gibi uygulamaya başlayabilirsiniz:
Bu parçalar httpd -Vbize Apache'nin kökünü anlatıyor:
-D HTTPD_ROOT="/etc/httpd"
-D SERVER_CONFIG_FILE="conf/httpd.conf"
Ana yapılandırma dosyası biliyorum Yani burada: /etc/httpd/conf/httpd.conf. Bu nedenle, şu satırlar için bu dosyaya bakın:
$ 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">
Artık bu dizinlerin içinde gördüğümüz dosya için potansiyel kaynaklar olduğunu biliyorum access_log. DocumentRootVe Directoriesben, dosya için bakmak istiyorum somefile. Bu konumlardan herhangi birinde değilse, daha sonra çıktıda Includebelirtilen dizine odaklanacağım .grep/etc/httpd/conf.d/*.conf
Bu dosyalar Apache'nin kullandığı ek yapılandırmalardır, bu nedenle grepbu dosyaları da aramak için bu adımları kullanarak tekrarlamanız gerekir .