আমরা সবাই সেখানে ছিলাম: আপনাকে দ্রুত একটি সস্তা শেয়ার্ড হোস্টিং প্যাকেজ থেকে কিছু ডাউনলোড করতে হবে (যেমন, IONOS থেকে)। git pull আপনি হয়তো কোনও প্রোগ্রাম চালাতে চাইবেন অথবা ডাটাবেস ব্যবহার করতে চাইবেন, কিন্তু আপনার হোস্টিং প্রোভাইডার SSH অ্যাক্সেস দেয় না - অথবা শুধুমাত্র আরও ব্যয়বহুল প্ল্যানে। প্রায়শই, একমাত্র বিকল্প থাকে FTP এর মাধ্যমে ম্যানুয়ালি ফাইল আপলোড করার ক্লান্তিকর প্রক্রিয়া, যা স্থাপনাকে অপ্রয়োজনীয়ভাবে জটিল করে তোলে এবং ত্রুটির ঝুঁকিতে ফেলে।
একটি সম্ভাব্য সমাধান হল ফাইল সিস্টেমটি মাউন্ট করা sshfs. তত্ত্বগতভাবে, এটি ভালো শোনাচ্ছে: আপনি স্থানীয়ভাবে রিমোট ফোল্ডারটি মাউন্ট করেন এবং ফাইলগুলি আপনার নিজের মেশিনে থাকা অবস্থায় কাজ করেন। এটি করার জন্য, আপনাকে কেবল একটি স্থানীয় ডিরেক্টরি তৈরি করতে হবে এবং FTP/SSH ব্যবহারকারীর মাধ্যমে সার্ভারের সাথে এটি সংযুক্ত করতে হবে। সংযোগ স্থাপন এবং এই ফোল্ডারের জন্য Git প্রস্তুত করার জন্য প্রয়োজনীয় কমান্ডগুলি লিনাক্সের অধীনে এইরকম দেখাচ্ছে::
sudo apt-get install sshfs
mkdir /var/www/remote
cd /var/www/remote
sshfs username@your.host:/ -p 22 /var/www/remote
git config --global --add safe.directory /var/www/remote
git status
...
umount /var/www/remote
সমস্যা: পারফরম্যান্স অত্যন্ত খারাপ। যেহেতু গিট কমান্ডের সাথে লড়াই করে যেমন git status হাজার হাজার ছোট ফাইল অপারেশন করার সময়, যার প্রতিটির জন্য নেটওয়ার্ক অ্যাক্সেসের প্রয়োজন হয়, প্রায়শই সহজতম প্রতিক্রিয়ার জন্যও কয়েক মিনিট অপেক্ষা করতে হয়। এই পরিস্থিতিতে উৎপাদনশীল কাজ কার্যত অসম্ভব। বিশেষ করে অসংখ্য নির্ভরতা সহ প্রকল্পগুলিতে, টার্মিনাল প্রায়শই সম্পূর্ণরূপে জমে যায়, যা হতাশ ব্যবহারকারীদের প্রক্রিয়াটি পরিত্যাগ করতে বাধ্য করে।
ftpsh এর মতো লাইব্রেরিগুলি এই পরিস্থিতির জন্যই বিদ্যমান। এই লাইব্রেরি আপনাকে এমন একটি রিমোট সার্ভারে শেল কমান্ড চালানোর সুযোগ দেয় যা শুধুমাত্র (S)FTP এবং HTTP অ্যাক্সেস অফার করে। কৌশলটি হল একটি PHP স্ক্রিপ্ট অস্থায়ীভাবে আপলোড করা হয়, যা প্রদত্ত কমান্ডগুলি কার্যকর করে এবং আউটপুট ফেরত দেয়। এটি সবকিছু ব্যাকগ্রাউন্ডে ঘটে, তবে এটি একটি বাস্তব শেলের মতো মনে হয়।
ইনস্টলেশন দ্রুত এবং সহজ।:
mkdir ftpsh
cd ftpsh
wget -O ftpsh.sh https://raw.githubusercontent.com/vielhuber/ftpsh/main/ftpsh.sh
chmod +x ftpsh.sh
এরপর, আমরা (S)FTP অ্যাক্সেস ডেটা দিয়ে একটি .env ফাইল তৈরি করব।:
HOST=your-server.com
PORT=22
USERNAME=your-username
PASSWORD=your-password
REMOTE_PATH="/"
WEB_URL="https://your-server.com"
এখন আমরা সার্ভারে যেকোনো কমান্ড কার্যকর করতে পারি, যদি টুলগুলি দূর থেকে পাওয়া যায়।:
ftpsh git status
ftpsh "mysqldump -h xxx --port 3306 -u xxx -p\"xxx\" --routines xxx" > dump.sql
স্ক্রিপ্টটি ব্যাকগ্রাউন্ডে একজন কর্মীকে আপলোড করে, সার্ভারে স্থানীয়ভাবে কমান্ডটি কার্যকর করে (যেখানে এটি দ্রুত), এবং ফলাফল ফেরত দেয়। এটি সীমিত হোস্টিং পরিবেশেও স্থাপনা, ডাটাবেস ডাম্প বা গিট অপারেশনের দক্ষ অটোমেশনের অনুমতি দেয়। এটি ডাটাবেস সিঙ্ক্রোনাইজেশনের জন্য সিঙ্কডিবির সাথে নির্বিঘ্নে সংহত করে।