ভূমিকা
VPS (Virtual Private Server) হচ্ছে একধরনের ভার্চুয়াল মেশিন বা ভার্চুয়াল কম্পিউটারও বলতে পারেন, যেটা একটা সার্ভিস হিসেবে কেনা যায় বিভিন্ন ক্লাউড সার্ভার প্রোভাইডারদের কাছ থেকে। এই ভার্চুয়াল মেশিন গুলোরও RAM আছে, হার্ডডিস্ক আছে, সিপিইউ আছে এবং সর্বোপরি একটা অপারেটিং সিস্টেম এর উপর চলে। মজার ব্যাপার হচ্ছে এরকম একটা মেশিনের বাস্তব কোন অস্তিত্ব নাই ঠিকই কিন্তু বাস্তব একটা ফিজিক্যাল মেশিনের মতই গঠন ও আচরণ। কিভাবে এই ভার্চুয়াল ইনফ্রাস্ট্রাকচার তৈরি ও মেইন্টেইনড হয় সেটা আজকে আমাদের আলোচনার মুল বিষয় নয়। বরং এরকম একটা ভার্চুয়াল সার্ভার মেশিনকে আমরা কিভাবে ওয়েব সার্ভার হিসেবে তৈরি করব সেখান থেকে কিভাবে ওয়েব কন্টেন্ট প্রোভাইড করবো সেটাই মুখ্য বিষয়।
কিনে ফেলি একটা ভার্চুয়াল প্রাইভেট সার্ভার
বিভিন্ন সার্ভার প্রোভাইডার তাদের মেশিনগুলোকে বিভিন্ন নামে ডাকে। যেমন অ্যামাজন এর ভাষায় এগুলো হচ্ছে ইন্সট্যান্স, Rackspace এর ভাষায় এগুলো ক্লাউড সার্ভার,
DigitalOceanএর ভাষায় ড্রপলেট, ইত্যাদি। আমরা আজকের টিউটোরিয়ালের জন্য
DigitalOcean এর কাছ থেকে একটি মিনিমাম কনফিগারেশনের সার্ভার কিনবো যেটাতে ৬৪ বিটের উবুন্টু ১৪.০৪ ইন্সটল করা থাকবে এবং আস্তে আস্তে এটা কফিগার করবো ওয়েব সার্ভার হিসেবে।
এই
লিঙ্ক থেকে একটি সার্ভার কিনে ফেলতে পারেন (এটি আমার রেফারেল লিঙ্ক। এটা ব্যবহার করে সাইন আপ করলে $10 ক্রেডিট/ব্যালেন্স পাবেন, না করলে নাই) । প্রথমে অ্যাকাউন্ট ডিটেইল দিতে হবে এবং পরে ভ্যালিড পেমেন্ট মেথড অ্যাড করতে হবে। যদিও এরা এক মাস শেষ হলে পেমেন্ট মেথড থেকে বিল চার্জ করবে তার আগে না। আপনি চাইলে সার্ভার মাঝে মাঝে শাটডাউন করে রাখতে পারেন। সেই সময় গুলোতে বিল কাউন্ট হবে না।
নতুন সার্ভার তৈরি করাএরপর অ্যাকাউন্টে লগইন করলে নিচের মত একটা সিম্পল এবং সুন্দর প্যানেল পাবেন,

এবার “Create Droplet” বাটনে ক্লিক করুন নিচের মত প্যানেল এর জন্য,

এখানে হোস্টনেমের যায়গায় আপনার একটা ডোমেইন এর নাম দিতে পারেন হয়ত যে ডোমেইন এর অ্যাপ্লিকেশনটা এই সার্ভারে আপনি রাখতে চাচ্ছেন। এরপর কফিগারেশন পছন্দ করুন। টেস্ট হিসেবে আমরা মিনিমান কনফিগারেশনের একটা মাসিক $5 এর সার্ভার নিচ্ছি। এরপর সার্ভার এর রিজিওন ঠিক করুন অর্থাৎ ওদের অনেক গুলো এলাকায় সার্ভার ইনফ্রস্ট্রাকচার গুলো আছে, আপনি যেকোনো একটা এলাকা পছন্দ করতে পারেন। এর পর ঠিক করুন অপারেটিং সিস্টেম অর্থাৎ আপনার জন্য যে মেশিন/কম্পিউটারটি তৈরি হচ্ছে সেটাতে কি অপারেটিং সিস্টেম ইন্সটলড অবস্থায় থাকবে, সেটা। আমরা অবশ্যই ৬৪ বিটের উবুন্টু পছন্দ করে এগোব। এর পর Create Droplet বাটনে ক্লিক করুন নিচের প্যানেল দেখতে চাইলে,

