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 アクセスのみを提供するリモート サーバー上でシェル コマンドを実行できるようになります。秘訣: 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とも完全に連携します。

バック