ভার্চুয়াল হোস্টের অ আ ক খ

আমরা ডেভেলপমেন্টের সময় বেশীর ভাগ সময়েই আমাদের কোড অ্যাপাচির ডকুমেন্ট রুটে (সাধারনত htdocs ডিরেক্টরীতে) রাখি এবং ব্রাউজারে “localhost” লিখে সেটা অ্যাকসেস করি। কিন্তু আজকে আমরা দেখবো কিভাবে আমরা ভার্চুয়াল হোস্ট তৈরী করে আমাদের প্রজেক্টকে যেকোন হোস্ট নাম দিয়ে ব্যবহার করতে পারি।

ভার্চুয়াল হোস্ট তৈরীর আগে আপনার জানা লাগবে যে আপনার অ্যাপাচি কনফিগ ফাইল কোথায় রয়েছে। প্রধান কনফিগ ফাইলটি সাধারনত httpd.conf বা apache2.conf নামে থাকে। অপারেটিং সিস্টেম ভেদে এই ফাইলের লোকেশন এক এক রকম হয়। ডেবিয়ান বা উবুন্তু তে এটা থাকে /etc/apache2/httpd.conf এই লোকেশনে। CentOS এ এই ফাইল থাকে সাধারনত /etc/httpd/conf/httpd.conf এখানে।

আমরা এই আর্টিকেলে সহজে ভার্চুয়াল হোস্ট তৈরীর জন্য সরাসরি httpd.conf ফাইলে এডিট করব, কিন্তু বাস্তব জীবনে বা প্রোডাকশন এনভায়রনমেন্টে আপনি দেখবেন যে আপনার সরাসরি httpd.conf ফাইলে হাত দেয়ার পারমিশন নাও থাকতে পারে, বা থাকলেও সেখানে এডিট না করে আমরা বরং একই ফোল্ডারে “sites-available” এবং “sites-enabled” নামে দুইটি ফোল্ডার থাকে, সেখানে ভার্চুয়াল হোস্টের ডেফিনিশন লেখা হয়। তবে আজকের আর্টিকেলে, আমরা সরাসরি httpd.conf ফাইলেই এডিট করব।

নেমিং কনভেনশন: সাধারনত একেকজন ভার্চুয়াল হোস্টের নাম একেক ভাবে লিখলেও একটা কমন কনভেনশন ফলো করাটা বুদ্ধিমানের কাজ। যেমন আমরা যেটা করব সেটা হল ডেভেলপমেন্ট পরিবেশে ভার্চুয়াল হোস্টের নাম দিব এই ফরম্যাটে local.ProjectName.dev। অর্থাৎ আপনার প্রজেক্টের নাম যদি হয়, ফর এক্সাম্পল “Kitchen Sink” তাহলে ভার্চুয়াল হোস্টের নাম হবে local.kitchensink.dev – ব্রাউজারে আমরা এই ডোমেইন/হোস্ট নাম দিয়েই প্রজেক্টকে অ্যাকসেস করব।

প্রথম কাজ: ভার্চুয়াল হোস্ট তৈরীর প্রথম স্টেপ হল কম্পিউটারকে আমাদের এই ভার্চুয়াল হোস্টের নাম চেনানো। কারন যেহেতু এইনাম গুলো ভার্চুয়াল এবং এইসব নামে আসলে কোন ডোমেইন নেই, তাই কম্পিউটারকে আলাদা করে চিনিয়ে দেয়া লাগবে। এর জন্য আমাদেরকে হোস্টস (hosts) ফাইলে পরিবর্তন করা লাগবে। উবুন্তু, ডেবিয়ান, সেন্টওএস বা ম্যাকে এই ফাইল থাকে “/etc/hosts” নামে। অন্যান্য অপারেটিং সিস্টেমে এই ফাইল কোথায় থাকে তা জানার জন্য https://en.wikipedia.org/wiki/Hosts_(file) এখানে ব্রাউজ করুন।

যেকোন এডিটর দিয়ে /etc/hosts ফাইলটি খুলে তাতে নিচের লাইনটি লিখে দিন

