1. git的安裝和配置
(1)使用yum源安裝git
(2)建立git用戶並設置密碼
- #useradd --home /home/git git
- #passwd git
- //注意這裏要設置一個密碼,建議不要不設密碼,網上不少資料都不設密碼
(3)建立一個git倉庫,驗證git是否可用
- 在使用git以前,要設置git的兩個全局變量,設置方式爲:
-
- # git config --global user.name "dylan"
- # git config --global user.email "ustc.dylan@email.com"
- 設置git倉庫目錄的權限
-
- # su - git //切換到git用戶
- $ chmod -R 755 /home/git //修改目錄的權限
- 建立並初始化一個repository
-
- $ mkdir /home/git/repo //假設要建立的repository放在/home/git/repo目錄下
- $ cd /home/git/repo
- $ mkdir test_repo
- $ cd test_repo
- $ git init --bare
- 測試新建立的repository是否可用
-
- su - test (test爲另一個user或者exit,使用root用戶)
- $ cd /home/test
- $ mkdir repos
- $ cd repos
- $ git clone /home/git/repo/test_repo
若是顯示" Initialized empty Git repository in /home/git/repo/test_repo/.git/",則說明成功的clone了一個local repository。以後就能夠在此repository下進行開發了,好比,添加一個readme.txt文件。
-
- $ cd test_repo
- $ vim readme.txt (建立一個文件)
- $ git add . (注意後面有一個[.])
- $ git commit -a
- $ git push origin master
注意:若是此時報錯,最大的緣由是test_repo的refs和objects目錄的權限不夠,執行以下操做便可(git server端的repository下的這兩個目錄)。
- $ chmod -R 777 refs/
- $ chmod -R 777 objects/
2. gitosis的安裝
(1)python-setuptools的安裝(由於gitosis的安裝腳本是用python寫的)
- #yum install python-setuptools
(2)gitosis的安裝
- #git clone git://github.com/res0nat0r/gitosis.git//下載gitosis到你想存放的目錄下
- #cd gitosis
- #python setup.py install //若是沒有報錯,則說明安裝成功
(3)建立是用這個git server的用戶的公鑰
由於gitosis的訪問是經過ssh訪問的,因此咱們還須要建立一個ssh的訪問公鑰。找另一臺機器(若是條件容許)做爲git server的客戶端機器建立公鑰,而後傳到git服務器上。(若是爲了簡便,也可在git服務器上建立公鑰,使用git用戶或者其餘用戶都行。爲了方便,這裏採用git服務器,而且使用git用戶。
- # su - git
- $ 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到本地。
-
- git clone git@192.168.x.xx:/home/git/repositories/gitosis-admin.git
- 修改gitosis配置文件gitosis.conf
-
- $ vim gitosis.conf
- //會看到以下內容
-
- [gitosis]
-
- [group gitosis-admin]
- writable = gitosis-admin
- members = git@compute-29-01.local
gitosis.conf 文件是用來設置用戶、倉庫和權限的控制文件(對於gitosis.conf文件的詳細含義,以及keydir目錄下公鑰的做用,將會另寫文檔說明,在此再也不詳述),只需知道gitosis倉庫是可寫的,支持的用戶有git
(5)新添加repository
修改gitosis-admin的配置文件gitosis.conf,新添加一個repository,例如:
- [gitosis]
- [group gitosis-admin]
- writable = gitosis-admin
- members = git@compute-29-01.local
- [group test_repo] //新添加的倉庫名稱
- writable = test_repo //此倉庫的讀寫權限,此處爲可寫
- members = user1@host1 user2@host2 //能夠訪問此倉庫的用戶名@主機名
-
假設當user1,來訪問這個test_repo倉庫時,須要輸入以下命令:
- 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的源,那麼,只需採用以下命令便可安裝。
4. gitweb配置
gitweb默認安裝到了/var/www/git下,其配置文件在/etc/gitweb.conf下,另外,httpd的配置文件/etc/httpd/conf.d/git.conf。
(1)修改/etc/gitweb.conf
- $projectroot = "/var/www/git" //將projectroot修改成/var/www/git
(2)修改/etc/httpd/conf.d/git.conf
- Alias /git /var/www/git
- <Directory /var/www/git>
- Allow from all
- AllowOverride all
- Order allow,deny
- Options +ExecCGI
- AddHandler cgi-script .cgi
- DirectoryIndex gitweb.cgi
- SetEnv GITWEB_CONFIG /etc/gitweb.conf
- Dav On
- RewriteEngine Off
- </Directory>
(3)重啓httpd
- /etc/init.d/httpd restart
(4)將gitosis倉庫鏈接到/var/www/git下,完成web顯示
- 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目錄下,執行以下命令:
- mkdir test.git
- cd test.git
- git init --bare
- //能夠在這裏添加源文件,也能夠在client端clone以後添加