Apache'nin hangi yapılandırma dosyasını kullandığını nasıl anlarım?


36

Mac OS X'te sanal ana bilgisayarlar kurmaya çalışıyorum. Httpd.conf dosyasını değiştiriyorum ve sunucuyu yeniden başlatıyorum, ancak çalışmasını sağlama konusunda hiç şansım olmadı. Ayrıca, httpd.conf'ta (Libraries / WebServer / Documents) belirtilen DocumentRoot'taki dosyaları sunmadığını, farklı bir dizinde (/ usr / local / apache2 / htdocs) bulunduğunu fark ettim. Httpd.conf'ta herhangi bir yerde bahsedilen bu klasörü görmüyorum. Ayrıca, PHP çalışır, ancak "LoadModule php5_module" satırı yorumlanır. Bu bana başka bir .conf dosyası kullandığını düşündürüyor. Hangi yapılandırmanın gerçekten yüklendiğini nasıl öğrenebilirim?

Güncelleme: Sadece yeniden başlattıktan sonra httpd.conf ve apache aynı davrandığını sildim, bu yüzden kesinlikle kullanmıyordu!

Yanıtlar:


45

Herhangi bir * nix uygulamasında, en kolay yöntem ikili bilgiyi sorgulamaktır. Httpd örneğinde, sürecin böyle bir şey olacağını hayal ediyorum:

$ whereis httpd
/usr/sbin/httpd
$ /usr/sbin/httpd -V
Server version: Apache/2.2.11 (Unix)
Server built:   Jun 17 2009 14:55:13
Server's Module Magic Number: 20051115:21
Server loaded:  APR 1.2.7, APR-Util 1.2.7
Compiled using: APR 1.2.7, APR-Util 1.2.7
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_FLOCK_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="/usr"
 -D SUEXEC_BIN="/usr/bin/suexec"
 -D DEFAULT_PIDLOG="/private/var/run/httpd.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_LOCKFILE="/private/var/run/accept.lock"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="/private/etc/apache2/mime.types"
 -D SERVER_CONFIG_FILE="/private/etc/apache2/httpd.conf"

Gördüğünüz gibi - benim OS X'im ikilinin, aksi belirtilmediği takdirde config dosyasını kullanacağını söylüyor: /private/etc/apache2/httpd.conf

Bu işe yaramazsa, belki de Christopher'ın bulma önerisi bir sonraki adımdır.


2
Eğer Server.app In ile Apache kullanıyorsanız bu durum size @msanford gelen cevap süreç listesini gerekir bu işe yaramaz serverfault.com/a/155114/187798 Server.app başladığını gösterir httpd benim kurulumumdan (Mavericks) gösterildiği gibi farklı bir yapılandırma dosyasına sahip/usr/sbin/httpd -D FOREGROUND -f /Library/Server/Web/Config/apache2/httpd_server_app.conf -D WEBSERVICE_ON
Jason S

macports aracılığıyla yüklenen apache kullanırken de çalışmaz - msandord tarafından cevap benim için çalışıyor!
pgee70


10

Deneyin

ps ax | grep httpd

ve (olabilir) gibi çıktı almalısınız

1633   ??  Ss     0:00.21 /usr/sbin/httpd -f /etc/httpd.conf

Ayrıca, sunucuyu tam olarak nasıl yeniden başlatıyorsunuz? Sadece merak durumda her nasılsa değil aslında yeniden okuma yapılandırma dosyası.


hm içinde -fbayrak yok
Claudiu

1
+1 Bu her durumda işe yarar tek cevap olduğu için, Apache'yi kendiniz konfigüre ediyorsanız veya Server.app üzerinden Apache kullanıyorsanız
Jason S

2

Bazı konfigürasyonlar Server uygulamasını kullandığından, demlendiğinden veya herhangi bir şekilde kullanıldığından ve biri FTW'ye bağlandığından:

$(ps ax -o comm | grep -m 1 httpd) -V | grep SERVER_CONFIG_FILE

Bu komut aşağıdakileri yapar:

  • Etkin bir httpd işlemi bulun
  • Çıktı yapılandırma bilgisi
  • Config dosyasını grep

Sierra ve El Capitan'da test edildi


$(Bu durumda istemi komut satırı değil) önemlidir. Eğer parens içindeki cümle, -Vbayraktan geçtiğimiz komuta dönüştürülürse Bunun dışında bırakılması şu sonuçlara neden olur: "beklenmeyen '-V' belirtecinin yakınındaki sözdizimi hatası".
Tom Auger

0

İlk önce, Apache'nin başlangıç ​​betiğinin hangisi olduğunu kontrol edin. MacOS için / Library / LaunchDaemons olmalıdır. Bu bir çalışma dizini veya benzer bir bilgi içerebilir.

Ayrıca çalışan sürecin dtruss ile hata ayıklayabilirsiniz. Çalışan işleme kullanarak bağlanabilirsiniz dtruss -p <pid>. Ardından, HUP yaparsanız, konfigürasyonunu nereden aldığını görmek için büyük olasılıkla çıktının üzerine düşünebilirsiniz. Alternatif olarak, doğrudan dtruss'u arayarak Apache'yi başlatın dtruss start_apache_command.

Her zaman httpd.conf ile sistem genelinde bir arama yapabilirsiniz find / -name httpd.conf.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.