Red Hat Enterprise Linux, Arch, Scientific Linux, Debian Server, Ubuntu Server या किसी अन्य वितरण पर apache2 सेवा इंस्टॉल करते समय जो इसका समर्थन करते हैं, आप पा सकते हैं कि आपको mod_authz_host मॉड्यूल के बारे में एक त्रुटि मिलती है जो सेवा के निष्पादन को रोकती है। आपको यह त्रुटि किसी भी समय apache2 सेवा को पुनरारंभ करने पर एक समस्या होने की संभावना है। यह त्रुटि आमतौर पर फ़ाइल की पहली पंक्ति के बारे में एक सिंटैक्स चेतावनी के रूप में आती है, लेकिन आप सैद्धांतिक रूप से कुछ अलग त्रुटि प्राप्त कर सकते हैं।
इस बात की परवाह किए बिना कि आपको किस लाइन में परेशानी हो सकती है, फिक्स का mod_authz_host के इंस्टॉल न होने या यहां तक कि RAM में लोड न होने से बहुत कम लेना-देना है। वास्तव में, यदि आपको यह त्रुटि मिल रही है तो इसका मतलब है कि apache2 सर्वर सेवा मॉड्यूल को सही ढंग से लोड कर रही है। समस्या केवल इस तथ्य से संबंधित है कि एक निर्देश कहीं गलत जगह पर है, और कोड को पुनर्व्यवस्थित करने से आपकी समस्या काफी जल्दी ठीक हो जाएगी। कृपया ध्यान दें कि आप कभी-कभी apache2 में mod_authz_host इंस्टॉल करने के निर्देश देखेंगे, जो इस चर्चा के लिए अप्रासंगिक है। आपकी त्रुटियां किसी विशिष्ट पैकेज की कमी से नहीं आती हैं न ही वे किसी प्रकार की अपूर्ण डिपेंडेंसी से आती हैं। जिस तरह से डेवलपर्स ने इन त्रुटियों को वाक्यांशित करने के लिए चुना है, वह इन आम गलतफहमियों की ओर ले जाता है।
restrict.conf मॉड्यूल निर्देशों को सही करना
चर्चा के लिए, हम अपने उदाहरणों के लिए distrowatch.com पर लिनक्स वितरण विश्वकोश का उपयोग करेंगे। आधिकारिक apache2 दस्तावेज़ dev.example.com को एक उदाहरण के रूप में उपयोग करता है, और किसी भी मामले में, आप इनमें से किसी भी पते का उपयोग नहीं करना चाहेंगे।
एक टेक्स्ट एडिटर के साथ फ़ाइल खोलें। चूंकि यह एक संरक्षित डायरेक्टरी में है, आपको रूट एक्सेस की आवश्यकता होगी। हमने उपयोग किया, लेकिन आप vi या कोई अन्य टेक्स्ट एडिटर भी उपयोग कर सकते हैं जिसे आप पसंद करते हैं। आपको कंसोल एडिटर का उपयोग करने की भी आवश्यकता नहीं है, लेकिन यदि उचित हो तो sudo के बजाय gksu का उपयोग करना सुनिश्चित करें।
एक बार जब आप फ़ाइल लोड कर लेते हैं, तो किसी ऐसी चीज़ पर ध्यान दें जो पढ़ती है, उदाहरण के लिए:
Order deny,allow
Deny from all
Allow from distrowatch.com
यह टेक्स्ट केवल <Location /> </Location> ब्लॉक के अंदर मौजूद होना चाहिए। पहले टैग में स्पेस पर ध्यान दें। यदि आपके पास वह टेक्स्ट लाइन किसी भी ब्लॉक के बाहर तैर रही है, तो या तो उसके चारों ओर टैग जोड़ें या उसे स्थानांतरित करें ताकि वह इस तरह पढ़े:
<Location />
Order deny,allow
Deny from all
Allow from distrowatch.com
</Location>
याद रखें कि आपको distrowatch.com को उस वास्तविक URL से बदलना होगा जिसके साथ आप काम कर रहे हैं। यदि आपको कोई लाइन मिलती है जो सीधे dev.example.com को संदर्भित करती है, तो आपने या तो उन्हें सीधे उदाहरण कोड से कॉपी किया है या वे डिफ़ॉल्ट रूप से जोड़े गए हैं। example.com डोमेन केवल तकनीकी दस्तावेजों में चित्रण के लिए मौजूद है और कोई वास्तविक उद्देश्य नहीं रखता है। httpd.apache.org/docs/2.2/howto/access.html पर आधिकारिक दस्तावेज़ वास्तव में उन्हें संदर्भित करता है। जब आप नया टेक्स्ट जोड़ते हैं तो आप शायद इन्हें सुरक्षित रूप से हटा सकते हैं।
यदि आपको कभी भी अपनी restrict.conf फ़ाइल में एक डायरेक्टरी शामिल करने की आवश्यकता होती है, तो आप <Location /> </Location> टैग को <Directory /> <Directory> टैग से बदल सकते हैं, लेकिन आपको एक बार फिर पहले टैग में स्पेस बनाए रखना सुनिश्चित करना होगा। दस्तावेज़ को सेव करना सुनिश्चित करें और फिर apache2 सेवा को पुनरारंभ करने से पहले इसे बंद करें। आपको यहां से आगे कोई समस्या नहीं होनी चाहिए।
यह वही है जो apache सर्वर का मतलब है जब यह एक त्रुटि जैसी कुछ लौटाता है:
वास्तविक त्रुटि में ऑक्टोथोर्प के स्थान पर एक लाइन नंबर होगा, लेकिन यह इंगित कर रहा है कि निर्देश उक्त टैग के अंदर सुरक्षित रूप से संलग्न नहीं हैं। जब आप स्क्रिप्ट को डीबग कर रहे हों तो आप सीधे त्रुटि में दी गई लाइन पर नेविगेट करना चाह सकते हैं ताकि आप जांच सकें कि इसके साथ क्या गलत है। जबकि प्रश्न में त्रुटि आपको बताएगी कि Apache त्रुटि लॉग में अधिक जानकारी हो सकती है, यह शायद केवल यहां चर्चा की गई समान अवधारणाओं को सुदृढ़ करेगा।
भविष्य के सिंटैक्स त्रुटियों को इसी तरह ठीक किया जा सकता है। आप पा सकते हैं कि उस एक को ठीक करने के बाद, apache2 सेवा एक और त्रुटि उगल देती है। यह सामान्य है, जितना अजीब लग सकता है क्योंकि यह केवल पहली लाइन तक कोड निष्पादित करता है जहां उसे कोई समस्या मिलती है। यदि लाइन में आगे समस्याएं थीं, तो यह कभी भी उन तक नहीं पहुंच पाता। यदि आपके पास ऐसा कोई मुद्दा है, तो फ़ाइल संपादित करते समय लाइन नंबर पर ध्यान दें। यदि आप फ़ाइल संपादित करने के लिए nano का उपयोग कर रहे हैं, तो आप हमेशा Ctrl कुंजी दबाए रख सकते हैं और C कुंजी दबाकर पता लगा सकते हैं कि आपका कर्सर वर्तमान में किस लाइन पर है। यह डीबगिंग प्रक्रिया को बहुत आसान बना देगा।
आप पा सकते हैं कि आपके पास कई ब्लॉक इस तरह से तैर रहे हैं जो किसी चीज़ से जुड़े नहीं हैं। इनमें से प्रत्येक को उन पर टैग की आवश्यकता है। जब भी आप पाते हैं कि आपके पास एक ही URL की कई प्रतियां हैं जिनमें बिल्कुल समान निर्देश हैं, तो अतिरिक्त ब्लॉक को हटा दें क्योंकि ये डुप्लिकेट संभावित रूप से समस्याएं पैदा कर सकते हैं। आपको आमतौर पर किसी विशिष्ट URL की केवल एक प्रति की आवश्यकता होती है, क्योंकि आपको apache2 सर्वर को एक के बारे में अतिरिक्त निर्देश नहीं देने चाहिए क्योंकि वे अंततः एक दूसरे का विरोध कर सकते हैं।