मैं पूरा httpd विन्यास कैसे देख सकता हूं?


83

मैं यह पता लगाने की कोशिश कर रहा हूं कि httpd सेटअप का पूर्ण पूर्ण कॉन्फ़िगरेशन क्या है।

सभी कॉन्फ़िगरेशन फ़ाइल अलग-अलग फ़ाइलों (/etc/httpd/conf.d, httpd.conf, विभिन्न मॉड कॉन्फ़िगरेशन) में बिखरे हुए हैं

क्या अंतिम httpd कॉन्फ़िगरेशन को सूचीबद्ध करने का कोई तरीका है?
एक फ़ाइल में पूरे रनिंग सेटअप कॉन्फ़िगरेशन की तरह?


12
apachectl -Sरनिंग apachectl -Mमॉड्यूल्स के लिए , लोड किए गए मॉड्यूल को दिखाने के लिए
arco444

7
सिवाय इसके कि apachectl -Sआप न तो "पूर्ण पूर्ण कॉन्फ़िगरेशन" और न ही "एकल फ़ाइल में संपूर्ण रनिंग सेटअप कॉन्फ़िगरेशन" दें।
फ्रेडरिक नॉर्ड


1
स्टैक ओवरफ्लो प्रोग्रामिंग और विकास प्रश्नों के लिए एक साइट है। यह प्रश्न ऑफ़-टॉपिक प्रतीत होता है क्योंकि यह प्रोग्रामिंग या विकास के बारे में नहीं है। देखें किन विषयों मैं यहाँ के बारे में पूछ सकते हैं सहायता केंद्र में। शायद वेब एप्लिकेशन स्टैक एक्सचेंज , वेबमास्टर स्टैक एक्सचेंज या यूनिक्स और लिनक्स स्टैक एक्सचेंज पूछने के लिए एक बेहतर स्थान होगा।
jww

@ मुझे शर्म आ रही है कि यह आपका पहला "संबंधित" लिंक कैसा है। मुझे यह भी बहुत मनोरंजक लगता है कि आपने उन सभी लिंक्स पर एक ही टिप्पणी को कॉपी / पेस्ट किया है, जिन्हें आपने संदर्भित किया है। फनी :)
हिकॉरी 420

जवाबों:


50

जैसा कि arco444 द्वारा नोट किया गया है, आप apachectl -Sवर्तमान में कॉन्फ़िगर किए जा रहे VirtualHosts का एक अवलोकन प्रदर्शित करने के लिए उपयोग कर सकते हैं , और apachectl -Mसभी वर्तमान में लोड किए गए मॉड्यूल को प्रदर्शित करने के लिए - मैं सभी कॉन्फ़िगर किए गए पार्स और (जो आदेश) के क्रिया आउटपुट को प्रदर्शित करने के लिए एक उपकरण के बारे में नहीं जानता हूं httpd के लॉन्च के समय इनकी पार्स की गई थी, लेकिन मैं आपको सलाह दूंगा कि आप http फाइल को सामान्य संरचना से परिचित करें :

