「Git サーバー」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(→‎Git: 飜訳)
65行目: 65行目:
 
このサービスは {{ic|--export-all}} と {{ic|--base-path}} パラメータを使用して {{ic|,/srv/git/}} に置かれたすべてのリポジトリにサービスを提供します.
 
このサービスは {{ic|--export-all}} と {{ic|--base-path}} パラメータを使用して {{ic|,/srv/git/}} に置かれたすべてのリポジトリにサービスを提供します.
   
  +
== アクセスコントロール ==
== Access control ==
 
   
  +
きめ細かなアクセス制御を行うために、以下のようなソリューションがあります。
For fine-grained access control, the following solutions are available:
 
   
* {{App|[[Gitolite]]|An access control layer on top of Git, written in Perl.|https://github.com/sitaramc/gitolite|{{Pkg|gitolite}}}}
+
* {{App|[[Gitolite]]|Perlで書かれた、Gitの上のアクセスコントロールレイヤー。|https://github.com/sitaramc/gitolite|{{Pkg|gitolite}}}}
* {{App|[[Gitosis]]|Software for hosting Git repositories, written in Python.|https://github.com/tv42/gitosis|{{AUR|gitosis-git}}}}
+
* {{App|[[Gitosis]]|Git リポジトリをホストするためのソフトウェア、Python で書かれています。|https://github.com/tv42/gitosis|{{AUR|gitosis-git}}}}
   
  +
もし、リポジトリにアクセスできるすべての人のための[[ユーザーアカウント]]を作成し、gitオブジェクト(ブランチなど)のレベルでのアクセス制御を必要としない場合は、アクセス制御に標準的なファイルパーミッションを使用することもできます[1]ので、注意してください。[https://github.com/sitaramc/gitolite/blob/d74e58b5de8c78bddd29b009ba2d606f7fcb4f2d/doc/overkill.mkd]
Note that if you are willing to create [[user account]]s for all of the people that should have access to the repositories and do not need access control at the level of git objects (like branches), you can also use standard [[file permissions]] for access control.[https://github.com/sitaramc/gitolite/blob/d74e58b5de8c78bddd29b009ba2d606f7fcb4f2d/doc/overkill.mkd]
 
   
 
== Web interfaces ==
 
== Web interfaces ==

2022年1月31日 (月) 12:06時点における版

この記事では、Git サーバーをホストする方法について概要を説明します。より詳細な情報は、Pro Git book の Git on the Server chapter の章を参照ください。

プロトコル

詳細な説明と長所・短所は、Git on the Server - The Protocols を参照してください。

全般

Step by Step Guide on Setting Up git Server では Arch での安全でないサーバーのセットアップを説明しています。

デフォルトでは、git ユーザは期限切れになっています("Your account has expired; please contact your system administrator")。有効期限切れの条件を解除するには、例えば、以下のように chage を使用します。

chage -E -1 git

SSH

SSH サーバーを設置するだけです。

この SSH ユーザーアカウントでは、push と pull のコマンドのみを許可することで、より安全性を確保することができます。これは、デフォルトのログインシェルを git-shell に置き換えることで実現します。Setting Up the Server で説明しています。

#全般の手順で作成した git サーバーをこの条項の手順 (#SSH) で保護する場合、Arch では以下の追加手順が必要です。

正しいホームディレクトリ
ssh が /srv/git/.ssh/authorized_keys を読めるようにするには、/etc/passwd の git 用ホームディレクトリを "/" から "/srv/git" に変更する必要があります。
ホームディレクトリが修正された場合のベースパスの修正
git がリポジトリを提供するために、gitのホームディレクトリからリポジトリを提供する場合、"/usr/lib/systemd/system/git-daemon@.service" の --base-path を "/srv/git" へ変更する必要があります。

Smart HTTP

この記事またはセクションは加筆を必要としています。
理由: There are many web servers with CGI support. (議論: トーク:Git サーバー#)

git-http-backend(1) は CGI プログラムで、HTTP(S) で clone や pull, push を効率的に行うことができます。

Apache

Apache HTTP Server をインストールし、mod_cgi, mod_alias, mod_env を有効にして、そしてもちろん git があれば、この設定はかなり簡単です。

基本的なセットアップを実行したら、Apache の設定ファイルに以下を追加してください。

/etc/httpd/conf/httpd.conf
<Directory "/usr/lib/git-core">
    Require all granted
</Directory>
 
SetEnv GIT_PROJECT_ROOT /srv/git
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAlias /git/ /usr/lib/git-core/git-http-backend/

ここでは、Git リポジトリが /srv/git にあり、それにアクセスするために次のような方法をとるものとします。http(s)://your_address.tld/git/your_repo.git.

ノート: Apache がリポジトリに対して読み書きができることを確認してください。

より詳細なドキュメントについては、以下のリンクを参照してください。

Git

Git プロトコルは、暗号化も認証もされておらず、読み取りアクセスのみ許可します。

Git デーモン(git-daemon(1))は git-daemon.socket起動することができます.

このサービスは --export-all--base-path パラメータを使用して ,/srv/git/ に置かれたすべてのリポジトリにサービスを提供します.

アクセスコントロール

きめ細かなアクセス制御を行うために、以下のようなソリューションがあります。

  • Gitolite — Perlで書かれた、Gitの上のアクセスコントロールレイヤー。
https://github.com/sitaramc/gitolite || gitolite
  • Gitosis — Git リポジトリをホストするためのソフトウェア、Python で書かれています。
https://github.com/tv42/gitosis || gitosis-gitAUR

もし、リポジトリにアクセスできるすべての人のためのユーザーアカウントを作成し、gitオブジェクト(ブランチなど)のレベルでのアクセス制御を必要としない場合は、アクセス制御に標準的なファイルパーミッションを使用することもできます[1]ので、注意してください。[1]

Web interfaces

Simple web applications

  • Gitweb — the default web interface that comes with Git
  • cgit — A web interface for git written in plain C.
https://git.zx2c4.com/cgit/ || cgit

Advanced web applications

  • Gitea — Painless self-hosted Git service. Community managed fork of Gogs.
https://gitea.io || gitea
  • GitLab — Project management and code hosting application, written in Ruby.
https://gitlab.com/gitlab-org/gitlab-ce || gitlab
  • Gogs — Self Hosted Git Service, written in Go.
https://gogs.io || gogsAUR