Git服務器的搭建

GitHub是一個免費託管開源代碼的Git服務器,如果我們不想公開項目的源代碼,又不想付費使用,那麼我們可以自己搭建一臺Git服務器。

前言 這裏我用的系統是centos 6.5,

在服務器上的準備工作(服務器IP爲10.0.2.8 ):


1、安裝 openssh服務器與客戶端工具

  1. #  yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel 

  2. #  wget https://www.kernel.org/pub/software/scm/git/git-2.7.4.tar.gz

  3. #  tar zxvf git-2.7.4.tar.gz

  4. #  cd git-2.7.4

  5. #  make prefix=/usr/local/git all

  6. #  make prefix=/usr/local/git install

  7. #  ln -s /usr/local/git/bin/* /usr/bin/

  查看版本號:git --version
  git version 2.7.4

spacer.gif

2、Git服務器打開RSA認證

然後就可以去Git服務器上添加你的公鑰用來驗證你的信息了。在Git服務器上首先需要將/etc/ssh/sshd_config中將RSA認證打開,即:

 1.RSAAuthentication yes     

 2.PubkeyAuthentication yes     

 3.AuthorizedKeysFile  .ssh/authorized_keys


3、配置 git服務器

創建git服務器管理用戶

 # adduser --system --shell /bin/sh --create-home --home-dir /home/git git  

 # passwd git    

設置git倉庫權限

 # chown -R git:git /home/git

 # chmod -R 755 /home/git 


4、創建個人公鑰和私鑰(用於後面的git服務的管理員管理)
在默認用戶的主目錄路徑下,運行以下命令,按照提示創建公鑰和私鑰

 $ ssh-keygen -t rsa     

默認生成2048位,如果需要提高安全級別,也可以通過下面的命令創建公鑰和私鑰

 $ ssh-keygen -t rsa -b 4096     

默認情況下,公鑰和私鑰會保存在~/.ssh目錄下


5、切換到初始化git倉庫:這裏我們選擇/data/git/learngit.git來作爲我們的git倉庫

 # su - git

 $ mkdir /home/git/repositories

 $ git init --bare  /home/git/repositories 

  Initialized empty Git repository in /data/git/learngit.git/  

初始化全局設置

 $ git config --global user.name "myname"   

 $ git config --global user.email "myname@server"  

 

6、切換到root,獲取並安裝gitosis  

 # yum install python-setuptools     

 # cd /home/git

 # git clone git://github.com/res0nat0r/gitosis.git  

 # cd gitosis   

 # python setup.py install  

顯示Finished processing dependencies for gitosis==0.2即表示成功 

 # chown -R git:git /home/git/gitosis

 # chmod 755 -R /home/git/gitosis

   

7、ssh設置

    #  su - git 

進入~/.ssh目錄並使用ssh-keygen生成公鑰:

 $ ssh-keygen -t rsa

一定記得,在客戶機上生成公鑰,上傳到服務器,或者在服務器上生成,下載到客戶機。

 $ touch ~/.ssh/authorized_keys

收集公鑰存放在.ssh/authorized_keys文件中,然後再次clone的時候,或者是之後push的時候,就不需要再輸入密碼了。

注意不能忘記私鑰的密碼。默認會生成~/.ssh/id_rsa.pub公鑰文件。

有了密鑰以後便可初始化gitosis,使gitosis獲得對Git的管理權限:


8、服務器上生成git用戶,使用git用戶並初始化gitosis

 # su - git

 $ gitosis-init < ~/.ssh/id_rsa.pub //將該公匙導入gitosis裏,這時本機已經有了爲git的管理權限了 

 Reinitialized existing Git repository in /home/git/repositories/gitosis-admin.git/

 Reinitialized existing Git repository in /home/git/repositories/gitosis-admin.git/

初始化之後,會在/home/git/repositories創建gitosis-admin.git項目,可以通過維護這個項目來對gitosis進行配置。

 $ chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update  

至此,服務器端的gitosys配置就完成了。

爲了git操作時不用輸入密碼,還要做以下配置

 $ cat ~/.ssh/id_rsa.pub >> /home/git/.ssh/authorized_keys //將root的公匙導入到git目錄的 authorized_keys文件中  

 $ chmod 600 /home/git/.ssh/authorized_keys  


9、管理gitosis配置

 $ cd ~   

 $ git clone git@hostname:/home/git/repositories/gitosis-admin.git

 $ cd gitosis-admin/  

 $ ls -al  

看到以下結果:

gitosis.conf是git倉庫與權限配文件,keydir目錄是存放其它客戶機的公匙目錄。

 $ more gitosis.conf  

    gitosis.conf 對應的內容

 [gitosis]    

 [group gitosis-admin]  

 writable = gitosis-admin  

 members = [email protected]  


10、來這裏git的服務已基本配置完畢,但要團隊開發中用起來還要進以下配置:

   在成員機(ip=10.0.2.100)上生成自已的公匙,

 # yum install openssh-server openssh-client  

 # ssh-keygen -t rsa 

 $ scp ~/.ssh/id_rsa.pub [email protected]:~/gitosis-admin/keydir/tester.pub //將本機的公匙copy到gitosis的keydir中  

   再切換到git服務上(ip=10.0.2.8)

 $ cd ~  

 $ cd gitosis-admin  

 $ cat keydir/tester.pub >> /home/git/.ssh/authorized_keys //將tester的公匙導入到git目錄的authorized_keys文件中  

 $ vi gitosis.conf  

   修改gitosis.conf

 [gitosis]  

 [group gitosis-admin]  

 writable = gitosis-admin  

 members = [email protected]  

 #加一個組myteam  

 [group myteam]  

 members = tester #這裏的tester對上面公匙文件名  

 writable = test_project #項目倉庫名  

提交到版本庫

 $ git add keydir/tester.pub  

 $ git commit -a -m "Allow tester write access to test_project"  

 $ git push origin master 

 

11、這時tester便有權限操作test_project倉庫了,回到成員機(ip=10.0.2.100)上

 # cd ~  

 # mkdir test_project  

 # cd test_project  

 # echo "testing ">test.txt  

 # git init //初始化本地版本  

 # git remote add origin [email protected]:test_project.git //加到遠程版本庫中  

 # git add .  

 # git commit -a -m "哈哈哈,測試一下"   

 # git push origin master  

換個目錄看能否clone回來

 # cd /tmp  

 # git clone [email protected]:test_project.git //此時應該不會提示輸入ssh密碼的  


最後大功告成...


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章