Ubuntu下安裝Git和Gitolite

Ubuntu Server 11.04
git的源碼包安裝
1. server版系統默認安裝時沒有gcc工具,須要額外安裝,desktop已經有了
   當機器能夠鏈接外網後就能夠經過sudo apt-get 來安裝了 (注意:要先更新一下包源列表,sudo apt-get update   要否則apt-get只會從本地去找對應的包,確定找不到了)
2. 解壓git源碼包,我用的是git-1.7.4.2.tar.bz2
3. git 依賴的包
    Depends: libc6 (>= 2.7), libcurl3-gnutls (>= 7.16.2-1), libexpat1 (>= 1.95.8),
         zlib1g (>= 1:1.2.0), perl-modules, liberror-perl, git-man (>
         1:1.7.4.1), git-man (< 1:1.7.4.1-.), emacsen-common
3. 修改源碼目錄的權限通常是755
4. cd 如源碼目錄,  ./configure
5. make
6. make install
 
apt-get安裝
sudo  apt-get install git或者sudo apt-get install git-core git-doc
 
SSH訪問
須要在服務器先安裝openssh-server並啓動其服務
1. 建立一個git用戶  用於服務器的管理
    sudo adduser --system --shell /bin/bash --group git 
    sudo passwd git    修改git的密碼
2. su  git  進入git用戶  生成ssh的key
3 客戶機生成ssh的key
    ssh-keygen
4. 把客戶機生成的ssh公匙上傳到服務器,而後運行
     cat /path/to/user1.pub >> ~anonymous/.ssh/authorized_keys  把你的公匙加到認證裏面這樣就能夠經過
      ssh   服務器用戶名@服務器Ip或機器名登錄服務器了  例如ssh   git@192.168.32.92  若是提示須要輸密碼則表示ssh不成功
  (注: 這一步能夠不用由於在gl-setup會自動加入)
 
 
gitolite的安裝配置
1. 從github clone出gitolite的源碼  git clone git:// github.com/ossxp-com/gitolite
2. 進入源碼的src目錄注意,原來的./gl-easy-install 安裝方式已經被./gl-system-install 替代了
    會在當前用戶的根目錄下生成bin和share兩個目錄,  bin中的腳步和源碼中的腳本基本一致
3. 加入環境變量PATH=/home/git/bin:$PATH
4. 把客戶機的ssh公匙拷貝到/home/git目錄下  添加爲gitolite管理員帳號
    gl-setup /path/to/user1.pub
    成功後會在/home/git目錄下生成repositories目錄和projects.list文件   repositories目錄裏面有gitolite-admin.git和testing.git 
   gitolite-admin.git就是管理員的庫,管理員把它clone出來添加用戶,配置權限而後在push到服務器就起效果了
   若是要修改gitolite默認的庫路徑須要修改/home/git目錄下的.gitolite.rc文件
5. 客戶機克隆出gitolite-admin庫就能夠進行用戶和權限的管理了。將用戶的key拷貝到keydir目錄下而後add 、commit、push用戶就添加完成了
   權限的控制是在conf/gitolite.conf文件中,權限的具體配置規則詳見gitolite的文檔,一樣權限修改以後也須要add、commit、push纔會起效果
 
若是要修改repositories目錄的名稱或者路徑,須要在安裝gitolite時修改,安裝完成後就不能修改了。
 
定義ssh鏈接服務器的別名
在.ssh目錄下建立config文件,內容格式以下
host    別名
      user   服務器用戶名
      hostname   服務器名或ip
      IdentityFile  本機密匙文件
 
實例
host   gitDemo
    user  git
    hostname  192.168.32.92
    IdentityFile  ~/.ssh/id_rsa
就能夠用
git clone  gitDemo:gitolite-admin 代替git clone git@192.168.32.92:gitolite-admin  了
 
 
配置遠程能夠建立配置庫的權限
gitolite.conf文件加入以下配置
 
repo    demo/.+
           C          =    @admin
           RW      =     @admin
push以後就能夠用git push  gitDemo:demo/demo1.git  master   在遠程git用戶目錄的repositories目錄下建立一個demo目錄及一個demo1.git的庫
 
 
 
安裝配置gitweb
1. sudo  apt-get install gitweb
2. sudo  apt-get install apache2
3. mkdir  /home/<name>/gitweb
4. sudo ln -sf /usr/share/gitweb/*  /home/<name>/gitweb
5. ln -s <git project path> /home/<name>/gitweb
6. sudo vi /etc/gitweb.conf
   $projectroot = "/home/<name>/gitweb";
7. sudo vi /etc/apache2/conf.d/gitweb
<VirtualHost *:80>
ServerName gitDemo
ScriptAlias /gitweb /usr/lib/cgi-bin/
DirectoryIndex /gitweb/gitweb.cgi
DocumentRoot /home/clean/gitweb
ErrorLog /var/log/apache2/git.pcware.cn-error.log
Customlog "/var/log/apache2/git.pcware.cn-error.log" combined
</VirtualHost>
 
8. sudo /etc/init.d/apache2 restart
9. chmod -R 755 <git repo path>
10. http://127.0.0.1就能夠訪問了
能夠經過修改${GIT_DIR}/description來修改git  repo的文字描述。
 
Gitweb配置不用虛擬機方式
 
1.安裝gitweb apt-get install gitweb
 
2.卸載apt-get remove gitweb
 
3.安裝apache2服務器 apt-get install apache2
 
4.安裝成功後會發現gitweb的配置文件在/usr/share/gitweb中,cgi文件存放在 /usr/lib/cgi-bin下
 
5.建立目錄home/usrname/gitweb 並將git庫存放在此目錄下或者將git庫鏈接於此命令爲:ln –sf git庫地址 gitweb路徑此處爲(/home/usrname/gitweb),爲了可以實時更新gitweb的內容須要修改git庫中的post-update使任何人都有執行權限方法以下:chmod 755 /.git/hooks/post-update
 
6.將gitweb的配置文件連接到gitweb目錄命令爲:ln -sf /usr/share/gitweb /home/usrname/gitweb
 
7.將gitweb.cgi拷貝到/home/usrname/gitweb下
 
8.修改apache設置編輯/etc/apache2/httpd.conf 添加以下內容:ServerName
127.0.0.1:80
 
9.修改gitweb.conf (/ect/apache2/conf.d/gitweb.conf)添加內容以下:
 
Alias /gitweb /home/usrname/gitweb
 <Directory /home/usrname/gitweb>
        Options +Indexes +ExecCGI +FollowSymLinks
        AllowOverride All
        order allow,deny
        allow from all
        AddHandler cgi-script cgi
        DirectoryIndex gitweb.cgi
</Directory>
 
10. 配置完畢後重啓apache2服務。命令爲:sudo /etc/init.d/apache2 restart
11. 在瀏覽器中輸入本機ip地址/gitweb就能夠訪問git服務了
例如 http://192.168.110.120/gitweb
 
注意: 從gitolite克隆倉庫的時候是用相對路徑例如倉庫在/home/git/demo/demo1.git只須要用git clone gitDemo:demo1.git
 
 
SSH KEY的如下錯誤將.ssh目錄的權限改成700就能夠了
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0744 for '/home/git/.ssh/id_rsa' are too open.
相關文章
相關標籤/搜索