gitosis-Gitリポジトリホスティングソフトウェア
インストール:
テスト中に自動インストールスクリプトが表示されました
sudo apt-get install python-setuptools git-core -y
mkdir ~/src
cd ~/src
git clone git://github.com/sc0rp1us/gitosis-tools.git
cd gitosis-tools/gitautoinstall
sudo bash main
次に、スクリプトの指示に従います
しかし、記事に戻る
まず、gitosisを実行するために必要なコンポーネントをインストールします。
- debianおよびubuntuの場合、次のコマンドをrootとして実行します
apt-get update
apt-get upgrade
apt-get install python-setuptools git-core -y
cd ~/src
git clone git://eagain.net/gitosis.git
cd gitosis
python setup.py install
次に、gitosis'omを管理するアカウントに移動し(gitadminと呼びます)、配布キットをアンロードしてインストールします
セットアップ:
次に、リポジトリを所有するユーザーを作成する必要があります(名前は任意ですが、gitのみを使用することをお勧めします)、さらに、リポジトリを所有する同じサーバー上に複数のアカウントがある場合があります。そのようなアカウントにはパスワードは必要ありませんが、有効なシェルが必要です。そうでない場合、SSHは拒否します彼と働く:
PSもちろん、既存のアカウントを使用できますが、セキュリティ上の理由から、これを行わないことを強くお勧めします
- debianおよびubuntuの場合、次のコマンドを実行します
sudo adduser --system --shell /bin/sh --gecos 'git version control' --group \
--disabled-password --home /home/git git
パスワードなしのアクセス用のRSAキーを作成します
ssh-keygen -t rsa
次に、初期化コマンドを実行する必要があります。これにより、/ home / git / repositoriesが作成されます。これには、gitリポジトリーと/ home / git /が含まれます。 gitosis.conf。これは、構成ファイル/home/git/repositories/gitosis-admin.git/gitosis.confへのシンボリックリンクであり、SSHアクセスを制限するCommand =オプションを追加することにより、SSH公開キーを.ssh / authorized_keysに追加します。 gitosis-serveを実行しています。
sudo -H -u git gitosis-init < /home/gitadmin/.ssh/id_rsa.pub
彼は最終的にすべてを行う必要がありますが、常にそうではありませんが、チューブを備えたタンジーになり、準備をし、左手でチューバンを取り、簡単に取り扱います:ハンドシップ
次に、次のアクションを実行します(この松葉杖はどこでも必要ではありません。Debianでそれがなくてもすべてが機能し、そのようなシステムのRedHatユーザーが最も役立ちそうです(これはインストール中に発生する問題の不思議なアカウント、より正確にはその1つです))
su - git
cat .ssh/authorized_keys | sed 's#gitosis-serve#/usr/local/bin/gitosis-serve#g' > 0
cat 0 > .ssh/authorized_keys && rm 0
ところで、一部のシステムではPATHパスに問題がある場合があるため、以下のファイルでは、「set -e」オプションの後に「。/ Etc / profile」という行を追加する必要があります。
/home/git/repositories/gitosis-admin.git/hooks/post-update
次に、リポジトリを複製します
git clone git@SERVER:gitosis-admin.git
そして、キーのSSHストレージを取得します/ home / gitadmin / gitosis-admin / keydir /(クライアントの公開鍵を追加する必要があります)、および/home/gitadmin/gitosis-admin/gitosis.conf(リポジトリのパラメーターを指定する必要があります)
git clone ssh://git@localhost/gitosis-admin.git
Initialized empty Git repository in /usr/gitosis-admin/.git/
remote: Counting objects: 5, done.
remote: Compressing objects: 100% (4/4), done
remote: Total 5 (delta 0), reused 5 (delta 0)
Receiving objects: 100% (5/5), done
sudo chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update
警告
現在、gitosisはHOME環境変数を使用してファイルを書き込みます。 -Hオプションを指定せずにsudoを使用すると、gitは古いHOME値をそのままにしておくため、問題が発生します。 将来的にはこれを回避できますが、現時点では-Hを使用することを忘れないでください。
GITを使用して構成ファイルを常に編集する必要があります。 〜/へのファイルシンボリックリンク。 サーバー上のgitosis.confは、変更がgitosis-admin.gitリポジトリに送信されると上書きされます。
必要に応じて設定を変更し、コミットしてプッシュします。
サーバーに送信した後、gitosisはすぐに変更を加えてサーバーに適用します。
運営管理
新しいユーザーの追加:
-ファイルキーの追加/ USER.pub
-グループのリポジトリへの読み取り/書き込みを許可します(またはグループAllのみを許可します)
新しいリポジトリを作成するには、グループに書き込み許可を与えてプッシュするだけです。
たとえば、ユーザー名がjdoeで、MyProjectリポジトリを作成するとします。
gitosis-adminクローンで、gitosis.confを編集して以下を追加します。
[group myteam]
members = jdoe
writable = myproject
次に、gitosisに変更を送信する必要があります
git add .
git commit -am 'add new project Michael Queally-1 and users'
git push
今、私たちはgitosisを再初期化する必要があります
sudo -H -u git gitosis-init < /home/gitadmin/.ssh/id_rsa.pub
su - git
cat .ssh/authorized_keys | sed 's#gitosis-serve#/usr/local/bin/gitosis-serve#g' > 0 && \
cat 0 > .ssh/authorized_keys && rm 0
PUBLICキーが取得されたアカウントのローカルマシンにリポジトリを作成します
mkdir myproject
cd mypyroject
git init
git remote add MYSERVER git@MYSERVER:myproject.git
touch testfile
git add .
git commit -am 'add test file'
git push MYSERVER master:refs/heads/master
以上です。 これで、他のメンバーをメンバーに追加すると、このリポジトリも使用できるようになります
redmineでの統合:
裸のリポジトリ用のディレクトリを作成し、所有者を設定します
mkdir -p /srv/redmine/git_repositories/
chown wwwrun:wwwrun /srv/redmine/git_repositories/
Webサーバーが動作しているユーザーのsshキーを生成します(私の場合はapacheです)
sudo -H -u wwwrun ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/var/lib/wwwrun/.ssh/id_rsa):
Created directory '/var/lib/wwwrun/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /var/lib/wwwrun/.ssh/id_rsa.
Your public key has been saved in /var/lib/wwwrun/.ssh/id_rsa.pub.
The key fingerprint is:
86:58:61:7b:56:5e:55:85:74:4f:12:33:ad:dc:1f:90 wwwrun@vzserv
The key's randomart image is:
+--[ RSA 2048]----+
| o . o**+* |
| oo ..Eo+. |
| .. o. . |
| o .. |
| .. |
| . |
| |
| |
| |
+----------------------+
キーをkeydirに追加し、それに権限を設定します
cp /var/lib/wwwrun/.ssh/id_rsa.pub /home/gitadmin/gitosis-admin/keydir/wwwrun@vzserv.pub
chown gitadmin:gitadmin /home/gitadmin/gitosis-admin/keydir/wwwrun@vzserv.pub
リポジトリにユーザーを追加
su - gitadmin
cd gitosis-admin/
vim gitosis.conf #
git add .
git commit -am 'add redmine'
Created commit 7f94aac: add redmine
2 files changed, 2 insertions(+), 1 deletions(-)
create mode 100644 keydir/wwwrun@vzserv.pub
git push
Counting objects: 8, done.
Compressing objects: 100% (5/5), done.
Writing objects: 100% (5/5), 745 bytes, done.
Total 5 (delta 2), reused 0 (delta 0)
To git@127.0.0.1:gitosis-admin.git
608aa58..7f94aac master -> master
gitosisを再初期化します(その後、.ssh / authorized_keysが再作成されますが、時々不正に実行されます)
sudo -H -u git gitosis-init < /home/gitadmin/.ssh/id_rsa.pub
gitadmin's password:
Reinitialized existing Git repository in /home/git/repositories/gitosis-admin.git/
Reinitialized existing Git repository in /home/git/repositories/gitosis-admin.git/
.ssh / authorized_keys gitosis-serveで/ usr / local / bin / gitosis-serveに置き換えるいくつかのシャーマニスティックなアクションを実行します
su - git
cat .ssh/authorized_keys | sed 's#gitosis-serve#/usr/local/bin/gitosis-serve#g' > 0 && cat 0 > .ssh/authorized_keys && rm 0
ベアリポジトリ用のディレクトリを作成し、正しいgit cloneを作成します
cd /srv/redmine/git_repositories
sudo -H -u wwwrun git clone --bare git@127.0.0.1:PROJECTNAME.git
cd PROJECTNAME
sudo -H -u wwwrun git --bare remote add origin git@127.0.0.1:PROJECTNAME.git
ls
HEAD branches config description hooks info objects packed-refs refs
現在、ローカルredmineリポジトリを自己更新するためのスクリプトを作成しています。gir(gitosis-in-redmine)という名前を付けて保存します(例:/ root / scripts)
#!/bin/sh
#The script for pull in bare gitosis repository
#set var
uname=wwwrun # httpd( apache2)
rdir=/srv/redmine/git_repositories # bare
tmpls=/tmp/tmpls # temp !!! !!!
#end var
#start check
if [ `whoami` == $uname ]
then
#start exec
touch $tmpls
ls -1 $rdir > $tmpls
while read LINE; do
cd $rdir/$LINE
git --bare fetch origin :master
echo "update git repository $LINE"
done < $tmpls
rm $tmpls
#end exec
else
echo "Start me from the user $uname"
fi
#end check
クラウンに追加します
echo "10 * * * * wwwrun /root/scripts/gir" >> /etc/crontab
/etc/init.d/cron restart
Shutting down CRON daemon done
Starting CRON daemon
これで、resmineに対するこのリポジトリの関連性は10分になります。
次に、ブラウザを開いてRedmineに移動します( このベアリポジトリはRedmine'omと同じサーバー上にあることを忘れないでください )
次のシーケンスをクリックします
プロジェクト>プロジェクト名>設定>リポジトリ>
次に、 SCMフィールドでGITを選択し、 Path to .git directoryフィールドで
結果のパス/srv/redmine/git_repositories/PROJECTNAME.gitを登録します
そして実際にはすべて!