Git χωρίς SSH

Όλοι μας έχουμε βιώσει κάτι: Πρέπει να κατεβάσετε γρήγορα κάτι από ένα φθηνό πακέτο shared hosting (π.χ., από την IONOS). git pull Μπορεί να θέλετε να εκτελέσετε ένα πρόγραμμα ή να χρησιμοποιήσετε μια βάση δεδομένων, αλλά ο πάροχος φιλοξενίας σας δεν παρέχει πρόσβαση SSH – ή παρέχει μόνο σε πιο ακριβά πακέτα. Συχνά, η μόνη επιλογή που απομένει είναι η κουραστική διαδικασία χειροκίνητης μεταφόρτωσης αρχείων μέσω FTP, η οποία καθιστά τις αναπτύξεις άσκοπα περίπλοκες και επιρρεπείς σε σφάλματα.


Μια πιθανή λύση είναι να προσαρτήσετε το σύστημα αρχείων μέσω sshfs. Θεωρητικά, αυτό ακούγεται καλό: Προσαρτάτε τον απομακρυσμένο φάκελο τοπικά και εργάζεστε σαν τα αρχεία να βρίσκονταν στον δικό σας υπολογιστή. Για να το κάνετε αυτό, απλώς δημιουργείτε έναν τοπικό κατάλογο και τον συνδέετε στον διακομιστή μέσω του χρήστη FTP/SSH. Οι απαραίτητες εντολές για τη δημιουργία της σύνδεσης και την προετοιμασία του Git για αυτόν τον φάκελο μοιάζουν με αυτό στο Linux::

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 δυσκολεύεται με εντολές όπως git status Όταν εκτελείτε χιλιάδες μικρές λειτουργίες αρχείων, καθεμία από τις οποίες απαιτεί πρόσβαση στο δίκτυο, συχνά περιμένετε λεπτά ακόμη και για τις πιο απλές απαντήσεις. Η παραγωγική εργασία είναι σχεδόν αδύνατη υπό αυτές τις συνθήκες. Ειδικά σε έργα με πολλές εξαρτήσεις, το τερματικό συχνά παγώνει εντελώς, αναγκάζοντας τους απογοητευμένους χρήστες να εγκαταλείψουν τη διαδικασία.

Βιβλιοθήκες όπως το ftpsh υπάρχουν ακριβώς για αυτό το σενάριο. Αυτή η βιβλιοθήκη σάς επιτρέπει να εκτελείτε εντολές shell σε έναν απομακρυσμένο διακομιστή που προσφέρει μόνο πρόσβαση (S)FTP και HTTP. Το κόλπο είναι ότι μεταφορτώνεται προσωρινά ένα σενάριο PHP, το οποίο εκτελεί τις δεδομένες εντολές και επιστρέφει την έξοδο. Όλα αυτά συμβαίνουν στο παρασκήνιο, αλλά δίνουν την αίσθηση ενός πραγματικού shell.

Η εγκατάσταση είναι γρήγορη και εύκολη.:

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

Στη συνέχεια, δημιουργούμε ένα αρχείο .env με τα δεδομένα πρόσβασης (S)FTP.:

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

Το σενάριο ανεβάζει έναν worker στο παρασκήνιο, εκτελεί την εντολή τοπικά στον διακομιστή (όπου είναι γρήγορο) και επιστρέφει το αποτέλεσμα. Αυτό επιτρέπει την αποτελεσματική αυτοματοποίηση των αναπτύξεων, των dumps βάσης δεδομένων ή των λειτουργιών Git, ακόμη και σε περιορισμένα περιβάλλοντα φιλοξενίας. Επίσης, ενσωματώνεται άψογα με το syncdb για συγχρονισμό βάσεων δεδομένων.

Πίσω