এই স্ক্রিনে কিছুক্ষণ অপেক্ষা করার পর নিচের মত একটি প্যানেল চলে আসবে,

এখানে দেখতে পাবেন যে আপনার সার্ভারটি এখন Active এবং ব্যাসিক কিছু অপারেশন আপনি এখানকার টুলস ইউজ করে করতে পারবেন যেমন সার্ভার রিসাইজ করা, স্ন্যাপশট (ব্যাকআপ) নেয়া, মেশিন শাটডাউন করা ইত্যাদি।
ইতোমধ্যে আপনি একটি ইমেইল পেয়ে যাবেন যেখানে আপনার নতুন মেশিনের এক্সেস থাকবে অর্থাৎ একটি root ইউজার এবং তার পাসওয়ার্ড। ইমেইলটি খুলে ইনফোগুলো দেখে আপনার নিজের বাস্তব কম্পিউটারের টার্মিনাল (ম্যাক/লিনাক্স হলে) অথবা Putty App (উইন্ডোজ হলে) খুলে নিচের মত করে লিখুন,
এখানে X.X.X.X এর যায়গায় আপনার নতুন কেনা ভার্চুয়াল সার্ভারের IP অ্যাড্রেস হবে। এই কমান্ড লিখে এন্টার করলে টার্মিনালে নিচের মত একটা Alert ম্যাসেজ আসবে যে, আপনি অতিদূরের কোন এক ভার্চুয়াল কম্পিউটারের সাথে যোগাযোগ স্থাপন করতে চাচ্ছেন যাকে আপনার কম্পিউটার চেনে না

। সেখানে yes লিখে ইন্টার করুন।

এরপরই আমরা সদ্য কেনা ভার্চুয়াল সার্ভারে প্রবেশ করলাম। এখন এই টার্মিনাল ইউজ করেই আমরা ব্যাসিক্যালি ওই দুরের কম্পিউটারে কাজ করবো

