Kiu ne spertis tion: Vi bezonas rapide elŝuti ion per malmultekosta komuna gastiga pakaĵo (ekz., de IONOS). git pull Eble vi volas ruligi programon aŭ uzi datumbazon, sed via retprovizanto ne donas SSH-aliron - aŭ nur en pli multekostaj planoj. Ofte, la sola restanta eblo estas la teda procezo de mane alŝuti dosierojn per FTP, kio igas deplojojn nenecese komplikaj kaj emaj al eraroj.
Unu ebla solvo estas munti la dosiersistemon per sshfs. Teorie, tio sonas bone: Vi muntas la malproksiman dosierujon loke kaj laboras kvazaŭ la dosieroj estus sur via propra maŝino. Por fari tion, vi simple kreas lokan dosierujon kaj konektas ĝin al la servilo per la FTP/SSH-uzanto. La necesaj komandoj por establi la konekton kaj prepari Git por ĉi tiu dosierujo aspektas jene sub Linukso::
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
La problemo: La rendimento estas terura. Ĉar Git luktas kun komandoj kiel git status Kiam oni plenumas milojn da malgrandaj dosieroperacioj, ĉiu el kiuj postulas retaliron, oni ofte atendas minutojn eĉ por la plej simplaj respondoj. Produktiva laboro estas preskaŭ neebla sub tiaj cirkonstancoj. Precipe en projektoj kun multaj dependecoj, la terminalo ofte tute frostiĝas, devigante frustritajn uzantojn forlasi la procezon.
Bibliotekoj kiel ftpsh ekzistas ĝuste por ĉi tiu scenaro. La biblioteko ebligas ekzekuti ŝelkomandojn sur fora servilo kiu nur ofertas (S)FTP kaj HTTP-aliron. La lertaĵo: PHP-skripto estas provizore alŝutita, kiu efektivigas donitajn komandojn kaj resendas la eligon. Ĉio ĉi okazas en la fono, sed sentas kiel vera ŝelo.
La instalado estas rapida kaj facila.:
mkdir ftpsh
cd ftpsh
wget -O ftpsh.sh https://raw.githubusercontent.com/vielhuber/ftpsh/main/ftpsh.sh
chmod +x ftpsh.sh
Tiam ni kuŝigis .env kun la (S)FTP-alirdatumoj al:
HOST=your-server.com
PORT=22
USERNAME=your-username
PASSWORD=your-password
REMOTE_PATH="/"
WEB_URL="https://your-server.com"
Nun ni povas plenumi iujn ajn komandojn sur la servilo, kondiĉe ke la iloj estas haveblaj malproksime.:
ftpsh git status
ftpsh "mysqldump -h xxx --port 3306 -u xxx -p\"xxx\" --routines xxx" > dump.sql
La skripto alŝutas laboriston en la fono, rulas la komandon loke sur la servilo (kie ĝi estas rapida) kaj resendas la rezulton. Ĉi tio permesas deplojojn, datumbazajn rubejojn aŭ Git-operaciojn esti aŭtomatigitaj efike, eĉ en limigitaj gastigaj medioj. Ekzemple, ĝi ankaŭ funkcias perfekte kun syncdb por sinkronigi datumbazojn.