redhat/centos 搭建git/gitosis/gitweb

1. git的安裝和配置
(1)使用yum源安裝git
  1. yum install git
(2)建立git用戶並設置密碼
  1. #useradd --home /home/git git
  2.  #passwd git 
  3. //注意這裏要設置一個密碼,建議不要不設密碼,網上不少資料都不設密碼
(3)建立一個git倉庫,驗證git是否可用
  • 在使用git以前,要設置git的兩個全局變量,設置方式爲:
    1. # git config --global user.name "dylan"
    2. # git config --global user.email "ustc.dylan@email.com"
  • 設置git倉庫目錄的權限
    1. # su - git                           //切換到git用戶
    2. $ chmod -R 755 /home/git             //修改目錄的權限
  • 建立並初始化一個repository
    1. $ mkdir /home/git/repo   //假設要建立的repository放在/home/git/repo目錄下
    2. $ cd /home/git/repo
    3. $ mkdir test_repo
    4. $ cd test_repo
    5. $ git init --bare
  • 測試新建立的repository是否可用
    1. su - test (test爲另一個user或者exit,使用root用戶)
    2. $ cd /home/test
    3. $ mkdir repos
    4. $ cd repos
    5. $ git clone /home/git/repo/test_repo
    若是顯示" Initialized empty Git repository in /home/git/repo/test_repo/.git/",則說明成功的clone了一個local repository。以後就能夠在此repository下進行開發了,好比,添加一個readme.txt文件。
    1. $ cd test_repo
    2. $ vim readme.txt (建立一個文件)
    3. $ git add . (注意後面有一個[.])
    4. $ git commit -a
    5. $ git push origin master
     注意:若是此時報錯,最大的緣由是test_repo的refs和objects目錄的權限不夠,執行以下操做便可(git server端的repository下的這兩個目錄)。
  1. $ chmod -R 777 refs/
  2. $ chmod -R 777 objects/

2. gitosis的安裝
 (1)python-setuptools的安裝(由於gitosis的安裝腳本是用python寫的)
  1. #yum install python-setuptools
(2)gitosis的安裝
  1. #git clone git://github.com/res0nat0r/gitosis.git//下載gitosis到你想存放的目錄下
  2. #cd gitosis
  3. #python setup.py install    //若是沒有報錯,則說明安裝成功
(3)建立是用這個git server的用戶的公鑰
   由於gitosis的訪問是經過ssh訪問的,因此咱們還須要建立一個ssh的訪問公鑰。找另一臺機器(若是條件容許)做爲git server的客戶端機器建立公鑰,而後傳到git服務器上。(若是爲了簡便,也可在git服務器上建立公鑰,使用git用戶或者其餘用戶都行。爲了方便,這裏採用git服務器,而且使用git用戶。

  1. # su - git
  2. $ ssh-keygen -t rsa
 公鑰生成了,默認放在/home/git/.ssh/id_rsa.pub下,若是生成公鑰時設置了密碼,注意記住密碼,爲了簡單,我這裏沒有設置密碼。

(4)配置gitosis
    gitosis對git的各類管理經過gitosis-admin.git這個項目來完成,gitosis-admin.git項目自己又被置於git下管理,因此須要先在client端clone gitosis-admin.git, 根據需求修改後,將修改提交到git server便可生效。
    此處的含義就是:你想在哪對gitosis進行配置,就須要在哪clone到gitosis-admin.git.
  • 假設在於gitosis不一樣的另一臺機器上,使用git用戶將gitosis-admin.git clone到本地。
    1. git clone git@192.168.x.xx:/home/git/repositories/gitosis-admin.git
  • 修改gitosis配置文件gitosis.conf
    1. $ vim gitosis.conf
    2. //會看到以下內容
    3. [gitosis]
    4. [group gitosis-admin]
    5. writable = gitosis-admin
    6. members = git@compute-29-01.local
    gitosis.conf 文件是用來設置用戶、倉庫和權限的控制文件(對於gitosis.conf文件的詳細含義,以及keydir目錄下公鑰的做用,將會另寫文檔說明,在此再也不詳述),只需知道gitosis倉庫是可寫的,支持的用戶有git
(5)新添加repository
     修改gitosis-admin的配置文件gitosis.conf,新添加一個repository,例如:

  1. [gitosis]
  2. [group gitosis-admin]
  3. writable = gitosis-admin
  4. members = git@compute-29-01.local
  5. [group test_repo]                        //新添加的倉庫名稱
  6. writable = test_repo                     //此倉庫的讀寫權限,此處爲可寫
  7. members  = user1@host1 user2@host2       //能夠訪問此倉庫的用戶名@主機名

假設當user1,來訪問這個test_repo倉庫時,須要輸入以下命令:

  1. git clone user1@git_server_ip:/home/git/repo/test_repo.git

此時會要求輸入user1的密碼,此密碼就是建立user1的公鑰時輸入的密碼。那麼gitosis又是怎麼來肯定user1的身份的呢? 這就要求必須事先將user1產生的公鑰傳給管理員,即對gitosis-admin有權限操做的管理人員,而後由他將公鑰拷貝到keydir目錄下,而後,執行git add,git push便可。 python


3. gitweb安裝
    注意:redhat的iso源是沒有gitweb安裝包,可是centos的源中有,在上一篇文章中給出瞭如何讓redhat使用centos的源,那麼,只需採用以下命令便可安裝。

  1. # yum install gitweb
4. gitweb配置
  gitweb默認安裝到了/var/www/git下,其配置文件在/etc/gitweb.conf下,另外,httpd的配置文件/etc/httpd/conf.d/git.conf。
(1)修改/etc/gitweb.conf

  1. $projectroot = "/var/www/git" //將projectroot修改成/var/www/git
(2)修改/etc/httpd/conf.d/git.conf

  1. Alias /git /var/www/git
  2. <Directory /var/www/git>
  3. Allow from all
  4. AllowOverride all
  5. Order allow,deny
  6. Options +ExecCGI
  7. AddHandler cgi-script .cgi
  8. DirectoryIndex gitweb.cgi
  9. SetEnv GITWEB_CONFIG /etc/gitweb.conf
  10. Dav On
  11. RewriteEngine Off
  12. </Directory>

(3)重啓httpd
  1. /etc/init.d/httpd restart
(4)將gitosis倉庫鏈接到/var/www/git下,完成web顯示
  1. ln -s /home/git/repositories/test_repo.git /var/www/git/
(5)經過瀏覽器瀏覽
http://xxxx/git/

注意:  若是git clone  http://xxx/git/test_repo.git時出現git update-server-info錯誤,則在test_repos.git目錄下執行 git update-server-info 命令便可(gitosis服務器的相應倉庫下)。

5. 建立新的git repository
在git server的/home/git/repository目錄下,執行以下命令:

  1. mkdir test.git
  2. cd test.git
  3. git init --bare
  4. //能夠在這裏添加源文件,也能夠在client端clone以後添加
相關文章
相關標籤/搜索