Git SSH nélkül

Ki ne tapasztalta volna már ezt: Gyorsan le kell töltened valamit egy olcsó megosztott tárhelycsomagról (pl. az IONOS-tól). git pull Lehet, hogy egy programot szeretne futtatni vagy adatbázist használni, de a tárhelyszolgáltatója nem biztosít SSH-hozzáférést – vagy csak a drágább csomagokban. Gyakran az egyetlen lehetőség a fájlok FTP-n keresztüli manuális feltöltésének fárasztó folyamata, ami szükségtelenül bonyolulttá és hibákra hajlamosítóvá teszi a telepítéseket.


Egy lehetséges megoldás a fájlrendszer csatolása a következőn keresztül: sshfs. Elméletben ez jól hangzik: Helyben csatolod a távoli mappát, és úgy dolgozol, mintha a fájlok a saját gépeden lennének. Ehhez egyszerűen létrehozol egy helyi könyvtárat, és FTP/SSH felhasználón keresztül csatlakoztatod a szerverhez. A kapcsolat létrehozásához és a Git előkészítéséhez szükséges parancsok ehhez a mappához Linux alatt így néznek ki::

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

A probléma: A teljesítmény siralmas. Mivel a Git nehezen boldogul olyan parancsokkal, mint a git status Több ezer apró fájlművelet végrehajtása során, amelyek mindegyike hálózati hozzáférést igényel, gyakran perceket kell várni még a legegyszerűbb válaszokra is. Ilyen körülmények között a produktív munka gyakorlatilag lehetetlen. Különösen a számos függőséggel rendelkező projekteknél a terminál gyakran teljesen lefagy, arra kényszerítve a frusztrált felhasználókat, hogy feladják a folyamatot.

Pontosan erre a forgatókönyvre léteznek olyan függvénykönyvtárak, mint az ftpsh . Ez a függvénykönyvtár lehetővé teszi shell parancsok végrehajtását egy távoli szerveren, amely csak (S)FTP és HTTP hozzáférést kínál. A trükk az, hogy ideiglenesen feltölt egy PHP szkriptet, amely végrehajtja a megadott parancsokat és visszaadja a kimenetet. Mindez a háttérben történik, de egy igazi shellnek tűnik.

A telepítés gyors és egyszerű.:

mkdir ftpsh
cd ftpsh
wget -O ftpsh.sh https://raw.githubusercontent.com/vielhuber/ftpsh/main/ftpsh.sh
chmod +x ftpsh.sh

Ezután létrehozunk egy .env fájlt az (S)FTP hozzáférési adatokkal.:

HOST=your-server.com
PORT=22
USERNAME=your-username
PASSWORD=your-password
REMOTE_PATH="/"
WEB_URL="https://your-server.com"

Most már bármilyen parancsot végrehajthatunk a szerveren, feltéve, hogy az eszközök távolról elérhetők.:

ftpsh git status
ftpsh "mysqldump -h xxx --port 3306 -u xxx -p\"xxx\" --routines xxx" > dump.sql

A szkript feltölt egy munkafolyamatot a háttérben, végrehajtja a parancsot helyben a szerveren (ahol gyors), és visszaadja az eredményt. Ez lehetővé teszi a telepítések, az adatbázis-kiíratások vagy a Git-műveletek hatékony automatizálását, még korlátozott tárhelykörnyezetekben is. Zökkenőmentesen integrálható a syncdb- vel az adatbázis-szinkronizáláshoz.

Vissza