আইপি এবং হোস্ট নামের মাঝে একটি স্পেস বা একটি ট্যাব দিতে হবে। এবার hosts ফাইল টি সেভ করুন। চেক করার জন্য নতুন একটি টার্মিনাল ওপেন করে সেখানে কমান্ড দিন “ping local.kitchensink.dev” – দেখবেন যে 127.0.0.1 আইপি অ্যাড্রেসেই পিং করছে।

দ্বিতীয় কাজ: এবার আমরা ভার্চুয়াল হোস্টের কনফিগারেশন লিখব আগে থেকে বের করে রাখা httpd.conf ফাইলে। লেখার সুবিধার্থে আমি ধরে নিলাম আপনার প্রজেক্টের ডিরেক্টরী হল “/var/www/kitchensink” – এই ডিরেক্টরীতে টেস্টের সুবিধার্থে কিছু একটা লিখে একটা index.php বা index.html রেখে দিন । এবার httpd.conf ফাইলে সবার নিচে এসে নিচের মত করে লিখুন

এবার অ্যাপাচি রিস্টার্ট/রিলোড করুন। রিস্টার্ট বা রিলোড হয়ে গেলে ব্রাউজারে এসে টাইপ করুন http://local.kitchensink.dev । যদি সবকিছু ঠিক থাকে থাকে তাহলে আপনি আগে থেকে তৈরী করে রাখা index.html অথবা index.php ফাইলের আউটপুট দেখতে পাবেন। এই কনফিগারেশন টি হল একটি ভার্চুয়াল হোস্টের মিনিমাম কনফিগারেশন

প্রসঙ্গত, ওয়ার্ডপ্রেস চালানোর জন্য আমাদের ভার্চুয়াল হোস্টের কনফিগারেশনে প্রয়োজনীয় ইনস্ট্রাকশন দিয়ে রাখা লাগবে যেন অ্যাপাচি আমাদের ওয়ার্ডপ্রেস ডিরেক্টরীতে কোন .htaccess ফাইল পেলে সেটার মাঝে লিখে রাখা ইনস্ট্রাকশন গুলো ঠিকভাবে ফলো করে। এজন্য অ্যালাউ-ওভাররাইড নামে একটি ইনস্ট্রাকশন লিখতে হবে, চলুন আমরা আগের কনফিগারেশনটি এডিট করি নিচের মত করে

এছাড়াও FollowSymlinks নামে আরেকটি অপশন লিখে রাখা ভালো, তাতে প্রজেক্টের মাঝে যদি সিম্বোলিক লিংক (উইন্ডোজ ব্যবহারকারীরা যাকে চেনেন শর্টকাট হিসেবে) থাকে, সেটাও ঠিকমত কাজ করবে। সুতরাং আমাদের ফাইনাল কনফিগারেশন ফাইল হবে নিচের মত

ব্যাস, আপনার অ্যাপাচি রিস্টার্ট করুন আর ভার্চুয়াল হোস্ট দিয়ে ডেভেলপমেন্ট শুরু করে দিন 🙂

ট্রাবলশুটিং: অনেকসময় সবকিছু করার পরেও হয়ত ভার্চুয়াল হোস্ট ঠিক মত কাজ না করতে পারে। তখন অনুগ্রহ করে httpd.conf ফাইলে চেক করে দেখুন নিচের লাইনটি আছে কিনা, বা থাকলেও যদি কমেন্ট করা থাকে তাহলে আনকমেন্ট করে দিন। এরপর অ্যাপাচি রিস্টার্ট দিন, সমস্যার সমাধান হয়ে যাওয়ার কথা

আর্টিকেলটি আপনার ভালো লাগলে অনুগ্রহ করে শেয়ার করে অন্যদেরও জানার সুযোগ করে দিন।

6 thoughts on “ভার্চুয়াল হোস্টের অ আ ক খ”

  1. আপনাকে অনেক ধন্যবাদ এই ধরনের জটিল একট‍া টিপস দেওয়ার জন্য।

Leave a Reply

Your email address will not be published. Required fields are marked *