Server Deployment
এই section-টি তাদের জন্য যারা ইতিমধ্যে একটি web application (React/Next.js) বানাতে পারেন এবং এখন সেটিকে একটি real server-এ deploy করতে শিখতে চান — ঠিক যেভাবে professional Software Engineers করেন।
Vercel vs. a Real Server
এই প্রশ্নটি প্রায় সবার মনে আসে:
“Vercel তো free এবং সহজ — তাহলে নিজের server কেন?”
এটা একটি সৎ প্রশ্ন এবং এর উত্তর জানা দরকার।
Vercel চমৎকার — এই সাইটটিও (omarsec.com) Vercel-এ চলে। কিন্তু Vercel একটি managed platform, যার মানে হলো Vercel আপনার হয়ে অনেক সিদ্ধান্ত নেয়।
| Vercel | Your Own Server | |
|---|---|---|
| Setup | Zero config | Manual, full control |
| Database | External service only | Run anything locally |
| Background jobs | Not supported | Fully supported |
| File storage | External service only | Local or cloud |
| Cost at scale | Expensive | Predictable monthly cost |
| Learning value | Low | High |
Client projects-এ প্রায়ই এমন requirements আসে যা Vercel-এ সম্ভব না — যেমন একটি custom background worker, একটি database যা same server-এ চলবে, বা একটি real-time WebSocket server। এই মুহূর্তে আপনার নিজের server-এ deploy করার দক্ষতা লাগবে।
আরেকটি কারণ আরো গুরুত্বপূর্ণ:
যে engineer server বোঝেন না, তিনি যে কোনো platform ব্যবহার করুন — production-এ কিছু ভাঙলে তিনি অন্ধ।
Prerequisites
এই section শুরু করার আগে নিচের বিষয়গুলো জানা থাকতে হবে।
- Linux terminal basics —
cd,ls,cat, file permissions, SSH (Linux Fundamentals section দেখুন) - Git workflow —
git clone,git push(Git & GitHub section দেখুন) - একটি Next.js project আছে বা
create-next-appদিয়ে তৈরি করতে পারেন - একটি GitHub account আছে
Database বা Docker জানা দরকার নেই। এই section-এ এগুলো ধাপে ধাপে দেখানো হবে।
What You Will Learn
এই পুরো সেকশনটি এমনভাবে সাজানো হয়েছে যেন আপনি একদম শূন্য থেকে শুরু করে একজন প্রফেশনালের মতো সার্ভার ম্যানেজ করতে পারেন। শেখার সুবিধার্থে এটিকে দুটি প্রধান ভাগে ভাগ করা হয়েছে:
Foundation
লক্ষ্য: সার্ভারের একদম বেসিক বা ভেতরের কাজগুলো হাতে-কলমে শেখা।
Foundation সেকশনটি শেষ করার পর আপনি শিখবেন:
- Server Creation: একটি ফাঁকা Linux VPS কিনে সেটিতে হ্যাকারদের থেকে বাঁচার জন্য Security Hardening করা (Firewall, SSH Keys)।
- Traffic Routing: Nginx ব্যবহার করে ব্যবহারকারীর রিকোয়েস্ট আপনার অ্যাপ পর্যন্ত সঠিকভাবে পৌঁছে দেওয়া।
- Security: Certbot দিয়ে বিনামূল্যে SSL Certificate যুক্ত করে সাইটটিকে HTTPS করা।
- Process Management: PM2 ব্যবহার করা যাতে সার্ভার রিস্টার্ট হলেও আপনার অ্যাপ নিজে নিজেই চালু হয়ে যায়।
সংক্ষেপে, এই সেকশন শেষে আপনি যেকোনো সাধারণ ওয়েব অ্যাপ্লিকেশানকে ইন্টারনেটে লাইভ করতে পারবেন।
Full Production
লক্ষ্য: একটি সাধারণ ওয়েবসাইটকে Enterprise-grade বা বিশাল স্কেলের অ্যাপ্লিকেশনে রূপান্তর করা।
Full Production সেকশনটি শেষ করার পর আপনি শিখবেন:
- Automation & Scaling: Docker কন্টেইনার এবং CI/CD পাইপলাইন ব্যবহার করে ডেপ্লয়মেন্ট অটোমেট করা।
- Data Management: ডেটাবেস (PostgreSQL) এবং ক্লাউড ফাইল স্টোরেজ (S3) সিকিউরভাবে সার্ভারের সাথে যুক্ত করা।
- Advanced Security: Cloudflare ব্যবহার করে সাইটকে DDoS অ্যাটাক থেকে বাঁচানো এবং CDN এর মাধ্যমে সারা বিশ্বে সাইট ফাস্ট করা।
- Reliability: সার্ভারের যেকোনো সমস্যায় অ্যালার্ট (Monitoring) পাওয়া এবং ডেটা হারানোর ভয়ে অটোমেটিক Backup সিস্টেম তৈরি করা।
অন্য টেকনোলজি কি চলবে?
অনেকেই প্রশ্ন করেন—“আমি যদি Python, PHP বা Go ব্যবহার করি, তবে কি এই গাইডটি আমার কাজে লাগবে?”
উত্তর হলো: হ্যাঁ, অবশ্যই! মূলত এটি একটি Linux Server Foundation গাইড। টেকনোলজি নির্বিশেষে একটি প্রোডাকশন সার্ভারের ৮০% কাজ সবসময় একই থাকে।
সার্ভার কেনা, ওএস (OS) সিকিউর করা, ফায়ারওয়াল (ufw), SSH Keys, রিভার্স প্রক্সি এবং SSL সার্টিফিকেট—এই ধাপগুলো সবার জন্য বাধ্যতামূলক। আপনার ল্যাঙ্গুয়েজের ওপর ভিত্তি করে শুধু নিচের বিষয়গুলো পরিবর্তন হবে:
React ও Vue
এগুলো মূলত Static Sites। এদের কোনো ব্যাকএন্ড সার্ভার বা PM2 দরকার নেই। শুধু npm run build করার পর তৈরি হওয়া ফাইলগুলো Nginx-কে চিনিয়ে দিতে হয়।
React-এর ক্ষেত্রে প্রোজেক্টটি /home/queen এর বদলে /var/www/myapp ফোল্ডারে রাখুন। এতে Nginx সরাসরি ফাইলগুলো পড়ার অনুমতি পাবে এবং আপনি 403 Forbidden সমস্যা থেকে রক্ষা পাবেন।
Nginx-এ proxy_pass এর জায়গায় নিচের কনফিগটি ব্যবহার করুন:
location / {
root /var/www/myapp/dist;
try_files $uri $uri/ /index.html;
}Python ও Django
সার্ভার সেটআপ এবং এনজিনেক্স থিওরি একদম এক। শুধু PM2 এর বদলে আপনি প্রসেস ম্যানেজ করার জন্য gunicorn এবং systemd ব্যবহার করবেন।
PHP ও Laravel
PHP-র ক্ষেত্রে Nginx-এর ভেতরে proxy_pass এর বদলে fastcgi_pass ব্যবহার করতে হয়। এখানে ব্যাকগ্রাউন্ড প্রসেস হিসেবে কাজ করে php-fpm। জাস্ট এই ছোট টেকনিক্যাল পরিবর্তন বাদে বাকি সব সিকিউরিটি রুলস লারাভেল বা ওয়ার্ডপ্রেসের জন্য একই।
Go ও Binary
Go অ্যাপ্লিকেশনগুলো সরাসরি এক্সিকিউটেবল ফাইল হিসেবে চলে। তাই একে জাস্ট লিনাক্সের একটি systemd সার্ভিস হিসেবে ব্যাকগ্রাউন্ডে চালু করে দিলেই হয়। এনজিনেক্স এখানেও রিভার্স প্রক্সি হিসেবেই কাজ করবে।
How to Use This Section
Fast Track: আপনার যদি আগে থেকেই সার্ভার সম্পর্কে বেসিক ধারণা থাকে এবং আপনি খুব দ্রুত একটি Next.js অ্যাপ লাইভ করতে চান, তবে সরাসরি আমাদের First Deployment গাইডটি দেখতে পারেন। সেখানে একটি কমপ্লিট End-to-End চেকলিস্ট দেওয়া আছে।
Foundation থেকে শুরু করুন
Foundation skip করবেন না। Manual process বোঝা ছাড়া Full Production-এর automation-এর কারণ বোঝা যাবে না। কোনো কিছু ভাঙলে কোথায় দেখতে হবে সেটাও বোঝা যাবে না।
প্রতিটি command নিজে চালান
শুধু পড়লে হবে না। একটি real server নিন (Hetzner-এ €4/month থেকে শুরু) এবং প্রতিটি step নিজে করুন।
Foundation সম্পূর্ণ করার পর Full Production-এ যান
Foundation-এ একটি app live করার পর Full Production পড়লে অনেক বেশি sense করবে।