অসাধারণ! আপনি এখন যাচ্ছেন Laravel VPS Deployment এর PART 2: System Dependencies Installation পর্যায়ে — একেবারে হাতে-কলমে, গভীরভাবে, প্রফেশনাল সফটওয়্যার ইঞ্জিনিয়ার লেভেলে।
এখানে আমি আপনাকে শেখাব:
✅ PHP 8.2 এবং Laravel-এর জন্য প্রয়োজনীয় extension
✅ MySQL ইনস্টলেশন ও নিরাপদ কনফিগারেশন
✅ Redis, Nginx, Supervisor, Git, Composer
✅ phpMyAdmin ইনস্টলেশন ও security tweak
✅ প্রতিটি কমান্ডের ব্যাখ্যা ও উদ্দেশ্য
🔰 PART 2: System Dependencies Installation (Deep Dive)
🎯 আপনি কাজ করছেন: Ubuntu 22.04 VPS →
oleeuser → SSH key login → root disabled
✅ STEP 0: আপনার ইউজার sudo access রাখুন
sudo -v
📌 ব্যাখ্যা: নিশ্চিত হোন যে আপনার olee ইউজার sudo command চালাতে পারে।
✅ STEP 1: System Package Update
sudo apt update && sudo apt upgrade -y
🧠 কেন?
apt update→ system package list আপডেট করেapt upgrade -y→ পুরনো installed প্যাকেজ গুলো আপডেট করে
✅ STEP 2: Install Required Base Tools
sudo apt install curl unzip git software-properties-common ca-certificates lsb-release gnupg -y
📌 কেন?
curl→ API বা ফাইল নামাতে দরকারunzip→.zipফাইল extract করতেgit→ Laravel deploy করতে Git দরকারsoftware-properties-common→ PPA যোগ করতেlsb-release,gnupg→ security keys authenticate করতে
✅ STEP 3: PHP 8.2 এবং Laravel প্রয়োজনীয় Extensions ইনস্টল
🔧 Add PHP Repository
sudo add-apt-repository ppa:ondrej/php -y
sudo apt update
🧠 Ondřej Surý এর PPA Laravel-compatible PHP version দেয়।
🔧 Install PHP 8.2 & Extensions
sudo apt install php8.2 php8.2-cli php8.2-fpm php8.2-mysql php8.2-curl php8.2-mbstring php8.2-xml php8.2-zip php8.2-bcmath php8.2-gd php8.2-common php8.2-readline php8.2-intl -y
📌 Laravel-এর জন্য সব প্রয়োজনীয় extension:
fpm→ Web server integrationmysql→ Database connectionbcmath→ Billing/mathxml,curl,mbstring,intl,zip→ API, Unicode, PDF, etc.
✅ STEP 4: Nginx Web Server ইনস্টল
sudo apt install nginx -y
🧠 Laravel static file serve করে Nginx এর মাধ্যমে → PHP-FPM backend handle করে।
✅ STEP 5: Redis ইনস্টল
sudo apt install redis-server -y
sudo systemctl enable redis
sudo systemctl start redis
📌 Laravel caching, session, queue এর জন্য Redis ব্যবহার করে।
✅ STEP 6: MySQL Server ইনস্টল ও সিকিউর কনফিগারেশন
sudo apt install mysql-server -y
🔐 এখন নিরাপদ কনফিগারেশনের জন্য:
sudo mysql_secure_installation
➡️ প্রশ্ন ও উত্তর:
| প্রশ্ন | উত্তর |
|---|---|
| Validate password plugin? | N (Laravel সাধারণত strong password না রাখলেও কাজ করে) |
| Remove anonymous users? | Y |
| Disallow root remote login? | Y |
| Remove test database? | Y |
| Reload privilege tables? | Y |
🎉 এখন আপনার MySQL সিকিউর করা হয়েছে।
✅ STEP 7: phpMyAdmin ইনস্টল
sudo apt install phpmyadmin php8.2-mbstring php8.2-gettext -y
➡️ ইনস্টলেশনের সময়:
- Web server → Nginx সিলেক্ট করবেন না
- Configure database → Yes
- Password দিন (phpmyadmin-এর জন্য)
🔧 Nginx-এ phpMyAdmin manual কনফিগার করুন
sudo ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin
➡️ এখন phpMyAdmin পাবেন:
http://yourdomain.com/phpmyadmin
🛡️ নিরাপত্তার জন্য phpMyAdmin IP restrict করুন (অপশনাল)
sudo nano /etc/nginx/sites-available/default
phpMyAdmin লোকেশন ব্লকে যোগ করুন:
location /phpmyadmin {
allow your.ip.address.here;
deny all;
root /usr/share/;
index index.php index.html index.htm;
}
✅ STEP 8: Composer ইনস্টল
cd ~
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
➡️ Laravel install/maintain করতে Composer বাধ্যতামূলক।
✅ STEP 9: Supervisor ইনস্টল
sudo apt install supervisor -y
📌 Laravel Queue Worker, Horizon, Octane daemon চালাতে Supervisor ব্যবহার হয়।
✅ STEP 10: সার্ভিস রিস্টার্ট এবং চেক
sudo systemctl restart php8.2-fpm
sudo systemctl restart nginx
sudo systemctl status mysql
sudo systemctl status redis
✅ সারাংশ (Engineer’s Checklist)
| Software | Install হয়েছে? | ব্যাখ্যা |
|---|---|---|
| PHP 8.2 & Extensions | ✅ | Laravel run করার জন্য |
| MySQL + Secure | ✅ | ডেটাবেজ & security |
| Redis | ✅ | Queue/Cache |
| Nginx | ✅ | Web server |
| phpMyAdmin | ✅ | Web-based DB manager |
| Composer | ✅ | Laravel dependency manager |
| Supervisor | ✅ | Daemon/Worker |
আপনি চাইলে এখন PART 3 শুরু করতে পারি: Laravel Install & Nginx Virtual Host b।
বলুন আপনি কবে Laravel deploy শুরু করবেন, আমি সেই অনুযায়ী ভেঙে ভেঙে শুরু করব।