দুঃখিত, আমি UFW ফায়ারওয়াল কনফিগারেশন দিয়ে আপনি যে সঠিকভাবে সেটআপ করেছেন, সেটা ভুলভাবে বাদ দিয়ে দিয়েছি। এখন UFW (Uncomplicated Firewall) কনফিগারেশন সহ ReactJS ফ্রন্টএন্ড এবং Node.js ব্যাকএন্ড ডেপ্লয়ের জন্য সম্পূর্ণ প্রক্রিয়া বুলেট পয়েন্ট ছাড়াই উপস্থাপন করছি।
Part 2: ReactJS ফ্রন্টএন্ড এবং Node.js ব্যাকএন্ড ডেপ্লয়
Step 1: DNS কনফিগারেশন
প্রথমে, আপনার shekhhasina.com এবং api.shekhhasina.com ডোমেইনগুলিকে VPS আইপির সাথে পয়েন্ট করতে হবে। আপনাকে DNS প্যানেল থেকে A রেকর্ড আপডেট করতে হবে। shekhhasina.com এর জন্য A রেকর্ড তৈরি করুন:
DNS রেকর্ড কনফিগারেশন:
- Name:
shekhhasina.com - Type:
A - TTL: 14400 (ডিফল্ট)
- RDATA:
195.35.45.104(আপনার VPS আইপি)
তারপর api.shekhhasina.com এর জন্য একই ভাবে A রেকর্ড তৈরি করুন:
- Name:
api.shekhhasina.com - Type:
A - TTL: 14400 (ডিফল্ট)
- RDATA:
195.35.45.104(আপনার VPS আইপি)
এটা নিশ্চিত করুন যে ডোমেইনগুলি সঠিকভাবে VPS আইপির সাথে পয়েন্ট করছে।
Step 2: ReactJS ফ্রন্টএন্ড ডেপ্লয়
আপনার ReactJS অ্যাপ্লিকেশন তৈরি করতে হবে এবং সেটি VPS সার্ভারে হোস্ট করতে হবে।
প্রথমে ReactJS অ্যাপ্লিকেশন তৈরি করুন:
npx create-react-app shekhhasina-frontend
cd shekhhasina-frontend
তারপর ReactJS অ্যাপ্লিকেশন বিল্ড করতে হবে:
npm run build
এটি build/ ফোল্ডার তৈরি করবে, যেখানে আপনার ReactJS অ্যাপ্লিকেশনের প্রোডাকশন ফাইল থাকবে। এরপর, এই ফোল্ডারটি Nginx এর মাধ্যমে সার্ভ করতে হবে।
আপনার build/ ফোল্ডারের ফাইলগুলো /var/www/html ফোল্ডারে কপি করুন:
sudo cp -r build/* /var/www/html/
এখন Nginx কনফিগারেশন ফাইল তৈরি করুন, যাতে ReactJS অ্যাপ্লিকেশন shekhhasina.com ডোমেইন দিয়ে এক্সেস করা যায়। /etc/nginx/sites-available/shekhhasina.com ফাইলটি তৈরি করুন:
sudo nano /etc/nginx/sites-available/shekhhasina.com
এবং নিচের কনফিগারেশনটি যোগ করুন:
server {
listen 80;
server_name shekhhasina.com www.shekhhasina.com;
location / {
root /var/www/html;
try_files $uri /index.html;
}
error_log /var/log/nginx/shekhhasina.com_error.log;
access_log /var/log/nginx/shekhhasina.com_access.log;
}
এটি আপনার ReactJS অ্যাপ্লিকেশনকে Nginx দিয়ে সার্ভ করবে।
এখন Nginx কনফিগারেশন সক্রিয় করতে হবে:
sudo ln -s /etc/nginx/sites-available/shekhhasina.com /etc/nginx/sites-enabled/
Nginx সার্ভার রিস্টার্ট করতে:
sudo systemctl restart nginx
এখন আপনার ReactJS অ্যাপ্লিকেশন shekhhasina.com ডোমেইন দিয়ে এক্সেসযোগ্য হবে।
Step 3: Node.js ব্যাকএন্ড ডেপ্লয়
এখন Node.js API সেটআপ করতে হবে। প্রথমে, Node.js অ্যাপ্লিকেশন তৈরি করুন। Express ব্যবহার করে একটি সাধারণ API তৈরি করুন:
mkdir ~/shekhhasina-backend
cd ~/shekhhasina-backend
npm init -y
npm install express
এখন app.js ফাইল তৈরি করুন এবং নিচের কোডটি লিখুন:
const express = require('express');
const app = express();
const port = 3000;
app.get('/api', (req, res) => {
res.json({ message: 'Hello from backend!' });
});
app.listen(port, () => {
console.log(`Backend API listening at http://localhost:${port}`);
});
এখন, PM2 ব্যবহার করে Node.js API সার্ভারে ব্যাকগ্রাউন্ডে চালান:
pm2 start app.js --name "shekhhasina-backend"
এটি Node.js API কে ব্যাকগ্রাউন্ডে চালাবে।
Step 4: Nginx কনফিগারেশন (Node.js API)
এখন Node.js API (যেটি api.shekhhasina.com ডোমেইন দিয়ে এক্সেস হবে) এর জন্য Nginx কনফিগারেশন ফাইল তৈরি করতে হবে।
/etc/nginx/sites-available/api.shekhhasina.com ফাইলটি তৈরি করুন:
sudo nano /etc/nginx/sites-available/api.shekhhasina.com
এবং নীচের কনফিগারেশনটি যোগ করুন:
server {
listen 80;
server_name api.shekhhasina.com;
location / {
proxy_pass http://localhost:3000; # আপনার Node.js API পোর্ট
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
error_log /var/log/nginx/api.shekhhasina.com_error.log;
access_log /var/log/nginx/api.shekhhasina.com_access.log;
}
এখন Nginx কনফিগারেশন সক্রিয় করতে হবে:
sudo ln -s /etc/nginx/sites-available/api.shekhhasina.com /etc/nginx/sites-enabled/
Nginx সার্ভার রিস্টার্ট করতে:
sudo systemctl restart nginx
এখন আপনার Node.js API api.shekhhasina.com ডোমেইন দিয়ে এক্সেসযোগ্য হবে।
Step 5: SSL সার্টিফিকেট ইনস্টল করা (Let’s Encrypt)
এখন HTTPS সুরক্ষা যোগ করতে Let’s Encrypt ব্যবহার করে SSL সার্টিফিকেট ইনস্টল করতে হবে।
Certbot ইনস্টল করতে:
sudo apt install certbot python3-certbot-nginx
SSL সার্টিফিকেট প্রাপ্তি:
sudo certbot --nginx -d shekhhasina.com -d www.shekhhasina.com
sudo certbot --nginx -d api.shekhhasina.com
SSL সার্টিফিকেট রিনিউ করা:
sudo certbot renew --dry-run
এখন আপনার shekhhasina.com এবং api.shekhhasina.com ডোমেইনগুলিতে HTTPS সুরক্ষা থাকবে।
UFW (Uncomplicated Firewall) কনফিগারেশন
আপনার UFW (Uncomplicated Firewall) সেটআপ করতে হলে, সার্ভারের সুরক্ষা নিশ্চিত করার জন্য কিছু পোর্ট খুলতে হবে। এখানে, HTTP (80) এবং HTTPS (443) পোর্ট খুলতে হবে, এছাড়া Node.js API (3000) পোর্টও খুলতে হবে যদি আপনার অ্যাপ্লিকেশন সেই পোর্টে রান করে।
প্রথমে UFW স্ট্যাটাস চেক করুন:
এটি নিশ্চিত করবে যে UFW সিস্টেমে অ্যাকটিভ আছে কিনা এবং কী পোর্টগুলো খোলা আছে:
sudo ufw status
পোর্ট 80 (HTTP) এবং 443 (HTTPS) খুলুন:
যেহেতু আপনার সার্ভারটি HTTP এবং HTTPS প্রোটোকলে চলবে, তাই এই পোর্টগুলো খোলার জন্য নিচের কমান্ডটি ব্যবহার করুন:
sudo ufw allow 80,443/tcp
পোর্ট 3000 খুলুন (যদি Node.js API ব্যবহার করা হয়):
আপনি যদি Node.js API ব্যবহার করছেন এবং 3000 পোর্টে অ্যাপ্লিকেশনটি রান করছে, তবে এই পোর্টটি খুলতে হবে:
sudo ufw allow 3000
UFW সক্রিয় করুন:
এটি নিশ্চিত করবে যে UFW সক্রিয় এবং আপনার পোর্টগুলো খোলা রয়েছে:
sudo ufw enable
UFW রোলআউট চেক করুন:
এখন আপনি sudo ufw status কমান্ড দিয়ে চেক করতে পারবেন যে পোর্টগুলো সঠিকভাবে খোলা আছে কিনা।
- UFW স্ট্যাটাস চেক করুন:
sudo ufw status - পোর্ট 80 (HTTP) এবং 443 (HTTPS) খুলুন:
sudo ufw allow 80,443/tcp - পোর্ট 3000 খুলুন (যদি Node.js API ব্যবহার করা হয়):
sudo ufw allow 3000 - UFW সক্রিয় করুন:
sudo ufw enable
এখন আপনি shekhhasina.com (ফ্রন্টএন্ড) এবং api.shekhhasina.com (ব্যাকএন্ড) এর মাধ্যমে অ্যাপ্লিকেশন এক্সেস করতে পারবেন।
সারাংশ:
- ReactJS ফ্রন্টএন্ড: Nginx দিয়ে /var/www/html ফোল্ডারে build/ ফোল্ডার কপি করে হোস্ট করা হয়েছে এবং shekhhasina.com ডোমেইন দিয়ে এক্সেসযোগ্য করা হয়েছে।
- Node.js API: PM2 দিয়ে Node.js API চালানো হয়েছে এবং api.shekhhasina.com ডোমেইন দিয়ে এক্সেসযোগ্য করা হয়েছে।
- SSL সার্টিফিকেট: Let’s Encrypt ব্যবহার করে ReactJS এবং Node.js API ডোমেইনগুলিতে HTTPS সুরক্ষা যোগ করা হয়েছে।
- UFW ফায়ারওয়াল: সঠিকভাবে পোর্ট 80, 443 এবং 3000 খোলা হয়েছে যাতে HTTP, HTTPS এবং Node.js API এক্সেসযোগ্য হয়।
এখন আপনার ReactJS ফ্রন্টএন্ড এবং Node.js ব্যাকএন্ড একসাথে সঠিকভাবে হোস্ট হচ্ছে এবং সুরক্ষিত HTTPS সার্টিফিকেট ব্যবহার করছে।