Git tanpa SSH

Siapa yang belum pernah mengalami ini: Anda perlu mengunduh sesuatu dengan cepat di paket shared hosting murah (misalnya, dari IONOS). git pull Anda mungkin ingin menjalankan program atau menggunakan basis data, tetapi penyedia hosting Anda tidak memberikan akses SSH – atau hanya pada paket yang lebih mahal. Seringkali, satu-satunya pilihan yang tersisa adalah proses yang membosankan yaitu mengunggah file secara manual melalui FTP, yang membuat penerapan menjadi rumit dan rentan terhadap kesalahan.


Salah satu solusi yang mungkin adalah dengan memasang sistem file melalui sshfs. Secara teori, ini terdengar bagus: Anda memasang folder jarak jauh secara lokal dan bekerja seolah-olah file tersebut berada di mesin Anda sendiri. Untuk melakukan ini, Anda cukup membuat direktori lokal dan menghubungkannya ke server melalui pengguna FTP/SSH. Perintah yang diperlukan untuk membuat koneksi dan mempersiapkan Git untuk folder ini terlihat seperti ini di 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

Masalahnya: Kinerjanya sangat buruk. Karena Git kesulitan menangani perintah seperti git status Saat melakukan ribuan operasi file kecil, yang masing-masing membutuhkan akses jaringan, seseorang sering kali menunggu ber menit-menit bahkan untuk respons yang paling sederhana sekalipun. Pekerjaan produktif hampir tidak mungkin dilakukan dalam keadaan ini. Terutama dalam proyek dengan banyak ketergantungan, terminal sering kali membeku sepenuhnya, memaksa pengguna yang frustrasi untuk menghentikan proses tersebut.

Pustaka seperti ftpsh ada tepat untuk skenario ini. Pustaka ini memungkinkan Anda untuk menjalankan perintah shell pada server jarak jauh yang hanya menawarkan akses (S)FTP dan HTTP. Triknya adalah skrip PHP diunggah sementara, yang menjalankan perintah yang diberikan dan mengembalikan outputnya. Semua ini terjadi di latar belakang, tetapi terasa seperti shell sungguhan.

Instalasinya cepat dan mudah.:

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

Selanjutnya, kita membuat file .env dengan data akses (S)FTP.:

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

Sekarang kita dapat menjalankan perintah apa pun di server, asalkan alat-alat tersebut tersedia dari jarak jauh.:

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

Skrip ini mengunggah worker di latar belakang, mengeksekusi perintah secara lokal di server (di mana prosesnya cepat), dan mengembalikan hasilnya. Hal ini memungkinkan otomatisasi penyebaran, pencadangan basis data, atau operasi Git yang efisien, bahkan pada lingkungan hosting yang terbatas. Skrip ini juga terintegrasi dengan mulus dengan syncdb untuk sinkronisasi basis data.

Kembali