ব্যাসিক ইউজার ও সিকিউরিটি সেটিং
ডিফল্ট পাসওয়ার্ড পরিবর্তন
ইদানীং কেনা উবুন্টু ১৪.০৪ বেজড সার্ভার গুলোতে প্রথমবার root ইউজার দিয়ে লগইন করলেই আপনাকে ওই ইউজারের পাসওয়ার্ড পরিবর্তন করার কথা বলবে এবং টার্মিনালে এ সক্রান্ত একটা ম্যাসেজ ওপেন হবে যেখানে লেখা থাকবে “Current Unix Password” সেখানে আপনি ইমেইলে পাওয়া root ইউজারের পাসওয়ার্ড দিলে বলবে “Enter New Unix Password” অর্থাৎ আপনি root ইউজারের পাসওয়ার্ড পরিবর্তন করলেন। এরপর যদি আবার root ইউজার হয়ে ssh root@X.X.X.X লিখে সার্ভারে লগইন করতে চান তাহলে এই নতুন পাসওয়ার্ড দিয়ে ঢুকতে হবে।
আর যদি প্রথমবার root ইউজার দিয়ে লগইন করার সময় পাসওয়ার্ড পরিবর্তনের এই অপশনটি স্বয়ংক্রিয় ভাবে আপনার টার্মিনালে ভেসে না ওঠে তাহলে root ইউজার দিয়ে লগইন করার পর নিচের কমান্ড লিখে ইন্টার দিতে হবে,
তাহলে উপরে উল্লেখ করা পদ্ধতিতে root ইউজারের পাসওয়ার্ডটি বদলে নিতে পারবেন।
নতুন ইউজার তৈরি করা
এখন আমরা আমাদের সার্ভার মেশিনে আরেকটি ইউজার তৈরি করবো এবং পরবর্তীতে সেই ইউজার হয়েই লগইন করে বাকি কাজ গুলো করবো। নতুন ইউজার তৈরির জন্য লিখুন,
এটা লিখে ইন্টার দেয়ার পরেই আপনার কাছে এই ইউজারের পাসওয়ার্ড চাইবে এবং আপনি দুইবার এই ইউজারের পাসওয়ার্ড লিখে ইন্টার দিন। এরপর সিস্টেম এই ইউজার সম্পর্কে আরও কিছু তথ্য চাইবে আপনি ইচ্ছা করলে বাকি সব বিস্তারিত না দিয়ে শুধু ইন্টার চেপে কন্টিনিউ করতে পারেন, তাতেও এই নতুন ইউজারটি ঠিক মতই তৈরি হবে।
নতুন ইউজারকে sudo প্রিভিলেজ দেয়া
আমরা চাই নতুন এই ইউজার দিয়ে যখন পরে লগইন করবো তখন যেন, root ইউজার যে সমস্থ কাজ করতে পারে সেগুলো এই নতুন ইউজারটাও করতে পারে (যেকোনো কমান্ডের আগে sudo যুক্ত করে)
টার্মিনালে লিখুন,
ওপেন হওয়া ডকুমেন্টে এ সার্চ (কিবোর্ডের ctrl+w চেপে সার্চ করতে পারেন) করে বের করুন কোথায় “User privilege specification” লেখা আছে যার নিচে এরকম একটা লাইন লেখা আছে,
ওই লাইনের নিচে নিম্নোক্ত লাইনটি যুক্ত করুন,
অর্থাৎ ওই যায়গাটি দেখতে হবে নিচের মত,
1
2
|
root ALL=(ALL:ALL) ALL
nuhil ALL=(ALL:ALL) ALL
|
এরপর কিবোর্ডের ctrl+x চাপলে টার্মিনালে আপনার পরিবর্তন গুলো শেভ করতে চাওয়ার বার্তা আসবে। সিম্পলি ইন্টার চাপুন যাতে ওই ফাইলটি ওই নামেই পরিবর্তন সহকারে শেভ হয়ে যায়।
একটু সিকিউরিটি
SSH দিয়ে কোন সার্ভারে লগইন করার সময় সেটা একটা ডিফল্ট পোর্ট ইউজ করে সার্ভারের সাথে লগইন সম্পন্ন করে। সাধারণত সেই ডিফল্ট পোর্ট হচ্ছে 22. আমরা আমাদের সার্ভারে লগইন করার জন্য এই পোর্টটি পরিবর্তন করতে পারি যাতে লগইনটা আমাদের বলে দেয়া পোর্ট ইউজ করে সম্পন্ন হয়। এর জন্য টার্মিনালে লিখুন,
1
|
sudo nano /etc/ssh/sshd_config
|
এটা লিখে ইন্টার দিলে যে ডকুমেন্ট ওপেন হবে সেখানে খুঁজুন কোথায় Port 22 লেখা আছে সেই লাইনটা এডিট করে লিখুন Port 3456. আপনি 1025 থেকে 65536 এর মধ্যের যেকোনো পছন্দের নাম্বার এখানে লিখতে পারেন পোর্ট নাম্বার হিসেবে।
এরপর ওই ডকুমেন্টেই খুঁজে বের করুন PermitRootLogin yes লেখা একটা লাইন এবং সেটা পরিবর্তন করে লিখুন PermitRootLogin no. অর্থাৎ এই সিস্টেমে আর root ইউজার দিয়ে লগইন হবেই না।
চাইলে ওই ডকুমেন্টের শেষে নিচের দুই লাইন অ্যাড করে দিতে পারেন,
1
2
|
UseDNS no
AllowUsers nuhil
|
এর মানে হচ্ছে শুধুমাত্র nuhil নামের ইউজারকেই সিস্টেম অ্যালাউ করবে আর কোন ইউজার নাম দিয়ে লগইনের চেষ্টা করে কাজ হবে না।
এখন নিচের কমান্ড দিয়ে SSH রিলোড করতে হবে,
এ অবস্থায় আমরা উপরের সেটিংস গুলো চেক করবো অর্থাৎ নতুন ইউজার দিয়ে নতুন পোর্ট দিয়ে লগইন করবো একই সার্ভারে। এর জন্য টার্মিনালে নতুন একটি ট্যাব খুলুন এবং টেস্ট করুন কারন বর্তমানে খোলা ট্যাবটাতে আমরা root হয়ে লগইন অবস্থায় আছি এবং পাশের ট্যাবে নতুন ইউজার এবং কনফিগারেশন অনুযায়ী যদি লগইন না হয় তাহলে বিপদে না পরে আমরা আগের ওপেন করা ট্যাবেই সেগুলো ফিক্স করতে পারবো। কিন্তু root ইউজার দিয়ে লগইন করা ট্যাব যদি কেটে দেই আর পাশের নতুন ওপেন করা ট্যাব থেকে nuhil ইউজার দিয়ে লগইন করতে না পারি তাহলে আর ওই সার্ভারে ঢোকার উপায় থাবে না

