मैं कैसे बता सकता हूं कि अपाचे फ़ाइल कौन सी कॉन्फ़िगर कर रहा है?


36

मैं मैक ओएस एक्स पर आभासी मेजबान स्थापित करने की कोशिश कर रहा हूं। मैं httpd.conf को संशोधित कर रहा हूं और सर्वर को फिर से शुरू कर रहा हूं, लेकिन इसे काम करने में कोई भाग्य नहीं है। इसके अलावा, मुझे लगता है कि यह httpd.conf (पुस्तकालयों / वेबसर्वर / दस्तावेज़) में उल्लिखित डॉक्यूमेंटरूट में फाइलें नहीं परोस रहा है, लेकिन एक अलग निर्देशिका (/ usr / स्थानीय / apache2 / htdocs) में है। मुझे यह फ़ोल्डर httpd.conf में कहीं भी उल्लिखित नहीं दिख रहा है। इसके अलावा, PHP काम करता है, लेकिन "LoadModule php5_module" लाइन पर टिप्पणी की जाती है। यह मुझे लगता है कि यह एक और .conf फ़ाइल का उपयोग कर रहा है। मैं यह कैसे पता लगा सकता हूं कि कौन सा कॉन्फिगर वास्तव में लोड हो रहा है?

अद्यतन: मैंने अभी हटा दिया है कि httpd.conf और अपाचे को पुनः आरंभ करने के बाद एक ही व्यवहार करता है, इसलिए यह निश्चित रूप से इसका उपयोग नहीं कर रहा था!

जवाबों:


45

किसी भी * निक्स एप्लिकेशन के साथ, सबसे आसान तरीका बाइनरी को क्वेरी करना है। Httpd के मामले में, मुझे लगता है कि प्रक्रिया कुछ इस तरह होगी:

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

जैसा कि आप देख सकते हैं - मेरा ओएस एक्स बाइनरी कहता है, यदि अन्यथा निर्देशित नहीं किया गया है, तो कॉन्फ़िगरेशन फ़ाइल का उपयोग करेगा: /pStreet/etc/apache2/httpd.conf

अगर वह मदद नहीं करता है, शायद के क्रिस्टोफर के सुझाव खोजने अगला चरण है।


2
यदि आप सर्वर के माध्यम से अपाचे का उपयोग कर रहे हैं तो यह काम नहीं करेगा। उस स्थिति में आपको @msanford serverfault.com/a/155114/187798 से उत्तर में प्रक्रिया सूची की आवश्यकता होगी जो यह दर्शाता है कि Server.app httpd शुरू करता है एक अलग कॉन्फ़िगरेशन फ़ाइल के साथ जैसा कि मेरी स्थापना (मेवरिक्स) से यहां दिखाया गया है/usr/sbin/httpd -D FOREGROUND -f /Library/Server/Web/Config/apache2/httpd_server_app.conf -D WEBSERVICE_ON
जेसन एस

Macports के माध्यम से स्थापित अपाचे का उपयोग करते समय भी काम नहीं करता है - मेरे लिए msandord द्वारा जवाब काम करता है!
pgee70

15

इस बारे में एक और सर्वरफॉल्ट सवाल है । यदि आप एक डेबियन आधारित सर्वर का उपयोग कर रहे हैं, तो आप apache2ctlयह निर्धारित करने के लिए उपयोग कर सकते हैं कि कौन सी कॉन्फ़िग फ़ाइल का उपयोग किया जा रहा है:

apache2ctl -V

इस पर अधिक:

कैसे पता करें कि कौन सा httpd.conf अपाचे रनटाइम में उपयोग कर रहा है


10

प्रयत्न

ps ax | grep httpd

और आपको (जैसे) आउटपुट प्राप्त करना चाहिए

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

इसके अतिरिक्त, आप सर्वर को कैसे पुनः आरंभ कर रहे हैं? यदि आप किसी भी तरह से वास्तव में कॉन्फ़िगर फ़ाइल को दोबारा नहीं पढ़ रहे हैं तो उत्सुक हैं ।


हम्म में यह -fझंडा नहीं है
क्लाउडी

1
+1 यह एकमात्र ऐसा उत्तर है जो सभी मामलों के लिए काम करता है, यदि आप अपाचे को स्वयं कॉन्फ़िगर कर रहे हैं या यदि आप सर्वर के माध्यम से अपाचे का उपयोग कर रहे हैं
जेसन एस

2

क्योंकि कुछ कॉन्फ़िगरेशन सर्वर ऐप, ब्रू या जो भी हो, और एक लाइनर FTW का उपयोग करते हैं:

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

यह आदेश निम्नलिखित है:

  • एक सक्रिय httpd प्रक्रिया खोजें
  • आउटपुट कॉन्फ़िगरेशन जानकारी
  • कॉन्फिग फाइल को ग्रिप करें

सिएरा और एल Capitan पर परीक्षण किया गया


यह $महत्वपूर्ण है (यह इस मामले में कमांड लाइन प्रॉम्प्ट नहीं है)। यदि स्टेटमेंट को स्टेट्स में एक कमांड में परिवर्तित करता है, जिससे हम -Vध्वज को पास करते हैं । इसे छोड़ने के परिणामस्वरूप: "अप्रत्याशित टोकन के पास सिंटैक्स त्रुटि` -V '। "
टॉम ऑस्टर

0

सबसे पहले, देखें कि अपाचे के लिए स्टार्टअप स्क्रिप्ट कौन सी है। MacOS के लिए, यह पुस्तकालय / LaunchDaemons होना चाहिए। इसमें एक कार्यशील निर्देशिका, या समान जानकारी शामिल हो सकती है।

आप चल रही प्रक्रिया को भी ड्रॉटस से डीबग कर सकते हैं। आप का उपयोग कर चल रहे प्रक्रिया से कनेक्ट कर सकते हैं dtruss -p <pid>। फिर, यदि आप इसे एचयूपी करते हैं, तो आप शायद आउटपुट पर यह देखने के लिए कि यह कहाँ से इसके कॉन्फिगर को हथिया रहा है, को देख सकता है। वैकल्पिक रूप से, बस सीधे Dtruss के साथ कॉल करके Apache शुरू करें dtruss start_apache_command

आप हमेशा httpd.conf के साथ सिस्टम-वाइड खोज कर सकते हैं find / -name httpd.conf

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.