যা ঘটেছিল তা হল অ্যাপাচি ২.৪-এ কনফিগারেশন ফাইলগুলির সিনট্যাক্সটি পরিবর্তিত হয়েছে।
উত্স: আমি 13.10 এ আপগ্রেড করার পরে আমার সাথে এটিও হয়েছিল
conf.d ফাইল
যে সমস্ত ফাইল ছিল /etc/apache2/conf.d
সেগুলিতে সরানো উচিত /etc/apache2/conf-available
।
তারা এখন একইভাবে কাজ করে sites
এবং mods
কাজ করে। আপনার কনফারেন্স ফাইলগুলি কেবল conf-available
ফোল্ডারে রেখে দিন এবং আপনার পছন্দসই একটি সক্ষম করুন a2enconf <config-file-name>
।
উদাহরণ:
আমার কাছে একটি ফাইল conf.d/httpd.conf
ছিল যাতে সার্ভারনামের নির্দেশিকা ছিল।
সেই কাজটি করার জন্য, আমাকে এটিকে 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
কাজ করতে পারেন বা আপনি সমস্ত ফাইল মুছতে পারেন এবং এগুলি প্রতিটি নিজেই পুনরায় সক্ষম করতে পারেন।
আমি তাদের ম্যানুয়ালি করার পরামর্শ দিচ্ছি যেহেতু আপনাকে সম্ভবত প্রতিটি ভিহস্ট (পরবর্তী পদক্ষেপ) ঠিক করতে হবে।
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>
আরো তথ্যের জন্য, চেক মন্তব্য দ্বারা DaveRandom একটি অন উত্তর স্ট্যাক ওভারফ্লো উপর।
সোজা কথায়, যদি আপনি অ্যাপাচি ২.৪ এ আপগ্রেড হয়ে থাকেন এবং অ্যাপাচি ২.২ এর পুরানো রাখেন httpd.conf
, নির্দেশকে সঠিকভাবে কাজ করা উচিত। আপনি যদি আপনার httpd.conf
(যেটি আমি প্রস্তাব দিই) আপগ্রেড করেছি, আপনি 403 ত্রুটি পাবেন যতক্ষণ না আপনি Order
/ Allow
/ Deny
দিকনির্দেশকে তাদের সমতুল্য হিসাবে পরিবর্তন করেন Require
।
ডিরেক্টরি বিকল্প
যদি আপনার কাছে ডিরেক্টরি বিকল্প থাকে তবে মনে রাখবেন যে সেগুলি মোটামুটি একটি +
বা -
তাদের কোনওটির সাথেই চাপানো উচিত। উভয়ের মিশ্রণ অনুমোদিত নয়:
উদাহরণ:
এটি অনুমোদিত:
<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
অফিসিয়াল ডকুমেন্টেশনে আপনি ২.২ থেকে ২.৪ পর্যন্ত একটি বিশদ আপগ্রেড গাইড পেতে পারেন ।
httpd.conf
ফাইল বাconf.d
ডিরেক্টরি নেই। তবে একটিapache2.conf
ফাইল আছে। আমি এটিকেconf-available
ডিরেক্টরিতে স্থানান্তরিত করার চেষ্টা করেছি , এবং আমি অ্যাপাচি 2: এপাচি 2: কনফিগারেশন ফাইলটি খুলতে পারি নি / ফাইল / ডিরেক্টরিটি নেই: কারণ কী হতে পারে?