gitosisのインストール方法(インストール中に発生した問題を手動で考慮する)+ redmineでの統合

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を実行するために必要なコンポーネントをインストールします。



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もちろん、既存のアカウントを使用できますが、セキュリティ上の理由から、これを行わないことを強くお勧めします







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を登録します



そして実際にはすべて!



All Articles