अपने प्रश्न पर विशेष रूप से ध्यान दें: 'मुख्य' अपाचे कॉन्फिगर फाइल /etc/httpd/conf/httpd.conf(जो कि आप अपने पोस्ट टैग के आधार पर उपयोग कर रहे हैं, जो CentOS 6 में शामिल रिपॉज से एक डिफ़ॉल्ट httpd इंस्टॉलेशन पर लाइन 221 के क्षेत्र में स्थित है ) और 'अनुपूरक' विन्यास फाइल में स्थित हैं /etc/httpd/conf.dऔर मुख्य विन्यास फाइल में स्पष्ट रूप से शामिल किए जाने की आवश्यकता है। उदाहरण के लिए, यदि आप httpd.conf' Include' ' ' शब्द के लिए फाइल सर्च करते हैं, तो आपको वह लाइन मिल जाएगी, Include conf.d/*.confजिसमें .confसबडिरेक्ट में एक्सटेंशन की सभी फाइलें शामिल हैं।conf.d - वर्णमाला क्रम में, इसलिए आप स्वयं को कॉन्फिगर करना चाहते हैं। कुछ बिंदु यदि संभव हो तो।

एक तरफ के रूप में, यदि आप एक शेल आधारित पाठ संपादक का उपयोग कर रहे हैं जैसे कि विम, मैं सुझाव देता हूं कि आप लाइन नंबरिंग और सिंटैक्स को डिफ़ॉल्ट रूप से हाइलाइटिंग सक्षम करें ताकि इस तरह की लम्बी कॉन्फिग फाइल्स अपने आप को पार्स और नेविगेट करने में थोड़ा आसान हो - विम के मामले में , आप ऐसा करने के लिए अपने घर निर्देशिका में एक फ़ाइल बनाकर .vimrc(या किसी मौजूदा के लिए संलग्न) और निम्नलिखित पंक्तियों को जोड़ सकते हैं:

set nu
syntax on

हम CentOS पर अपाचे 2.2 का उपयोग कर रहे हैं। हालाँकि, अपाचेक्टल उपलब्ध नहीं है।
user674669

17

जैसा कि अपाचे HTTP सर्वर डॉक्यूमेंटेशन में वर्णित है

यदि कॉन्फ़िगर डिफाइन -DDUMP_CONFIG सेट है, तो mod_info सर्वर स्टार्टअप के दौरान पूर्व-पार्स किए गए कॉन्फ़िगरेशन को स्टडआउट करने के लिए डंप करेगा।

httpd -DDUMP_CONFIG -k start

DUMP_CONFIGआवश्यकता है mod_infoसक्षम:a2enmod info :!

उबंटू में निम्नलिखित करें

sudo apache2ctl -DDUMP_CONFIG

यदि आप लाइन नंबर करना चाहते हैं

sudo apache2ctl -DDUMP_CONFIG | grep -vE "^[ ]*#[ ]*[0-9]+:$"

या किसी फ़ाइल पर रीडायरेक्ट

sudo apache2ctl -DDUMP_CONFIG | grep -vE "^[ ]*#[ ]*[0-9]+:$" > /path/to/dump.conf

ज्ञात सीमाएँ

mod_info मूल कॉन्फ़िगरेशन फ़ाइल को पढ़ने के बजाय पार्स कॉन्फ़िगरेशन को पढ़कर अपनी जानकारी प्रदान करता है। पार्स कॉन्फ़िगरेशन ट्री बनाने के तरीके के परिणामस्वरूप कुछ सीमाएँ हैं:

  • निर्देश जो कि पार्स किए गए कॉन्फ़िगरेशन में संग्रहीत किए जाने के बजाय तुरंत निष्पादित किए जाते हैं, सूचीबद्ध नहीं हैं। इनमें ServerRoot, LoadModule और LoadFile शामिल हैं।
  • निर्देश जो कॉन्फ़िगरेशन फ़ाइल को नियंत्रित करते हैं, जैसे कि शामिल करें, और सूचीबद्ध नहीं हैं, लेकिन शामिल कॉन्फ़िगरेशन निर्देश हैं।
  • टिप्पणियाँ सूचीबद्ध नहीं हैं। (इसे एक विशेषता माना जा सकता है।)
  • .Htaccess फ़ाइलों से कॉन्फ़िगरेशन निर्देश सूचीबद्ध नहीं हैं (क्योंकि वे स्थायी सर्वर कॉन्फ़िगरेशन का हिस्सा नहीं हैं)।
  • कंटेनर निर्देश जैसे कि सामान्य रूप से सूचीबद्ध हैं, लेकिन mod_info समापन के लिए लाइन नंबर का पता नहीं लगा सकता है।
  • तीसरे पक्ष के मॉड्यूल जैसे mod_perl द्वारा उत्पन्न निर्देशों को सूचीबद्ध नहीं किया जा सकता है।

15

कृपया उस उद्देश्य के लिए mod_info का उपयोग करें: http://httpd.apache.org/docs/2.2/mod/mod_info.html

केवल नीचे की ओर यह है कि यदि आपको हटाए गए कॉन्फ़िगरेशन को पुनर्प्राप्त करने के लिए इसकी आवश्यकता है और मॉड्यूल को पहले से लोड नहीं किया है तो यह आपकी बहुत मदद नहीं करेगा


2

मेरे पास एक स्क्रिप्ट है (अफसोस, पर्ल में; मुझे माफ कर दो, इसकी पुरानी) जो कॉन्फ़िगरेशन फ़ाइलों को समतल करती है, टिप्पणियों को हटाती है (डिफ़ॉल्ट रूप से) और # FILEटिप्पणियों को शामिल करती है ताकि आप यह पता लगा सकें कि किस फ़ाइल में वह चीज़ है जिसे आप खोज रहे हैं।

मैंने इसे अपाचे httpd के साथ लिखा है, हालाँकि इसका ओरेकल ओएचएस के साथ भी उपयोग देखा गया है

https://github.com/cameronkerrnz/scriptorium/blob/master/httpd-dump-config

विशेष रूप से SSH और diff / meld / etc के साथ विभिन्न मशीनों पर कॉन्फ़िगरेशन की तुलना करने के लिए उपयोगी है।

उदाहरण:

httpd-dump-config | grep -i -e '# FILE:' -e servername -e serveralias
# FILE: /etc/httpd/conf/maintenance-curtain.conf
# FILE: /etc/httpd/conf.d/proxy.conf
# FILE: /etc/httpd/otago/secure-www.alias.conf
# FILE: /etc/httpd/conf.d/proxy.conf
    ServerName www.otago.ac.nz
    ServerAlias otago.ac.nz

यहाँ अंतर (CLI) और मेल्ड (GUI) का उपयोग करके एक उदाहरण दिया गया है:

diff -Bb <(httpd-dump-config) <(ssh root@revproxy2 httpd-dump-config)

meld <(httpd-dump-config) <(ssh root@revproxy2 httpd-dump-config) &

मैंने कई वर्षों में इसका उपयोग किया है जब कई फाइलों पर फैले हुए विन्यास की हजारों पंक्तियों के साथ एक कॉन्फ़िगरेशन नेविगेट करना।


0

जब मुझे बहुत से अपाचे कॉन्फ़िगरेशन को बनाए रखना था, तो मैंने खुद को एक स्क्रिप्ट से लैस किया, जो आपने पूछा था। इसने मेरी बहुत मदद की।

awk -v pc=$APCALL '

  NR == 1 {
    if (pf != "") {
      print "### End of "  pf  " ###"
    }
    print "### "  FILENAME  " ###"
    pf = FILENAME
  }
  { if (pc || ( $1 !~ "^#" && $0 != "" ) ) {
       printf "%5d %s\n", NR, $0
    }
  }
  $1 ~ /^Include(Optional)?$/ {
    $1 = ""
    system("for ACF in " $0 "; do apache_config.sh $ACF; done" )
  }
  END {
      print "### End of "  pf  " ###"
  }
' "$@"

आप एपीसीएलएएल पर्यावरण चर सेट कर सकते हैं यदि आप टिप्पणियों और खाली लाइनों को देखना चाहते हैं, जो मैंने ज्यादातर नहीं किया। कैविएट: इसे सर्वररूट से निष्पादित किया जाना है।

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