SSHсиз Git

Муну ким башынан өткөргөн эмес: Сиз арзан жалпы хостинг пакетинен (мисалы, 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 сыяктуу китепканалар дал ушул сценарий үчүн бар. Бул китепкана сизге (S)FTP жана HTTP мүмкүнчүлүгүн гана сунуштаган алыскы серверде shell буйруктарын аткарууга мүмкүндүк берет. Айла-амал, берилген буйруктарды аткарып, натыйжаны кайтарып берген PHP скрипти убактылуу жүктөлөт. Мунун баары фондо болот, бирок чыныгы shell сыяктуу сезилет.

Орнотуу тез жана оңой.:

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

Андан кийин, биз (S)FTP кирүү маалыматтары менен .env файлын түзөбүз.:

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

Скрипт фондо жумушчуну жүктөйт, буйрукту серверде жергиликтүү түрдө аткарат (тез болгон жерде) жана натыйжаны кайтарат. Бул чектелген хостинг чөйрөлөрүндө да жайылтууларды, маалымат базасынын дамптарын же Git операцияларын натыйжалуу автоматташтырууга мүмкүндүк берет. Ошондой эле, ал маалымат базасын синхрондоштуруу үчүн syncdb менен үзгүлтүксүз интеграцияланат.

Артка