তো, নতুন টার্মিনাল ট্যাবে লিখুন,
1
|
ssh -p 3456 nuhil@X.X.X.X
|
যদি ভালো মত লগইন হয়ে যায় তাহলে আগের root দিয়ে ঢোকা ট্যাবটি কেটে দিতে পারেন এবং বাকি কাজ আমরা এখন এখানে এই ইউজার দিয়েই করবো।
লগইন টেস্ট ঠিক থাকলে আপনি টারনিমালে exit লিখে ইন্টার দিয়ে সার্ভার থেকে লগআউট হতে পারেন। আর যদি আরেক্টু সিকিরিটি নিয়ে মাথা ঘামাতে চান তাহলে exit অর্থাৎ লগআউট না করে নিচের ধাপ সম্পন্ন করুন।
আরেক্টুসিকিউরিটি (পাসওয়ার্ড দিয়ে লগইন বন্ধ করে কি-ফাইল লগইন এনাবেল করা)
কি-বেজড অথেন্টিকেশন এর জন্য প্রয়োজন হয় এক জোড়া কি-ফাইলের। একটা প্রাইভেট কি এবং একটা পাবলিক দিয়ে সাধারণত এধরনের অথেন্টিকেশন ম্যানেজ করা হয়। প্রাইভেট কি -টা আপনার নিজের মেশিনে থাকে এবং সেফ থাকে আর পাবলিক কি -টা আপনি অন্য কাউকে দিতে পারেন এক্ষেত্রে আমরা আমাদের নতুন তৈরি করা সার্ভার মেশিনকে আমাদের পাবলিক কি -টা দেব।
এর জন্য আগে চেক করতে হবে আপনার লোকাল মেশিনে এই ফাইলগুলো তৈরি করা আছে কিনা। চেক করার জন্য টার্মিনালে একটি নতুন ট্যাব খুলুন যেখানে আপনার লোকাল মেশিনকে ব্রাউজ করতে পারছেন এবং লিখুন,
যদি দেখেন এখানে id_rsa এবং id_rsa.pub নামের দুটি ফাইল আছে তাহলে কপি কুরুন সেকশনে যান আর যদি এরকম কোন ফাইল আপনার লোকাল মেশিনে না থাকে তাহলে নিচের কমান্ড দিয়ে এগুলো তৈরি করে নিতে পারেন,
সেকশন- কপি করুনঃ এখন আমাদের পাবলিক কি -টাকে আমাদের রিমোট সার্ভারে কপি করার জন্য নিচের কমান্ড লিখুন,
1
|
scp -P 3456 ~/.ssh/id_rsa.pub nuhil@X.X.X.X:/home/nuhil/
|
এই কমান্ডের মাধ্যমে আমরা লগইন এবং কপি দুটো একসাথেই করছি। আর তাই, এই কমান্ড আপনার কাছে nuhil ইউজারের ওই রিমোট মেশিনের পাসওয়ার্ড চাইবে। পাসওয়ার্ড দিয়ে ইন্টার করলে পবালিক কি সার্ভার মেশিনে কপি হয়ে যাবে।
ধরে নিচ্ছি আপনি আপনার টার্মিনালে আরেকটা ট্যাবে সার্ভারের সাথে nuhil ইউজার হয়ে কানেক্টেড আছেন। সেই ট্যাব ওপেন করে লিখুন (অর্থাৎ আপনি সার্ভার মেশিনে লিখছেন এখন),
1
2
|
mkdir /home/nuhil/.ssh
mv /home/nuhil/id_rsa.pub /home/nuhil/.ssh/authorized_keys
|
অর্থাৎ সার্ভার মেশিনে প্রথমে একটা .ssh নামের ডিরেক্টরি তৈরি করছি তারপর /home/nuhil এর মধ্যে কপি হয়ে আসা পাবলিক কি ফাইলটাকে .ssh ডিরেক্টরিতে নিয়ে যাচ্ছি এবং নাম চেঞ্জ করে authorized_keys করে দিচ্ছি।
এখন এগুলোর পারমিশন গুলো ফিক্স করতে নিচের কমান্ড গুলো দিন একের পর এক,
1
2
3
|
chown -R nuhil:nuhil /home/nuhil/.ssh
chmod 700 /home/nuhil/.ssh
chmod 600 /home/nuhil/.ssh/authorized_keys
|
মনে আছে উপরে একটা যায়গায় আমরা root লগইন বন্ধ করে দিয়েছিলাম এবং শুধু nuhil ইউজার দিয়ে লগইন এনাবেল করেছিলাম? এখন আমরা পাসওয়ার্ড দিয়ে লগইন বন্ধ করে দেব

