VPS ম্যানেজমেন্ট নিয়ে বিস্তারিত
সাধারণত VPS কিনলে একটা ব্ল্যাংক রিমোট কম্পিউটার পাই আমরা, ঠিক নতুন কম্পিউটারের মত। এখানে সব কিছু নিজে নিজে ইন্সটল করতে হয়। আর বেশির ভাগই কমান্ডলাইন / টার্মিনাল ব্যবহার করে। মূল অপারেটিং সিস্টেম যেমন উইন্ডোজ, লিনাক্স অথবা ম্যাক সার্ভারের কন্ট্রোল প্যানেল থেকে ইন্সটল করা যায়। সেখান থেকে রুট পাসওয়ার্ড পাওয়া যায়। এই রুট পাসওয়ার্ড ব্যবহার করে বাকি কাজ করতে হয়।
রিমোটলি কোন VPS আমরা টার্মিনাল থেকেই এক্সেস করতে পারব। অনেক সুন্দর SSH অ্যাপ রয়েছে। সুন্দর একটা অ্যাপ হচ্ছে Terminus। এর আগে PuTTY জনপ্রিয় ছিল। যে অ্যাপই ব্যবহার করেন, করতে পারেন। রেগুলার টার্মিনাল থেকেও এক্সেস করতে পারেন। আমরা যারা ডেভেলপার, তারা সব কিছু ভিজ্যুয়াল স্টুডিও কোড থেকেই করতে পারব। বিস্তারিত নিচের দিকে লিখেছি।
যে কোন VPS এ লগিন করার জন্য সার্ভারের আইপি এড্রেস, ইউজারনেম এবং পাসওয়ার্ড লাগবে। সাধারণত ইউজারনেম পরিবর্তন না করলে root হয়ে থাকে। আইপি এড্রেস 192.168.106.88 হলে আমরা টার্মিনালে এভাবে লিখবঃ
ssh [email protected] -p 22
এরপর আমাদের পাসওয়ার্ড জিজ্ঞেস করবে। পাসওয়ার্ড টাইপ অথবা পেস্ট করে এন্টার প্রেস করব। পাসওয়ার্ড টাইম করলে বা এন্টার করলে দেখা যাবে না। সব ঠিক থাকলে root ডিরেক্টরিতে এক্সেস পাবো।এটা কম্পিউটারে থাকা ইউজারের হোম ডিরেক্টরির মত। কোন কন্টেন্ট আছে কিনা, তা দেখা যাবে ls কমান্ড দিয়ে।
ls
হিডেন সহ সব ফোল্ডার দেখতেঃ
ls -la /
আমরা কোন ডিরেক্টরিতে রয়েছি, তা দেখা যাবেঃ
pwd
ফাইল সিস্টেমের রুটে যেতেঃ
cd /
এক লেভেল উপরে যেতেঃ
cd ..
হোম ডিরেক্টরিতে যেতে
cd ~
সিম্পল নোড অ্যাপ রান করা
প্রথমে NodeJS ইন্সটল করে নিতে হবেঃ
sudo apt update
sudo apt upgrade -y
sudo apt install nodejs npm -y
এবার আমরা সিম্পল একটা Node.js কোড লিখব। তার জন্য এই কমান্ড গুলো রান করবঃ
mkdir /var/www/hello
cd /var/www/hello
nano server.js
যদি var ডিরেক্টরিতে www ফোল্ডার না থাকে, তাহলে এরর দেখাবে। এই জন্য প্যারেন্ট ডিরেক্টরি তৈরি করার জন্য এভাবে কমান্ড লিখবঃ
mkdir -p /var/www/hello
এরপর hello ফোল্ডারে ন্যাভিগেট করব। এবং server.js নামে একটা ফাইল তৈরি করবঃ
cd /var/www/hello
nano server.js
এবার server.js এ নিচের কোড লিখবঃ
const http = require('http');
const hostname = '0.0.0.0';
const port = 80;
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello World from your VPS!\n');
});
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});
কপি পেস্ট করলেই হবে। এরপর Ctrl + O → Enter → Ctrl + X প্রেস করে ফাইল সেভ করে nano এডিটর থেকে বের হব।
এবার কোড রান করার জন্য লিখবঃ
node server.js
এখন যদি সার্ভারের আইপি এড্রেস ভিজিট করি, তাহলে দেখব Hello World from your VPS!
কোন কারণে যদি কোড এডিট করতে হয়, তাহলে Ctrl + K ব্যবহার করে লাইন বাই লাইন কোড ডিলেট করা যাবে অথবা ব্যাকস্পেস ব্যবহার করেও কোড রিমুভ করা যাবে।
নোড সার্ভার বন্ধ করা এবং টার্মিনালে ফিরে আসার জন্যঃ
Ctrl + C
ডকার ইন্সটল
লিনাক্স সার্ভারে ডকার ইন্সটল করার জন্য নিচের স্টেপ গুলো ফলো করব (Thanks to ChatGPT)।
# Update system
apt update && apt upgrade -y
# Install required packages
apt install -y ca-certificates curl gnupg lsb-release
# Add Docker’s official GPG key
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# Set up repository
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" \
| tee /etc/apt/sources.list.d/docker.list > /dev/null
# Install Docker
apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# Enable and start Docker service
systemctl enable docker
systemctl start docker
# Verify installation
docker --version
docker compose version
এরপর নিচের কমান্ড রান করবঃ
usermod -aG docker $USER
এই কমান্ড ব্যবহার করলে ডকার কমান্ড গুলো sudu কমান্ড ছাড়া ব্যবহার করা যাবে। না হয় প্রতিবার sudu ব্যবহার করতে হবে।
এবার একটা সিম্পল কন্টেইনার টেস্ট করব। তার জন্যঃ
docker run hello-world
এই কন্টেইনার আমরা চাইলে আমাদের সার্ভার আইপি ব্যবহার করে দেখতে পাবো। তার জন্য এই ডকার ইমেজ এক্সপোজ করতে হবেঃ
docker run -d -p 80:80 --name mysite nginx
এখন যদি আমাদের VPS এর আইপিতে যাই, তাহলে ডিফল্ট Nginx পেইজ দেখতে পাবো।
ডকার ইমেজ গুলো দেখতেঃ
docker images
# or
docker image ls
ডকার ইমেজ ডিলেট করা
ডকার ইমেজ ডিলেট করার জন্য docker rmi কমান্ড ব্যবহার করতে হয়। এরপর ইমেজের আইডি ব্যবহার করতে হয়। যেমনঃ
docker rmi 1b44b5a3e06a
cd /var/www/hello
নোড অ্যাপ ডকারে রান করা
এর আগে আমরা /var/www/hello ডিরেক্টরিতে সিম্পল একটা প্রজেক্ট রান করেছি। এবার এই প্রজেক্টের ডকার ইমেজ তৈরি করে রান করব। তার জন্য প্রথমে এই ডিরেক্টরিতে যাবোঃ
cd /var/www/hello
server.js ফাইল ইতিমধ্যে রয়েছে এখানে। না থাকলে তৈরি করে নিব। এরপর package.json তৈরি করবঃ
npm init -y
যা আমাদের নিচের মত করে একটা প্যাকেজ ফাইল তৈরি করে দিবেঃ
{
"name": "hello",
"version": "1.0.0",
"main": "server.js",
"scripts": {
"start": "node server.js"
},
"dependencies": {}
}
এবার ডকার ফাইল তৈরি করবঃ
nano Dockerfile
ডকার ইমেজে কি কি থাকবে, তা লিখবঃ
# Use official Node LTS image
FROM node:22
# Set working directory inside container
WORKDIR /usr/src/app
# Copy package.json first (for caching)
COPY package.json ./
# Install dependencies (empty for now)
RUN npm install
# Copy app source code
COPY . .
# Expose port 80
EXPOSE 80
# Run app
CMD ["node", "server.js"]
এবার উপরের ডেফিনেশন অনুযায়ী ডকার ইমেজ তৈরি করবঃ
docker build -t hello-node .
এবার ডকার কন্টেইনার রান করব।
docker run -d -p 80:80 --name hello-node-app -v /var/www/hello:/usr/src/app hello-node
উপরের কমান্ড একই সাথে VPS এর IP এবং /var/www/hello ফোল্ডারের কোডের সাথে ম্যাপ করবে। এর মানে server.js ফাইল এডিট করলে আউটপুট পরিবর্তন। সার্ভারের আইপি এবার ব্রাউজারে দেখলে server.js রান হবে এবং কোড অনুযায়ী রেসপন্স দেখাবে। যদিও এখনো আমরা হটরিলোড যোগ করিনি, তাই কোড পরিবর্তন করার পর ডকার ইমেজ রিস্টার্ট করতে হবেঃ
docker restart hello-node-app
যদি ডিফল্ট পোর্ট 80 অকোপাইড থাকে, তাহলে এরর দিবে। তাই আমাদের অন্য পোর্ট ব্যবহার করতে হবে। যেমন 8080 ব্যবহার করতে চাইলেঃ
docker run -d -p 8080:80 --name hello-node-app -v /var/www/hello:/usr/src/app hello-node
এরপর ব্রাউজারে গিয়ে http://192.168.106.88:8080 এভাবে VPS এর আইপি অনুযায়ী ব্রাউজ করা যাবে।
ভিজ্যুয়াল স্টুডিও কোড থেকে কোড এডিট
ভিজ্যুয়াল স্টুডিও কোড থেকে কোড এডিটের পাশাপাশি আসলে পুরা VPS ই কন্ট্রোল করা যাবে। তার জন্য Remote – SSH এক্সটেনশন ব্যবহার করব। অফিশিয়াল গাইড।
ইন্সটল করার পর VS কোডের নিচের কোনায় ক্লিক করব। এরপর Connect to Host… এ ক্লিক করব।
এবার + Add New Host এ ক্লিক করে নতুন হোস্ট যোগ করব। বাকিটা টার্মিনালের মতই।
ssh [email protected] -p 22
এই কনফিগারেশন ফাইলটা সেভ করতে বলবে। সাধারণত (~/.ssh/config) লোকেশনে। এর পর পাসওয়ার্ড চাইবে। পাসওয়ার্ড দেওয়ার পর আমরা বাকি সব কিছু ভিস্যুয়াল স্টুডিও কোড থেকেই করতে পারব। রেগুলার একটা প্রজেক্ট যেভাবে ওপেন করি, ঠিক সেভাবে। ভিজ্যুয়াল স্টুডিও কোডে SSH ক্লায়েন্টে কানেক্ট হওয়ার পর Open ফোল্ডারে ক্লিক করব। এরপর কোন ফোল্ডার ওপেন করব, তা সিলেক্ট করব। যেমন /var/www/hello। দেখব সার্ভারে থাকা কোড গুলো এখানে দেখাচ্ছে।
পাসওয়ার্ডলেস লগিন
VS কোডে যতবার কোন হোস্ট কানেক্ট করব, ততবারই আমাদের পাসওয়ার্ড ইনপুট দিতে হবে। পাসওয়ার্ডলেস লগিনের জন্য SSH keys সেটআপ করে নিতে পারি। ফলে বার বার পাসওয়ার্ড ইনপুট দিতে হবে না। তার জন্য নিচের কমান্ড রান করবঃ
ssh-keygen -t ed25519 -C "[email protected]"
এখানে ed25519 হচ্ছে সিকিউর SSH কী অ্যালগরিদম, যা অথেনটিকেশনের জন্য ব্যবহার করব। সাধারণত ইউজার ফোল্ডারের .ssh ফোল্ডারে এই কমান্ড দুইটা ফাইল তৈরি করবে। ডিফল্ট লোকেশনে কী ফাইল তৈরি করার জন্য এন্টার প্রেস করব। আমাদের জিজ্ঞেস করবে কোন passphrase ব্যবহার করব না। passphrase ব্যবহার করলে পাসওয়ার্ডের মতই বার বার জিজ্ঞেস করবে। passphrase ব্যবহার না করলে এন্টার প্রেস করব। এরপর নির্দিষ্ট লোকেশনে নিচের দুইটা ফাইল তৈরি করবে।
- private key:
~/.ssh/id_ed25519 - public key:
~/.ssh/id_ed25519.pub
এবার নিচের কমান্ড রান করবঃ
ssh-copy-id username@your-server-ip
প্রথমবার আমাদের ইউজার পাসওয়ার্ড জিজ্ঞেস করবে। এরপর থেকে আমরা পাসওয়ার্ডলেস লগিন করতে পারব। নিচের কমান্ড রান করে দেখতে পারেনঃ
ssh username@your-server-ip
.ssh ফোল্ডারের ভেতর config নামে একটা ফাইল থাকে, এখানে নিচের মত করে হোস্ট যোগ করতে পারবঃ
Host myserver
HostName <SERVER_IP>
User <USERNAME>
IdentityFile ~/.ssh/id_ed25519
এরপর থেকে IP এবং ইউজারনেমের পরিবর্তে সরাসরি নির্দিষ্ট নামে লগিন করতে পারবঃ
ssh myserver
ভিস্যুয়াল স্টুডিও থেকে VPS ডকার ম্যানেজ
ভিজ্যুয়াল স্টুডিও কোডের জন্য Container Tools রয়েছে। যা ব্যবহার করে সার্ভারে থাকা কন্টেইনার গুলো দেখা, স্টার্ট, স্টপ, ডিলিট সবই করা যায়। অফিশিয়াল গাইড।
সুন্দর না?
এবার আমরা আরেকটা ডকার ইমেজ রান করব। যেখানে নতুন আরেকটা নোড অ্যাপ রান হবে। এর জন্য www ফোল্ডারে নতুন আরেকটা ফোল্ডার তৈরি করে নিব। যেমন note।
mkdir -p /var/www/note
এরপর ঐ ডিরেক্টরিতে যাবোঃ
cd /var/www/note
আপনি চাইলে ভিজ্যুয়াল স্টুডিও কোড থেকেও ফাইল বা ফোল্ডার তৈরি করতে পারবেন। এবার আরেকটা সিম্পল নোড অ্যাপ তৈরি করবঃ
nano server.js
যেখানে নিচের মত করে বা নিজের মত করে কোড লিখবঃ
const http = require('http');
const hostname = '0.0.0.0';
const port = 3001; // different port
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello from second Node app!\n');
});
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});
ফাইলটা সেভ করব (Ctrl+O → Enter → Ctrl+X)। এরপর package.json ফাইল তৈরি করবঃ
npm init -y
এবার ডকার ফাইল তৈরি করবঃ
nano Dockerfile
এর ভেতর লিখবঃ
FROM node:22
WORKDIR /usr/src/app
COPY package.json ./
RUN npm install
COPY . .
EXPOSE 3001
CMD ["node", "server.js"]
- Nulled
- Tech
- Job
- Hacking Course
- News
- Out Knowledge
- Status
- Quotes
- Caption
- Stories
- Education
- Shopping
- Entertainment
- Lifestyle
- Business
- Travel
- Opinion
- Art
- Causes
- Crafts
- Dance
- Drinks
- Film
- Fitness
- Food
- Games
- Gardening
- Health
- Home
- Literature
- Music
- Networking
- Other
- Party
- Religion
- Shopping
- Sports
- Theater
- Wellness