2021年12月21日火曜日

gitのhttpプロトコル

これまでgitをlocalプロトコルgitプロトコルで 使用する方法について書きましたが、
httpならhttps化や好みの認証に対応するなど自由度が高まります。
ということで今回はhttpプロトコルを使ってみます。
なおすでに前回の作業を行いlocal/gitプロトコルでは
使用可能であることを前提とします。
またOSはUbuntu 18.04で、
ウェブサーバとしてApache2が導入済みとします。
認証なしの非常にシンプルな構成についてのみの記述となりますので
必要に応じてカスタマイズしてください。

まずはサーバ側のApacheの設定。以下を実行します。
server# a2enmod cgi
設定ファイル"/etc/apache2/sites-enabled/000-default.conf"の
VirtualHostディレクティブ内に以下を追加します。
SetEnv GIT_PROJECT_ROOT /opt/git
ScriptAlias /git/ /usr/lib/git-core/git-http-backend/
<Directory /usr/lib/git-core>
Require all granted
</Directory>
最後に以下を実行します。
server# /etc/init.d/apache2 reload
続いてクライアント側で以下を実行します。
client$ cd ~
client$ mkdir git
client$ cd git
client$ git clone http://<サーバの名前やIPアドレス>/git/test.git
これで"test"ディレクトリができており、
これが空のリポジトリになっているので、
ここにファイルを登録するなどすることになります。
ただしこのままではpushはできません。
以下で有効にはできます。
server$ cd /opt/git/test.git
server$ git config http.receivepack true
server$ su
server# cd ..
server# chown -R www-data:www-data test.git/
server# chmod -R 777 test.git/
ファイルの所有者を"www-data"に変えてしまうと
local/gitプロトコルでpushできなくなってしまうため、
その対応のためにパーミッションを変えています。
多分これが大きな問題にはならないと思いますが、
そこまでして全対応することもないかと思います。

0 件のコメント:

コメントを投稿