gitサーバーへの道

Pocket
LINEで送る
GREE にシェア
LinkedIn にシェア

こんにちわ。
 

バージョン管理は、プログラムの保険という考えに、賛同する、下駄です。
 

「git」とかけまして、
 

「地震発生」と、ときます。
 

そのココロは・・・
 

じっと(git)することで、安心できます。

gitがnginxを通じてサーバーリポジトリを構築できるらしい

独自のPHPフレームワークを作っていた時に、composerの機能を持たせたく、
 

github以外にも、自前のセキュアな環境でリポジトリを持っておきたいと考え、調べてみたら、
 

どうやら、gitリポジトリをnginxを通してデータのcloneうやpush,pullができるという事を見つけました。
 

やり方は非常に簡単で、”fcgiwrap”というモジュールを通して行うだけなのだそうです。
 

とりあえず、dockerで構築して試してみることにします。
 

osは”ubuntu”
 

通常のwebサーバーと共存できるようにすることも重要な要素と考えておきます。
 

インストールへの道

インストールはいろいろなサイトに書かれているけど、あくまで、僕の環境での構築手順を書いておきます。
 

なお、webサーバーは構築済みとして、進めます。
 

 

 

下のgit-locationが追加になります。
 

念の為に、書かれているpathの存在を確認しておきましょう。
※違っている場合は適宜変更してください。
 

他のサイトには、いろいろな書き方がされていますが、今回は、webサーバーの/git/*.gitという形でリポジトリが格納されているという環境になりますが、違っている場合は、それぞれの階層を書き換えてください。

ハマりの道

とにかく、cloneとpushを確認するだけで、3日も掛かってしまったのですが、どんなエラーが出ていたのかと言うと、
 

cloneをすると、404エラー、
 

pushをすると、405エラー、
 

こんな感じで、nginxのaccess.logには、以下のように書き込まれていました。
 

 

これで丸2日ほど経過するわけですが、PROPFINDというのは、nginxのモジュールが不足しているという風に書かれていたんですが、
代替モジュールであるfcgiwrapとうまく連結されていない事が原因であることが分かりました。
 

解決への道

pushした時の3行目のエラーは、モジュールエラーですが、nginxのgit振り分けがキチンと行われていない事が原因だったようで、以下のようにすることで、解決することができました。
 

 

そして、もうひとつ重要なポイントがあって、このままの状態では、サーバーに設置されているリポジトリからclone処理ができずに困っていたところ、
 

事前にそのリポジトリ内で以下のコマンドを実行しておく必要があったようです。
 

 

これで無事にcloneとpushをすることが確認できました。
 

参考への道

https://kokuzawa.github.io/blog/2018/10/31/nginx-and-git/
 

https://blogger.tempus.org/2010/01/git-http.html
 

Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です