এর জন্য টার্মিনালে লিখুন,
1
|
sudo nano /etc/ssh/sshd_config
|
ওপেন হওয়া ফাইলে খুঁজে/আপডেট করে অথবা আনকমেন্ট করে নিচের লাইনটা যুক্ত করুন
PasswordAuthentication no
এরপর ctrl+x চেপে ফাইল শেভ করে টার্মিনালে লিখুন,
এরপর exit লিখে সার্ভার থেকে লগআউট হয়ে যান।
মজাঃ এবার আপনার টার্মিনালে নতুন একটা ট্যাব খুলে অথবা এটাতেই (যেখানে exit লিখে লগআউট করলেন) লিখুন,
1
|
ssh -p 3456 nuhil@X.X.X.X
|
দেখুন কোন রকম পাসওয়ার্ড দেয়া ছাড়াই আপনি আপনার রিমোট সার্ভারে ঢুকে গেলেন

ইন্সটল অ্যাপাচি ওয়েব সার্ভার
আমরা উবুন্টু এর প্যাকেজ ম্যানেজার দিয়েই অ্যাপাচি ইন্সটল করবো। প্রথমেই আপনার কেনা উবুন্টু সার্ভার এর প্যাকেজ ম্যানেজার কে আপডেট করে নিতে নিচের কমান্ড দিন,
এবার অ্যাপাচি ইন্সটল করতে লিখুন,
1
|
sudo apt-get install apache2
|
যদি এরকম একটা পেজ আপনার ব্রাউজারে চলে আসে তাহলে বলা যায় আপনার ওয়েব সার্ভার সেটআপ হয়ে গেছে।
MySQL ইস্টলেশন
মাইসিকুয়েল এবং সাথে কিছু হেল্পার প্যাকেজ ইন্সটল করতে কমান্ড দিন,
1
|
sudo apt-get install mysql-server php5-mysql
|
ইন্সটল চলা কালীন টার্মিনালে আপনার কাছ থেকে MySQL এর root ইউজারের পাসওয়ার্ড চাওয়া হবে। পছন্দের পাসওয়ার্ড দিন এবং কনফার্ম করুন।
ইন্সটলেশন শেষে আমরা আরও কিছু কমান্ড ব্যবহার করবো যার মাধ্যমে MySQL এর ব্যাসিক সিকিউরিটি এবং সেটআপ সম্পন্ন হবে। প্রথমে MySQL এর নিজস্ব ডাটাবেজ ডিরেক্টরি স্ট্রাকচার তৈরি করতে কমান্ড দিন,
এবার MySQL এর কিছু ডিফল্ট সিকিউরিটি ইস্যু/সেটিং ফিক্স করতে কমান্ড দিন,
1
|
sudo mysql_secure_installation
|
এই কমান্ড দেয়ার পরই আপনার কাছে MySQL root ইউজার পাসওয়ার্ড চাওয়া হবে যেটা এর আগের ধাপেই সেট করেছেন। এরপর আপনাকে বলা হবে পাসওয়ার্ড চেঞ্জ করতে চান কিনা, চেঞ্জ করতে না চাইলে প্রোমোটে n লিখে ইন্টার দিন। এর পরেও অনেক প্রশ্ন আপানকে করা হবে যার মধ্যে আছে MySQL এর স্যাম্পল ইউজার গুলো ডিলিট করবে কিনা, MySQL এ রিমোট root লগইন এনাবেল রাখেবন কিনা এসব। এগুলো ইন্টার দিয়ে দিয়ে কন্টিনিউ করে যেতে পারেন। সব শেষে MYSQL ঠিক ঠাক এবং ব্যবহারের উপযোগী হয়ে গেছে।
পিএইচপি ইন্সটলেশন
টার্মিনালে নিচের কমান্ড দিন যদি আপনি PHP এবং সাথে কিছু হেল্পার প্যাকেজ ইন্সটল করতে চান,
1
|
sudo apt-get install php5 libapache2-mod-php5 php5-mcrypt
|
আমাদের জন্য সার্ভারে পিএইচপি ইন্সটল হয়ে গেছে

