कैसे एक अपाचे आभासी मेजबान विन्यास डिबग करने के लिए?


138

एक बार फिर, मुझे अपने अपाचे वर्चुअल होस्ट कॉन्फ़िगरेशन के साथ समस्या है। (मेरे विशिष्ट एक के बजाय डिफ़ॉल्ट कॉन्फ़िगरेशन का उपयोग किया जाता है)।

समस्या वास्तव में गलत धारणा नहीं है लेकिन इसे कैसे हल किया जाए।

क्या किसी को इस तरह की समस्या को जल्दी से हल करने के लिए अच्छी सलाह है?

कुछ और informations

डिफ़ॉल्ट conf फ़ाइल यह एक है:

NameVirtualHost *
<VirtualHost *>
        ServerAdmin webmaster@localhost

        DocumentRoot /var/www/
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog /var/log/apache2/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/log/apache2/access.log combined
        ServerSignature On

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>

और वर्चुअल होस्ट कॉन्फिगरेशन जो लागू नहीं होता है वह यह है:

<VirtualHost *:*>

ProxyPreserveHost On
ProxyPass / http://ip.ip.ip.ip:8088/
ProxyPassReverse / http://ip.ip.ip.ip:8088/
ServerName wiki.mydomain.com

</VirtualHost>

जवाबों:


198

सिंटेक्स जांच

सिंटैक्स त्रुटियों के लिए कॉन्फ़िगरेशन फ़ाइलों की जांच करने के लिए:

# Red Hat-based (Fedora, CentOS) and OSX
httpd -t

# Debian-based (Ubuntu)
apache2ctl -t

# MacOS
apachectl -t

वर्चुअल होस्ट की सूची बनाएं

सभी वर्चुअल होस्ट और उनके स्थानों को सूचीबद्ध करने के लिए:

# Red Hat-based (Fedora, CentOS) and OSX
httpd -S

# Debian-based (Ubuntu)
apache2ctl -S

# MacOS
apachectl -S

5
-S-t -D DUMP_VHOSTSतो उन दोनों के लिए एक समानार्थी शब्द समान हैं
aron.duby

2
विंडोज के लिए, (यदि आप xampp का उपयोग कर रहे हैं), आपके पास ये समान कमांड हैं: \ xampp \ apache \ bin
Jahmic

c:\\wamp\\bin\\apache\\apache2.4.9\\bin\\httpd.exe -S
वैंप के

2
यह बहुत उपयोगी है, धन्यवाद, लेकिन यह पर्याप्त नहीं है, मुझे एक vhost के साथ कुछ परेशानी हुई कि इसका उपयोग किया जाना चाहिए और ऐसा नहीं है, मुझे नहीं पता कि क्यों, मुझे इस बारे में लॉग प्राप्त करने की इच्छा है कि कैसे अपाचे ने vhost का चयन किया।
लोएनिक्स नौ

1
क्या अपाचे बनाने का कोई तरीका त्रुटि फ़ाइल या अन्य जगहों पर एक संदेश जोड़ने के लिए है जब एक आभासी या मुख्य होस्ट के लिए एक वास्तविक पहुंच आती है जो गतिशील जानकारी देता है कि किस मेजबान को चुना गया था? मैंने LoadModule log_debug_module मॉड्यूल / mod_log_debug.so ... LogMessage "Debug 1" हुक = सभी
डेविड स्पेक्टर

28

यहाँ मुझे लगता है कि कुछ मदद हो सकती है:

apachectl -t -D DUMP_VHOSTS

आपको सभी vhosts की एक सूची मिल जाएगी, आपको पता चल जाएगा कि कौन सा डिफ़ॉल्ट है और आप यह सुनिश्चित करेंगे कि आपका सिंटैक्स सही है (जैसा कि Apachectl configtest yojimbo87 द्वारा सुझाया गया है)।

आपको यह भी पता चल जाएगा कि प्रत्येक vhost कहां घोषित किया गया है। यह आसान हो सकता है अगर आपकी कॉन्फिग फाइल गड़बड़ है। ;)


