क्या हुआ कि Apache2.4 में कॉन्फ़िगरेशन फ़ाइलों का सिंटैक्स बदल गया है।
स्रोत: १३.१० में अपग्रेड होने के बाद मेरे साथ भी ऐसा हुआ है
conf.d फ़ाइलें
सभी फाइलें जो अंदर थीं, /etc/apache2/conf.d
उन्हें स्थानांतरित कर दिया जाना चाहिए /etc/apache2/conf-available
।
वे अब उसी तरह काम करते हैं sites
और mods
काम करते हैं। बस अपनी गोपनीय फ़ाइलों को conf-available
फ़ोल्डर में रखें और जिसे आप चाहते हैं उसे सक्षम करेंa2enconf <config-file-name>
।
उदाहरण:
मेरे पास एक फाइल conf.d/httpd.conf
थी जिसमें ServerName निर्देश था।
उस काम को करने के लिए, मुझे इसे conf-available
निर्देशिका में ले जाना पड़ा और इसे मैन्युअल रूप से सक्षम करना पड़ा ।
sudo mv /etc/apache2/conf.d/httpd.conf /etc/apache2/conf-available/httpd.conf
sudo a2enconf httpd
साइटों की फाइलें
पहले, फ़ाइलों में /etc/apache2/sites-available
कोई एक्सटेंशन नहीं था। उदाहरण के लिए /etc/apache2/sites-available/default
। अब एक .conf
विस्तार की आवश्यकता है।
उदाहरण:
यदि आपके पास /etc/apache2/sites-available/some-site
13.04 में है, तो आप इसका उपयोग कर सकते हैं sudo a2ensite some-site
। अब यह आपको एक त्रुटि कहेगा
त्रुटि: साइट कुछ साइट मौजूद नहीं है!
इसे ठीक करने के लिए, .conf
अपनी सभी कॉन्फिग फाइलों में संलग्न करें sites-available
। आप ऐसा ही कर सकते हैं sites-enabled
, या आप सभी फ़ाइलों को हटा सकते हैं और उन्हें प्रत्येक मैन्युअल रूप से सक्षम कर सकते हैं।
मैं उन्हें मैन्युअल रूप से करने की सलाह देता हूं क्योंकि आपको प्रत्येक VHost (अगला चरण) को ठीक करने की आवश्यकता है।
sudo find /etc/apache2/sites-available/ ! -iname '*.conf' -type f -exec mv '{}' '{}'.conf \;
यदि आपने उन्हें मैन्युअल रूप से करने का निर्णय लिया है:
sudo rm /etc/apache2/sites-enabled/*
sudo a2ensite your-site-name
वर्चुअल होस्ट निर्देश:
अनुमति / इनकार बनाम आवश्यकता
यदि आपके पास निम्नलिखित थे:
<Directory /path/to/your/site/>
order allow,deny
allow from all
</Directory>
यह बनना चाहिए:
<Directory /path/to/your/site/>
Require all granted
</Directory>
अधिक जानकारी के लिए, स्टैक ओवरफ्लो पर एक जवाब पर डेवेरजैंडम द्वारा टिप्पणियों की जांच करें ।
सीधे शब्दों में कहें, अगर आपने अपाचे 2.4 में अपग्रेड किया है और अपाचे 2 httpd.conf
का पुराना रखा है , तो निर्देश को ठीक काम करते रहना चाहिए। यदि आपने अपने httpd.conf
(जो मैं सुझाव देता हूं) को अपग्रेड किया है , तो आपको 403 त्रुटियां मिलेंगी जब तक कि आप उनके समकक्ष Order
/ Allow
/ Deny
निर्देशों को नहीं बदलते Require
।
निर्देशिका विकल्प
आप निर्देशिका विकल्प, नोट था कि वे सभी के साथ एक prepended किया जाना है कि +
या -
या बिल्कुल भी उनमें से कोई भी। दोनों के मिश्रण की अनुमति नहीं है:
उदाहरण:
इसकी अनुमति है:
<Directory /path/to/your/site/>
Options +Indexes +FollowSymLinks -MultiViews
</Directory>
तो यह है (ध्यान दें कि ये उदाहरण दोनों एक ही काम नहीं करते हैं, पिछले एक MultiViews
विकल्प को निष्क्रिय कर देता है , अगले वाला नहीं करता है):
<Directory /path/to/your/site/>
Options Indexes FollowSymLinks MultiViews
</Directory>
यह अब अनुमति नहीं है:
<Directory /path/to/your/site/>
Options Indexes FollowSymLinks -MultiViews
</Directory>
अंतिम विन्यास विकल्प एक वाक्यविन्यास त्रुटि कहेगा:
या तो सभी विकल्प + या - से शुरू होने चाहिए, या कोई विकल्प नहीं हो सकता है।
फिर से शुरू करें
एक बार सब कुछ हो जाने के बाद, आपको परिवर्तनों को प्रभावी करने के लिए अपने अपाचे सर्वर को पुनः आरंभ करने की आवश्यकता है:
sudo apache2ctl restart
आप आधिकारिक दस्तावेज पर 2.2 से 2.4 तक विस्तृत उन्नयन गाइड पा सकते हैं ।
httpd.conf
फ़ाइल याconf.d
निर्देशिका नहीं है। लेकिन एकapache2.conf
फाइल है। मैंने इसेconf-available
निर्देशिका में ले जाने की कोशिश की , और जब मैंने apache2 को पुनः आरंभ किया तो निम्न त्रुटि हुई: apache2: कॉन्फ़िगरेशन फ़ाइल /etc/apache2/apache2.conf नहीं खोल सका: ऐसी कोई फ़ाइल या निर्देशिका नहीं - क्या कारण हो सकता है?