Git без SSH

Хто з цим не стикався: Вам потрібно швидко завантажити щось на дешевому пакеті спільного хостингу (наприклад, від 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. Хитрощі полягають у тому, що тимчасово завантажується PHP-скрипт, який виконує задані команди та повертає результат. Все це відбувається у фоновому режимі, але відчувається як справжня оболонка.

Встановлення швидке та просте.:

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

Скрипт завантажує воркер у фоновому режимі, виконує команду локально на сервері (де це швидко) та повертає результат. Це дозволяє ефективно автоматизувати розгортання, дампи бази даних або операції Git, навіть в обмежених середовищах хостингу. Він також бездоганно інтегрується з syncdb для синхронізації бази даних.

Назад