Git-based Deployment Workflow

Local Computer
      ↓
git add
      ↓
git commit
      ↓
git push
      ↓
GitHub Repository
      ↓
VPS Server
      ↓
git pull
      ↓
Laravel Project Update


১. VPS-এ SSH দিয়ে Login

প্রথমে SSH-এর মাধ্যমে VPS server-এ login করুন:

ssh username@server-ip

উদাহরণ:

ssh user@your-server-ip

তারপর project directory-তে যান:

cd /home/user/public_html

২. VPS-এ Git Install করা

AlmaLinux বা RHEL-based server-এ:

sudo dnf install git -y

Git install হয়েছে কি না:

git --version

৩. VPS-এ Git Configuration

VPS-এ commit করার প্রয়োজন হলে Git identity সেট করুন:

git config --global user.name "Production VPS"
git config --global user.email "your@email.com"

শুধু নির্দিষ্ট project-এর জন্য:

git config user.name "Production VPS"
git config user.email "your@email.com"

৪. Private GitHub Repository-এর জন্য SSH Key

Private repository access করার জন্য VPS-এর SSH key GitHub account-এ add করতে হবে।

VPS-এ key আছে কি না দেখুন:

ls -la ~/.ssh

Public key দেখতে:

cat ~/.ssh/id_rsa.pub

যদি key না থাকে:

ssh-keygen -t ed25519 -C "your@email.com"

তারপর public key copy করে GitHub-এর:

Settings → SSH and GPG keys → New SSH key

এ add করুন।

Repository-এর URL SSH করে দিন

আপনার project folder-এ যান:

cd /home/user/public_html

তারপর:

git remote set-url origin git@github.com:yourusername/my-project.git

৫. GitHub Connection Test

ssh -T git@github.com

সফল হলে GitHub authentication-এর confirmation message দেখাবে।

Hi yourusername! You've successfully authenticated, but GitHub does not provide shell access.


If Shows

Permissions 0644 for '/home/nomanit/.ssh/id_rsa' are too open. It is required that your private key files are NOT accessible by others. This private key will be ignored. Load key "/home/nomanit/.ssh/id_rsa": bad permissions git@github.com: Permission denied (publickey).

Then

Apply

Private key-এর permission ঠিক করুন

আপনি যেহেতু nomanit user দিয়ে login করেছেন, এই command চালান:

chmod 600 ~/.ssh/id_rsa

তারপর public key-এর permission:

chmod 644 ~/.ssh/id_rsa.pub

SSH folder-এর permission-ও ঠিক রাখুন:

chmod 700 ~/.ssh

এখানে id_rsa হলো private key—এটার permission 600 হওয়া উচিত।

আবার GitHub connection test করুন

ssh -T git@github.com

সফল হলে এমন message পাবেন:

Hi nomancse19! You've successfully authenticated,
but GitHub does not provide shell access.

৬. Project Clone করা

যদি VPS-এ project আগে না থাকে:

cd /home/user
git clone git@github.com:username/project-name.git public_html

অথবা নির্দিষ্ট branch clone করতে:

git clone -b main git@github.com:username/project-name.git public_html

৭. Existing Project-এ Git Connect করা

যদি project আগে থেকেই VPS-এ থাকে এবং .git folder না থাকে:

cd /home/user/public_html
git init
git remote add origin git@github.com:username/project-name.git
git fetch origin
git switch -c main --track origin/main

তবে project-এর existing files থাকলে আগে backup নেওয়া জরুরি।

৮. VPS থেকে সর্বশেষ Code Pull করা

cd /home/user/public_html
git pull origin main

যদি branch configured থাকে:

git pull

৯. Laravel Project Update করার পর প্রয়োজনীয় Commands

Laravel project হলে সাধারণত:

composer install --no-dev --optimize-autoloader
php artisan migrate --force
php artisan optimize:clear
php artisan config:cache
php artisan route:cache
php artisan view:cache

সতর্কতা: Production server-এ migrate --force চালানোর আগে database backup নেওয়া উচিত।