搭建git伺服器的4個步驟
1 配置伺服器前的準備工作
首先ubuntu系統要聯網 安裝了git,openssh-server和openssh-client軟體,并檢測是否開啟。
rpm -qa | grep -i git (檢視是否安裝git)
sudo apt-get install git
sudo apt-get install openssh-server
sudo apt-get install openssh-client
2 添加git 使用者
新加使用者git,該使用者将作為所有代碼倉庫和使用者權限的管理者:
geiao@ubuntu :~$ sudo useradd -m git
geiao@ubuntu :~$ sudo passwd git
建立一個git倉庫的存儲點,并且設定權限使除了git以外的使用者對此目錄無任何通路權限。
geiao@ubuntu :~$ sudo mkdir /home/pro_j
(建立個目錄,作為存儲點。)
geiao@ubuntu :~$ sudo chown git:git /home/pro_j
(把pro_j的權限給 git)
geiao@ubuntu :~$ sudo chmod 755 /home/pro_j (将檔案pro_j設定為 rwxr_xr_x 除了git以外的使用者對此目錄無任何通路權限)
3 安裝配置gitosis
初始化伺服器的git使用者 可以用cat ~/.gitconfig 檢視
geiao@ubuntu :~$ git config --global user.name "your name"
geiao@ubuntu :~$ git config --global user.email your email
geiao@ubuntu :~$ cat ~/.gitconfig
[user] name = zhang mingjie
email = [email protected]
安裝一下python的setuptool,也是為gitosis做準備:
geiao@ubuntu :~$ sudo apt-get install python-setuptools
獲得gitosis包:
geiao@ubuntu :~$ mkdir osis
geiao@ubuntu :~$ cd osis
geiao@ubuntu :~/osis$ git clone git://eagain.net/gitosis.git
注意:執行上步驟會出錯
Cloning into gitosis...
eagain.net[0: 208.78.102.120]: errno=Connection refused
fatal: unable to connect a socket (Connection refused)
可使用:git clone https://github.com/res0nat0r/gitosis.git代替
geiao@ubuntu :~/osis$ cd gitosis
geiao@ubuntu :~/osis/gitosissudopythonsetup.pyinstall預設狀态下,gitosis會将git倉庫放在git使用者home下的repositories中,是以要做個連結:geiao@ubuntu: /osis/gitosissudopythonsetup.pyinstall預設狀态下,gitosis會将git倉庫放在git使用者home下的repositories中,是以要做個連結:geiao@ubuntu: /osis/gitosis su git
$ ln -s /home/pro_j /home/git/repositories
$ exit
成為管理者:無論是不是本機都可以通過生成ssh公鑰的方法成為管理者
geiao@ubuntu :~$ ssh-keygen -t rsa 生成的密鑰可以通過在~/.ssh 檔案中找到。
在伺服器上建管理者:
geiao@ubuntu :~/osis/gitosis$ sudo chmod a+r ~/.ssh/id_rsa.pub
[sudo] password for geiao:
讓gitosis運作起來:
geiao@ubuntu :~/osis/gitosis$ sudo -H -u git gitosis-init< ~/.ssh/id_rsa.pub
Initialized empty Git repository in /home/pro_j/gitosis-admin.git/
Reinitialized existing Git repository in /home/pro_j/gitosis-admin.git/
如果在另外的一台機子上建管理者,必須把那台機子的公鑰(改名)拷到伺服器上 然後修改上面劃線操作的位址就行了。
Gitosis 通過一個git倉庫管理配置檔案,倉庫就放在/home/pro_j/gitosis-admin.git。是以要為一個檔案加上可執行權限:
geiao@ubuntu :/home/git$ sudo passwd root
geiao@ubuntu :/home/git$ su
root@ubuntu :/home/git# cd repositories
root@ubuntu :/home/git/repositories# cd gitosis-admin.git
root@ubuntu :/home/git/repositories/gitosis-admin.git# sudo chmod 755 /home/pro_j/gitosis-admin.git/hooks/post-update root@ubuntu :/home/git/repositories/gitosis-admin.git# exit
4 管理gitosis的配置檔案
gitosis本身的配置也是通過git來實作的。在你自己的開發機裡,把gitosis-admin.git這個倉庫clone下來,就可以以管理者的身份修改配置了。
geiao@ubuntu :~/osis$ mkdir pro
geiao@ubuntu :~/osis$ cd pro
geiao@ubuntu :~/osis/pro$ git clone git@伺服器ip:gitosis-admin.git
geiao@ubuntu :~/osis/pro$ cd gitosis-admin
geiao@ubuntu :~/osis/pro/gitosis-admin$ ls
gitosis.conf keydir
gitosis.conf檔案和keydir檔案夾
gitosi.conf檔案主要的作用是管理者可以編寫其他人的權限,可以編寫對gitosis-admin的成員,也可以編寫對倉庫的權限 :writable和 readonly . 這裡設定權限 可以建立group設定。
keydir 檔案夾是存放其他人公鑰的地方。而且必須注意 誰的公鑰誰的名字的要求來存放。
geiao@ubuntu :~/osis/pro/gitosis-admin/keydir$ ls [email protected] jghost.pub 否則在會出現:
ERROR:gitosis.serve.main:Repository read access denied
配置好後一定要做的操作事送出gitosis-admin的 改動,并commit 然後 git push 一下; 而且你不需要在伺服器上建好一個空倉庫,再導入項目。 Gitosis會在你建好項目推送到伺服器上時自動建立。 然後就可以建立個項目 如proj.git(這點比較重要)
geiao@ubuntu :~/osis/pro$ mkdir proj
geiao@ubuntu :~/osis/pro$ cd proj
geiao@ubuntu :~/osis/pro/proj$ git init
Initialized empty Git repository in /home/geiao/osis/pro/proj/.git/
geiao@ubuntu :~/osis/pro/proj$ touch README
geiao@ubuntu :~/osis/pro/proj$ git add README
geiao@ubuntu :~/osis/pro/proj$ git commit -a -m "add readme"
geiao@ubuntu :~/osis/pro/proj$ git remote add origin [email protected]:proj.git
geiao@ubuntu :~/osis/pro/proj$ git push origin master
到此, 在ubuntu上建立git伺服器基本上完成。
本文轉自張昺華-sky部落格園部落格,原文連結:http://www.cnblogs.com/sky-heaven/p/5179575.html,如需轉載請自行聯系原作者