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.

Ada perpustakaan seperti ftpsh untuk skenario ini. Pustaka memungkinkan untuk menjalankan perintah shell pada server jarak jauh yang hanya menawarkan akses (S)FTP dan HTTP. Caranya: Skrip PHP diunggah sementara, yang menjalankan perintah tertentu dan mengembalikan hasilnya. Ini semua terjadi di latar belakang, namun terasa seperti cangkang 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

Kemudian kami meletakkan .env dengan data akses (S)FTP ke:

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 mengunggah pekerja di latar belakang, menjalankan perintah secara lokal di server (yang cepat) dan mengembalikan hasilnya. Hal ini memungkinkan penerapan, dump database, atau operasi Git diotomatisasi secara efisien, bahkan pada lingkungan hosting terbatas. Misalnya, ini juga berfungsi sempurna dengan syncdb untuk menyinkronkan database.

Kembali