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.
相关文章
相关标签/搜索