এ অবস্থায় আমরা আমাদের ওয়েব সার্ভারের ডকুমেন্ট রুটে একটি টেস্ট পিএইচপি ফাইল রাখবো এবং ব্রাউজারে কল করবো টেস্ট করার জন্য যে, PHP ঠিক মত কাজ করছে।
টার্মিনালে কমান্ড দিন,
1
|
sudo nano /var/www/html/index.php
|
অর্থাৎ সার্ভার মেশিনের /var/www/html ডিরেক্টরি এর মধ্যে একটি index.php ফাইল তৈরি হবে এবং সেটাতে কিছু লেখার জন্য টার্মিনালে এডিটরও রেডি হবে। এখন সেই ফাকা ফাইলে লিখুন,
এটা একটা PHP এর বিল্টইন ফাংশন যেটা PHP এর সেটিং সম্পর্কিত বেশ কিছু ইনফো প্রিন্ট করে। আমাদের index.php ফাইলে এই স্টেটমেন্ট লিখে দুটি জিনিস টেস্ট করা হবে। ১) সার্ভারে পিএইচপি ঠিক মত কাজ করছে কিনা ২) ইন্সটল হওয়া PHP সম্পর্কে অনেক গুলো দরকারি তথ্যও দেখা যাবে।
টার্মিনালে উপরের কোড লেখা শেষে ctrl+x এবং ইন্টার চেপে ফাইলটি শেভ করুন।
একটা ব্যাপার খেয়াল করে দেখুন যদি ব্রাউজারে লেখেন
http://X.X.X.X অর্থাৎ শুধু IP অ্যাড্রেসটি, তাহলে ব্রাউজারে index.html অর্থাৎ Apache এর ডিফল্ট পেজটি দেখায় কিন্তু আমাদের index.php পেজটিকে শুধু IP লিখে চাইতে হলে লিখতে হচ্ছে
http://X.X.X.X/index.php.
এখানে যা হচ্ছে সেটা হল, অ্যাপাচি এর ডিফল্ট সেটিং অনুযায়ী তার কাছে কোনও ডিরেক্টরি এক্সেস এর কল গেলে সে প্রথমে দেখছে সেখানে index.html ফাইল আছে কিনা তাই ব্রাউজারে শুধু IP লিখে
/var/www/html ডিরেক্টরি চাইলেই সে index.html ফাইল সার্ভ করছে। আমরা এই ডকুমেন্ট প্রাইওরিটি চেঞ্জ করতে পারি।
টার্মিনালে লিখুন,
1
|
sudo nano /etc/apache2/mods-enabled/dir.conf
|
ওপেন হওয়া ডকুমেন্টে নিচের মত কন্টেন্ট দেখতে পাবেন,
1
2
3
|
<IfModule mod_dir.c>
DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
</IfModule>
|
ফাইলটি পরিবর্তন করে নিচের মত করে ফেলুন,
1
2
3
|
<IfModule mod_dir.c>
DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
</IfModule>
|
এবার ctrl+x চেপে ফাইলকে শেভ করে তারপর অ্যাপাচি রিস্টার্ট করার জন্য টার্মিনালে লিখুন,
1
|
sudo service apache2 restart
|
এখন ব্রাউজারে ডকুমেন্ট রুট (
http://X.X.X.X ) কল করলে আগে PHP ফাইলটিকেই অ্যাপাচি সার্ভ করবে যেখানে আমরা PHP ইনফো দেখার কোড লিখেছি।
ডোমেইন ম্যাপিং
ধরে নিচ্ছি আপনার Godaddy বা অন্যকোথাও একটা ডোমেইন কেনা আছে এবং সেটিকে আপনার সার্ভারের সাথে ম্যাপ করতে চাচ্ছেন যাতে ব্রাউজারে mysite.com লিখলে আমাদের ওয়েব সার্ভার এর ডিফল্ট ডকুমেন্ট রুটে থাকা PHP ফাইলটি দেখা যায়।
প্রথমেই ডোমেইন যেখানে কেনা সেখানার কন্ট্রোল প্যানেল খুলে ওই ডোমেইনটির Nameserver পরিবর্তনের অপশনে যান। Godaddy এর প্যানেল অনুযায়ী পরিবর্তনটি করা যায় DNS Zone File Edit এর মাধ্যমে। Nameserver হিসেবে নিচের ৩টি সেটআপ করুন,
ns1.digitalocean.com
ns2.digitalocean.com
ns3.digitalocean.com
এবার আপনার DigitalOcean এর কন্ট্রোল প্যানেল এ ঢুকুন। নিচের মত করে DNS মেনু তে ক্লিক করুন,

এর পরের স্ক্রিনে Add Domain ক্লিক করে নিচের মত করে আপনার ডোমেইন এবং সেটা আপনার কোন সার্ভারের সাথে ম্যাপ হবে সেটা ঠিক করে দিন,

এখন Create Domain বাটনে ক্লিক করলে নিচের মত একটা পেজ আসবে,

যেখানে বাই ডিফল্ট একটি A রেকর্ড এবং ৩টি নেম সার্ভার রেকর্ড যুক্ত করাই আছে।
এই ডিফল্ট সেটিংস অবস্থাতেই আপনি কিছুক্ষণ পর ব্রাউজারে mysite.com কল করলে আপনার index.php পেজকে দেখতে পাওয়ার কথা

উপরুন্ত আপনি চাইলে এখানে আরও একটি নতুন রেকর্ড যুক্ত করতে পারেন যেটা করলে ইউজার mysite.com লিখেও আপনার কন্টেন্ট পাবে অথবা
http://www.mysite.com লিখেও আপনার কন্টেন্ট পাবে। এর জন্য একটি CNAME রেকর্ড অ্যাড করতে পারেন নিচের মত করে,
এখানে A, CNAME বাদেও MX, TXT, AAAA এবং অন্যান্য রেকর্ড অ্যাড করতে পারবেন প্রয়োজন অনুযায়ী।
পোস্টফিক্স ইন্সটলেশন
একটা ওয়েব সার্ভার কনফিগার করার পর পরই সেখানে একটা PHP ওয়েব অ্যাপ রাখাটাই স্বাভাবিক আর ঠিক ততটাই স্বাভাবিক সেই PHP অ্যাপের কোন একটা ফাংশনালিটি থাকা যার মাধ্যমে হয়ত অ্যাপ ইউজারকে বিশেষ অবস্থায় কিছু ইমেইল পাঠানো হয়। যেমন, ফরগোট পাসওয়ার্ড অপশনের মাধ্যমে রিসেট ইমেইল পাঠানো।
সংক্ষেপে PHP এর mail() ফাংশন আর ওপেন সোর্স মেইল ট্রান্সফার এজেন্ট postfix নিয়ে কিছু বলতে গেলে বলতে হয় যে, PHP এর mail() ফাংশনকে ঠিক ঠাক মত কাজ করাতে হলে অর্থাৎ এর মাধ্যমে কোন একটা রিমোট ইমেইল অ্যাড্রেসে ইমেইল সেন্ড করতে হলে অবশ্যই ওই সার্ভার বা সিস্টেমে একটা সচল মেইল সিস্টেম থাকতে হবে। postfix, sendmail হচ্ছে সেরকম কিছু প্রোগ্রাম যেটা সার্ভার এন্ডের জিনিষ, PHP এর কিছু না। বরং এদের দুটোই PHP এর sendmail নামক বাইনারিকে ইউজ করে কাজ সেরে নেয়।
এখন তাই, এটাও দেখা জরুরি যে PHP এর sendmail এর পাথ কোনটা অথবা পাথ আছে কিনা। সেটি চেক করতে হলে আপনার ব্রাউজারে আমাদের সেই index.php ফাইলটি কল করুন যেটা আমাদেরকে এই ইনফোটাও জানিয়ে দেবে। ব্রাউজারে
http://X.X.X.X অথবা
http://mysite.com কল করলে যে পেজ আসবে সেখানে কোন একটা জায়গায় নিচের মত একটা টেবিল আছে,

অর্থাৎ এটাই আমাদের sendmail এর পাথ।
postfix ইন্সটলেশন
এবার postfix ইন্সটল করার জন্য ssh এর মাধ্যমে সার্ভারে লগইন করে টার্মিনালে নিচের কমান্ড দিন,
1
|
sudo apt-get install postfix
|
ইন্সটলেশনের মধ্যেই আপনার কাছে অপশন চাওয়া হবে যে, কেমন ধরনের কনফিগারেশন আপনি চাচ্ছেন। সেখানে “Internet Site” সিলেক্ট করে এগিয়ে যান,

এরপরের স্ক্রিনে আপনার কাছ থেকে Fully Qualified Domain Name (FQDN) চাওয়া হবে। সেখানে লিখুন mysite.com কারন আমরা টিউটোরিয়ালের স্বার্থে ধরেই নিচ্ছি আপনি mysite.com নামের সাইট চালু করছেন।
কনফিগারেশন
ইন্সটলেশনের পরেও কিছু ব্যাসিক কনফিগারেশনের জন্য টার্মিনালে নিচের কমান্ড দিন,
1
|
sudo nano /etc/postfix/main.cf
|
ওপেন হওয়া ফাইলে myhostname খুঁজে বের করুন এবং দেখুন সেটা দেখতে যেন myhostname = mysite.com এর মত হয়। যদি এটাই সেট করা থাকে তো ভালো, নাহলে সেট করে দিন।
এরপর postfix সার্ভিস রিলোড করুন নিচের কমান্ড দিয়ে,
1
|
sudo service postfix restart
|
টেস্ট mail()
সার্ভারের /var/www/html এর মধ্যে একটি টেস্ট PHP ফাইল mail.php তৈরি করুন নিচের কোড সম্বলিত। you@gmail.com এর জায়গায় সঠিক একটি ইমেইল অ্যাড্রেস দিন যেখানে টেস্ট ইমেইল গেলে আপনি চেক করতে পারবেন।
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
?php
$to = 'you@gmail.com';
$subject = 'the subject';
$message = 'hello';
$headers = array();
$headers[] = "MIME-Version: 1.0";
$headers[] = "Content-type: text/plain; charset=iso-8859-1";
$headers[] = "From: My Server <no-reply@mysite.com>";
$headers[] = "Reply-To: Recipient Name <contact@mysite.com>";
$headers[] = "Subject: {$subject}";
$headers[] = "X-Mailer: PHP/".phpversion();
mail($to, $subject, $message, implode("\r\n", $headers));
?>
|
এই ফাইলটিকে /var/www/html এর মধ্যে তৈরি এবং কোড লিখতে টার্মিনালে কমান্ড দিতে পারেন,
1
|
sudo nano /var/www/html/mail.php
|