First Deployment
এটি Foundation সেকশনের শেষ page এবং একটি সম্পূর্ণ checklist। আগের page-গুলোতে প্রতিটি বিষয় বিস্তারিত শিখেছেন — এখানে সেগুলো একসাথে কোন ক্রমে করতে হয় তা দেখবেন।
How to Use This Page
এই page-এ প্রতিটি command আবার লেখা হয়নি — কারণ সেগুলো আগের page-গুলোতে ব্যাখ্যাসহ আছে। এখানে শুধু ক্রম এবং যেটি ভুল হলে আটকে যাবেন সেই বিষয়গুলো আছে।
প্রথমবার deploy করছেন? প্রতিটি ধাপের link-এ গিয়ে বিস্তারিত পড়ুন। দ্বিতীয়বার থেকে শুধু এই checklist-টুকুই যথেষ্ট।
The Order That Matters
এই ক্রমটি এলোমেলো নয়। প্রতিটি ধাপ আগেরটির উপর নির্ভরশীল:
Server তৈরি
↓
Security (এর আগে কিছু deploy করবেন না)
↓
Node.js + Git (এগুলো ছাড়া পরের কিছুই চলবে না)
↓
Nginx → SSL
↓
GitHub থেকে code আনা
↓
.env তৈরি (build-এর আগে)
↓
npm run build → PM2 দিয়ে চালু
↓
Liveসবচেয়ে common ভুল: .env তৈরি করার আগে npm run build চালানো। Next.js build-এর সময়েই environment variable পড়ে নেয়, তাই পরে .env বানালে build আবার করতে হবে।
The Checklist
Create App Locally and Push to GitHub
আপনার নিজের computer-এ app তৈরি করে GitHub-এ push করুন:
npx create-next-app@latest myapp
cd myapp
git init
git add .
git commit -m "initial commit"
git branch -M main
git remote add origin https://github.com/YOUR_USERNAME/myapp.git
git push -u origin mainPush করার আগে .gitignore-এ .env আছে কিনা দেখে নিন।
Prepare the Server
- Ubuntu 24.04 LTS server তৈরি — Choose a Server
- SSH key দিয়ে login, password ও root login বন্ধ, UFW firewall — Secure the Server
- Git এবং Node.js (NVM দিয়ে) — Install Node.js
Security ধাপটি কখনো পরে করব ভেবে রাখবেন না। একটি নতুন server internet-এ আসার কয়েক মিনিটের মধ্যেই automated bot scan শুরু করে।
Set Up Nginx and SSL
- Nginx install ও reverse proxy config — Nginx & Reverse Proxy
- Domain-এর A record server IP-তে point করা
- Certbot দিয়ে SSL — SSL & HTTPS
এই ধাপে browser-এ 502 Bad Gateway দেখলে চিন্তার কিছু নেই — app এখনো চালু হয়নি, এটাই স্বাভাবিক।
Get the Code on the Server
- GitHub-এর সাথে server connect (Deploy Key বা PAT) — GitHub Setup
- Home directory-তে clone করুন
cd ~
git clone git@github.com:YOUR_USERNAME/myapp.git
cd myappCreate .env, Then Build and Start
-
.envতৈরি ওchmod 600— Environment Variables -
npm installএবংnpm run build - PM2 দিয়ে চালু ও auto-restart — PM2 — Process Manager
npm install
npm run build
pm2 start npm --name "myapp" -- start
pm2 save
pm2 startuppm2 startup শুধু একটি command print করে — নিজে চালায় না। ওই sudo env PATH=... দিয়ে শুরু হওয়া command-টি copy করে আলাদাভাবে run করতে হবে। এই ধাপ মিস করলে server reboot-এর পর app আর উঠবে না।
Test Live
Browser-এ আপনার domain খুলুন। Site দেখা যাচ্ছে এবং padlock icon আছে — অভিনন্দন, আপনার First Deployment সফল।
Where Everything Lives
Deploy শেষে আপনার server-এর গঠন এরকম হবে:
- .env
- package.json
মনে রাখার সহজ নিয়ম — server-এর config ফাইল থাকে /etc/-তে, আর আপনার নিজের ফাইল ও log থাকে /home/-এ।
Troubleshooting
| সমস্যা | কারণ | সমাধান |
|---|---|---|
| 502 Bad Gateway | App চালু নেই বা crash করেছে | pm2 list ও pm2 logs myapp দেখুন |
| Could not find a production build | npm run build করা হয়নি | npm run build চালিয়ে pm2 restart myapp |
| Nginx-এর default page | Nginx reload করা হয়নি | sudo nginx -t তারপর sudo systemctl reload nginx |
| Port 3000 busy | আগের একটি process চলছে | sudo ss -tlnp দিয়ে দেখুন, pm2 delete myapp করে আবার start করুন |
| Reboot-এর পর site down | pm2 startup-এর command চালানো হয়নি | pm2 startup আবার চালিয়ে printed command-টি run করুন |
| Permission denied | sudo ছাড়া system ফাইল এডিট | Command-এর আগে sudo দিন |
Update Workflow
এরপর থেকে code পরিবর্তন করলে এই দুটি ধাপ:
git add .
git commit -m "update message"
git pushcd ~/myapp
git pull
npm install # শুধু নতুন package যোগ হলে
npm run build
pm2 restart myapp.env পরিবর্তন হলে সেটি server-এ manually update করতে হবে — .env কখনো Git-এ যায় না, তাই git pull এটি আনবে না।
Real-World Note
এই manual process-টি প্রতিবার করা ক্লান্তিকর — এবং সেখানেই মানুষ ভুল করে। কেউ npm run build ভুলে যায়, কেউ ভুল server-এ deploy করে ফেলে।
এই কারণেই পরবর্তী ধাপ হলো automation — GitHub Actions বা Docker দিয়ে এই পুরো প্রক্রিয়াটি একটি git push-এ সীমাবদ্ধ করা। কিন্তু automation তখনই লিখতে পারবেন যখন প্রতিটি ধাপ হাতে করে বুঝেছেন। এখন আপনি বুঝেছেন।
Quick Check
- Server secure — password login বন্ধ, firewall চালু?
-
node -vএবংgit --versionকাজ করছে? -
.envতৈরি হয়েছে এবংchmod 600করা? -
npm run buildকোনো error ছাড়াই শেষ হয়েছে? -
pm2 list-এ statusonline? -
pm2 startup-এর printed command চালানো হয়েছে? - Browser-এ padlock সহ site দেখা যাচ্ছে?
পরবর্তী → Server Deployment Overview