24

यदि आप अपने वर्चुअल होस्ट कॉन्फ़िगरेशन को डीबग करना चाह रहे हैं, तो आपको अपाचे -S कमांड लाइन स्विच उपयोगी मिल सकता है। अर्थात्, निम्न कमांड टाइप करें:

httpd -S

यह कमांड अपाचे को कॉन्फ़िगरेशन फ़ाइल को पार्स करने का विवरण डंप करेगा। IP पते और सर्वर नामों की सावधानीपूर्वक परीक्षा कॉन्फ़िगरेशन गलतियों को उजागर करने में मदद कर सकती है। ( अन्य कमांड लाइन विकल्पों के लिए httpd प्रोग्राम के लिए डॉक्स देखें )।


9
Apache2 में यह हैapache2ctl -S
artfulrobot

1
या वैकल्पिक रूप सेAPACHE_RUN_USER=www-data APACHE_RUN_GROUP=www-data /usr/sbin/apache2 -S
rleir

12

पहले सिंटैक्स त्रुटियों के लिए कॉन्फ़िगर फ़ाइलों की जाँच करें apachectl configtestऔर फिर अपाचे त्रुटि लॉग में देखें


मेरे पास कोई सिंटैक्स त्रुटि नहीं है क्योंकि मेरा सर्वर किसी भी समस्या के बिना कॉन्फ़िगरेशन को रीबूट और पुनः लोड करता है। मुझे नहीं पता कि मैं किस लॉग में अपने कॉन्फ़िगरेशन के बारे में विवरण पा सकता हूं।
GaetanZ

त्रुटि लॉग आमतौर पर '/var/log/apache2/error.log' फ़ाइल में स्थित होते हैं।
योजिम्बो87

आप "apache2ctl -t" का भी उपयोग कर सकते हैं।
लैरी सिल्वरमैन

11

मेरे पास एक नया वर्चुअलहॉस्ट कॉन्फ़िगरेशन फ़ाइल थी जो apachectl -Sकमांड का उपयोग करते समय नहीं दिखाई दे रही थी। बहुत सिर खुजाने के बाद मैंने महसूस किया कि मेरी फ़ाइल में ".conf" प्रत्यय नहीं था। एक बार जब मैंने उस प्रत्यय के साथ फ़ाइल का नाम बदला तो मेरा Vhost दिखाना और काम करना शुरू कर दिया!


8

मैं हाल ही में एक VirtualHost के साथ कुछ मुद्दे थे। मैं a2ensiteएक होस्ट को सक्षम करने के लिए उपयोग करता था, लेकिन फिर से शुरू करने से पहले (जो सर्वर को विफल होने पर मार देगा) मैं भागा

apache2ctl -S

जो आपको अपने वर्चुअल होस्ट के साथ क्या हो रहा है, इसके बारे में कुछ जानकारी देता है। यह सही नहीं है, लेकिन यह मदद करता है।


3

मुझे अपनी गलती मिली, मैंने लॉग फ़ाइल का नाम नहीं जोड़ा: ErrorLog / var / log / apache2
और यह पथ: निर्देशिका "/ usr / share / doc /" में वेबसाइट स्रोत शामिल नहीं थे।

जब मैंने इन दोनों को बदला, तब सभी ने काम किया। दिलचस्प है, अपाचे ने कोई त्रुटि जारी नहीं की, बस मेरे मैक ओएस सिएरा पर चुपचाप मेरी वेबसाइट नहीं खोली।


अच्छा जवाब, मुझे इसी तरह का मुद्दा खोजने में मदद करें। सभी सिंटैक्स और -S vhosts सही हैं, फिर भी गलत साइट पर काम किया जाता है। यह पता चला: 80 और: 443 में एक ही एक्सेस लॉग फ़ाइल है, जो चीजों को भ्रमित करने के लिए लगती थी। प्रत्येक पोर्ट के लिए अलग फाइल, और साइट्स ने काम करना शुरू कर दिया।
डेविड मैकनील
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.