Git : Ubuntu-git服务器搭建之亲自搭建--学习

转载 2016年08月31日 08:55:46

一:参考文档介绍

1.1 Git服务Gitosis安装设置                    //该文档前半段有很好的借鉴作用,但是涉及到gitosis的内容可以忽略
1.2 Ubuntu 11.10 server安装Git服务器  //该文档是某人的blog,同样涉及gitosis的部分可以不要
1.3 Ubuntu gitolite搭建详细文档           // 该文档为gitolite的官方译文,很有参考价值,我配置gitolite就是参考该文档
1.4 git详细网页教程                              //一个很酷教学git的网站
 
 
到2013年为止,gitosis项目管理已经过时,并且我测试安装gitosis的时候,是不可使用的,原因不明。现在普遍使用gitolite这个工具
gitolite是在gitosis的基础上进行功能升级的,所以在这里我推荐使用gitolite来做用户管理,并且最重要的一点是,gitosis到
2009年就已经停止维护了,gitolite则是gitosis的升级版,到现在还是有专门的人员维护升级的!!

二:安装步骤

在我这里的文档中:
root@server:    为搭建git服务器终端,假设ID为     192.168.0.196    
root@client:    为客户终端   ,            假设ID为     192.168.6.201        
root@admin:   为管理员终端,           假设ID为     192.168.6.200
通过为了文档的方便阅读,在这里我定义
服务器终端名字为 : S1
管理员终端名字为 : A1
客户终端名字为      :  C1
以后在文档中,我会使用 S1,A1,C1来简单代替
 
 
2.1 安装openssh服务器
 
root@server: / $ sudo apt-get install openssh-server openssh-client
2.2 创建个人公钥和私钥
在默认用户的主目录路径下,运行以下命令,按照提示创建公钥和私钥
 
root@server: / $ ssh-keygen -t rsa
 
默认生成2048位,如果需要提高安全级别,也可以通过下面的命令创建公钥和私钥
 
root@server: / $ ssh-keygen -t rsa -4096
默认情况下,公钥和私钥会保存在 ~/.ssh 目录下
root@server: / $ cd ~/.ssh
root@server: / $ ls
会看到如下图所示:
 
id_rsa  id_rsa.pub  known_hosts
 
2.3 安装 git 服务器
root@server: / $ sudo apt-get install git-core
 
2.4 配置git服务器
创建git服务器管理用户
root@server: / $ sudo useradd -m git
root@server: / $ sudo passwd git    //给 git用户设置密码
或使用以下命令:(建议使用以下命令创建用户,因为以下方法创建的用户可以使用shell自动补全等功能!)
root@server: / $ sudo useradd --system --shell /bin/bash --create-home git
**假如要删除用户执行如下命令**
 
root@server: / $ sudo userdel -r git     //假如-r参数会把git文件夹也删除
 
2.5 安装配置gitolite
2.5.1 安装要求
1 UNIX/LINUX操作系统
2 shell环境
3 git 1.6.6+
4 perl 5.8.8+
5 openssh 5.0+
6 专为gitolite使用的账号(本文会设置为git)
在这里,需要先把作为管理员的机子 A1 的密钥上传给 服务器S1
在 A1 中:
生成密钥
root@admin:/$ ssh - keygen - t rsa
 
把密钥上传给 S1    (服务器地址为 192.168.0.196)
root@admin:/$ scp ~/.ssh/id_rsa.pub git@192.168.0.196:/home/git/
 
这样我们就通过scp传输的方法,把A1的密钥传给了 S1,假如这个操作方法不行,出现了问题
你可以直接用移动硬盘拷贝 A1 的id_rsa.pub密钥到 S1中。
 
2.5.2 安装
首先需要以git账号登陆server服务器
需要确保~/.ssh/authorized_key为空或者不存在!假如在~/.ssh目录中已经有了authorized_key,
直接把authorized_key删除即可!
 
root@server: / $ su git
$ cd /home/git
 
下载gitolite
$ git clone git://github.com/sitaramc/gitolite
$ mkdir -/home/git/bin
$ gitolite/install -to /home/git/bin  //这里会在bin目录下安装一下文件
$cd /home/git/bin
 
到这一步,接下来我们需要创建gitolite了!,在这个时候我们需要使用的刚才
A1上传上来的密钥了!!
$./gitolite setup -pk  /home/git/id_rsa.pub
 
到达这一步,假如提示如下信息,代表安装已经完成了:
Git : Ubuntu-git服务器搭建之亲自搭建 - zheng_he_xiang - zheng_he_xiang的博客
 
****假如出现****
WARNING: keydir/git_key.pub duplicates a non-gitolite key, sshd will ignore it
这种警告,说明配置有些问题,需要删除/home/git目录下的
.gitolite 和.gitolite.rc 和 repositories 和 ~/.ssh/authorized_keys四个文件!!
 
退出git用户
$exit
到这里,gitolite就安装完成了,并且会在 /home/git/repositories 目录中创建了
gitolite-admin.git 和 testting.git 两个目录
在这里,
gitolite-admin.git目录为用户管理仓库
testting.git为测试仓库
并且A1管理员也已经确定下来!!!
 

三:测试使用gitolite!

3.1 管理员机下载gitolite仓库管理
在上面的步骤中,我们配置好了gitolite,在这里,我们来测试一下,
首先,在管理员的机子 A1 中,下载 管理仓库!
A1端:
root@admin:/$ git clone git@192.168.0.196:gitolite-admin
 
可以得到如下打印信息,由于是管理员机子,所有直接不需要密码,就可以把gitolite-admin.git仓库里面的东西下载下来
Git : Ubuntu-git服务器搭建之亲自搭建 - zheng_he_xiang - zheng_he_xiang的博客
 
******在这里,可以看到传输是已经成功了,但是还是会打印出很多烦人的提示如******
LC_All = ...
LC_TIME = ...
LC_MONETARY = ...
...等等
解决方法为在:
~/.bashrc中添加
再最底部加上
export LC_ALL=C
 
或者直接运行
echo "export LC_ALL=C" >> /root/.bashrc
 
然后执行一下:
source /root/.bashrc
 
在这个时候,在A1中可以得到如下文件夹:
Git : Ubuntu-git服务器搭建之亲自搭建 - zheng_he_xiang - zheng_he_xiang的博客
进入该文件夹
 
root@admin:/$ cd gitolite-admin
 
可以看到在这个又两个目录 conf keydir
Git : Ubuntu-git服务器搭建之亲自搭建 - zheng_he_xiang - zheng_he_xiang的博客
conf 目录保存的是配置文件
keydir目录保存的这是各个用户的密钥!
 
 
3.2 测试gitolite
3.2.1 用户端上传密钥给管理员A1
在这里,我们需要预先把 C1 密钥上传给 管理员端 A1
C1端:
生成密钥
root@client :/$  ssh - keygen - t rsa
使用scp上传密钥给 A1 (A1 ip 192.168.6.200)
root@client :/$  scp ~/.ssh / id_rsa.pub root@192.168.6.200:/home /tmp/
传输成功得到如下提示:
Git : Ubuntu-git服务器搭建之亲自搭建 - zheng_he_xiang - zheng_he_xiang的博客
假如不能和使用scp命令来传输,那么也是老方法了,使用移动硬盘把C1的密钥拷贝给 A1!!
 
这个时候,在A1端,我们可以看到
在/home/tmp目录中有:
Git : Ubuntu-git服务器搭建之亲自搭建 - zheng_he_xiang - zheng_he_xiang的博客
这个id_rsa.pub就是刚才 C1上传上来的密钥了!!
 
这是,在A1端我们需要实现如下操作:
修改C1的密钥的名字,方便记忆和使用,因为C1 ip为  192.168.6.201所有有如下操作:
root@ admin/home/tmp $  mv id_rsa.pub 201.pub  
把密钥拷贝到gitolite-admin目录中的keydir目录中!
root@ admin/home/tmp $ cp 201.pub /home/tmp/gitolite-admin/keydir/(keydir目录就是用来保存所有用户密钥的特定目录)!
 
3.2.2 管理员修改权限
完成上文操作后,现在我们来建立一个tomtest的测试仓库!
在A1端:
进入配置文件目录 conf
root@admin/home/tmp $  cd gitolite-admin/conf
修改配置文件
root@admin/home/tmp/gitolite-admin/conf $  vi gitolite.conf
在这个时候可以看到,配置文件内容为:
Git : Ubuntu-git服务器搭建之亲自搭建 - zheng_he_xiang - zheng_he_xiang的博客
我们在这里,添加
repo tomtest
    RW+    =    201
如下图所示:
Git : Ubuntu-git服务器搭建之亲自搭建 - zheng_he_xiang - zheng_he_xiang的博客
然后,保存退出后,开始上传提交仓库!
现在退出到gitolite-admin目录执行以下操作
root@admin/home/tmp/gitolite-admin $ git add .
root@admin/home/tmp/gitolite-admin $ git commit -am "add 201"
root@admin/home/tmp/gitolite-admin $ git push origin master        //默认在配置仓库的config文件中origin就已经定义了服 务器的地址了!
这个时候,就把修改上传给了服务器了,我们现在再到服务器端看一下是否有修改到!
 
在S1服务器端:
现在我们使用ls命令来查看一下仓库是否有变化:
进入仓库
root@server:/$ cd /home/git/repositories
root@server: /home/git/repositories $ ls
在这个时候,可以看到如下结果:
Git : Ubuntu-git服务器搭建之亲自搭建 - zheng_he_xiang - zheng_he_xiang的博客
在服务器上,多了一个tomtest.git 空仓库了!!!!!!!!!
并且这个空的仓库,是已经初始化好的仓库,并且只有客服端C1 对该仓库有读写权限!!!
 
3.2.3 测试仓库tomtest.git
从上文可以知道,服务器上,已经创建好的一个空的tomtest.git仓库了,
现在我们来测试一下把需要的项目上传到tomtest.git中!
 
现在我们在客户端C1中,随便创建一个tomtest目录,并在里面添加东西
如下操作:
root@client:/$  mkdir tomtest
root@client:/tomtest$ mkdir aaa
root@client:/tomtest$ touch ccc
root@client:/tomtest$ cd   aaa
root@client:/tomtest/aaa$ touch aaa
从上面的操作可以知道
我们在客户端创建了一个 tomtest目录,并且在tomtest目录中,创建了目录aaa和文件 ccc
并且在目录aaa中创建了文件aaa
接下来我们执行以下操作
root@client:/tomtest$ git init        //初始化
root@client:/tomtest$ git add .
root@client:/tomtest$ git commit -am "No.1"
root@client:/tomtest$ git remote add origin git@192.168.0.196:tomtest
root@client:/tomtest$ git push origin master
在这个时候,我们就可以把tomtest项目不需要任何密码 保存到了服务器中,
 
现在我们再使用管理员来测试,
A1端:
root@admin:/$  git clone git@192.168.0.196:tomtest        //下载服务器中的tomtest项目
会提示如下错误信息:
Git : Ubuntu-git服务器搭建之亲自搭建 - zheng_he_xiang - zheng_he_xiang的博客
直白点,就是管理员,下载不了这个项目!!!,为什么,因为在上面的操作中,
对tomtest项目有读写操作权限的,只有客户端 C1!!!
现在,我们在切换回去客户端C1
C1端:
我们先把刚才的tomtest项目删除,按道理,因为tomtest项目已经上传到服务器中了,所有哪怕我们
删除了该tomtest项目,只要再想服务器下载,还是可以完整的下载回来的!!!!
操作如下:
root@client:/rm  -r tomtest    //完全删除了tomtest项目
 
向服务器下载tomtest项目
root@client:/$  git clone git@192.168.0.196:tomtest
得到如下结果:
Git : Ubuntu-git服务器搭建之亲自搭建 - zheng_he_xiang - zheng_he_xiang的博客
完整下载!!!!!
我们通过查看,可以看到这个下载的tomtest项目,就是我们之前上传上去的项目!!!!!!
Git : Ubuntu-git服务器搭建之亲自搭建 - zheng_he_xiang - zheng_he_xiang的博客!!
到这里可以验证了gitolite的项目管理的能力了!!!!!!!!!!!!!!!!!!!!!!!!!!

四:安装测试gitweb apache2

4.1 在服务器端S1 安装gitweb 和 apache2
安装gitweb apache2
root@service : / $  sudo apt - get install gitweb apache2
4.2 配置gitweb
默认没有css加载,把gitweb要用静态文件连接到DocumentRoot下:
root@service : / $  cd /var/www/
root@service : / $  sudo ln -/usr/share/gitweb/* .
**注意以上有个. !**
4.3 修改gitweb配置
root@service : / $  sudo vi /etc/gitweb.conf
将$projectroot改为git仓库目录 如下图:保存后刷新浏览器
Git : Ubuntu-git服务器搭建之亲自搭建 - zheng_he_xiang - zheng_he_xiang的博客
 
到这里,在浏览器中,访问网页:
输入 192.168.0.196/cgi-bin/gitweb.cgi   或者输入 http://192.168.0.196/gitweb/网站访问如下图:


Git : Ubuntu-git服务器搭建之亲自搭建 - zheng_he_xiang - zheng_he_xiang的博客

可能遇到的问题汇总:

1今天使用git 添加远程github仓库的时候提示错误:fatal: remote origin already exists. 


这里写图片描述

最后找到解决办法如下: 
1、先删除远程 Git 仓库

$ git remote rm origin

2、再添加远程 Git 仓库

$ git remote add origin git@github.com:FBing/java-code-generator

如果执行 git remote rm origin 报错的话,我们可以手动修改gitconfig文件的内容

$ vi .git/config

这里写图片描述

把 [remote “origin”] 那一行删掉就好了。

  2待更新

Ubuntu Git安装与使用

本文整理和归纳了关于Ubuntu中Git安装与使用的资源,希望对大家有所帮助。
  • YhL_Leo
  • YhL_Leo
  • 2016年02月28日 17:26
  • 25480

ubuntu 16.04 安装git的方法

Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。通过使用git工具,我们可以实现团队间合作开发统一管理,可以从远程仓库中提取代码,也可以把代码上传到远程仓库,从而实现...

Ubuntu14.04下Git安装和使用快速入门

Git是目前世界上最先进的分布式版本控制系统,GitHub是一个使用Git来托管代码的网站。 (关键词:repository:版本库又名仓库) Git的安装: 方法一:下载Git源码编译安装 htt...
  • my_xxh
  • my_xxh
  • 2016年05月27日 22:38
  • 7751

Ubuntu14.04环境中搭建属于自己的Git服务器

最近要开始源码环境搭建了。没有现成的环境只好自己搭建了。基于Ubuntu14.04搭建。理论上通用其他版本的Ubuntu。后续在整理一遍关于Git服务器下搭建Android源码版本管理。 在这里Gi...

ubuntu完美搭建git服务器

最近公司项目需要用到Git来管理项目,正好逢周末花了点时间在虚拟机的unbuntu系统中搭建了下git的服务器,由于搭建过程中多多少少遇到了一些小问题,再因为个人记性不太好,所以在这里记录下来,以备不...

Ubuntu 16.04搭建git服务器

一、安装git服务器所需软件 终端输入以下命令: ubuntu:~$ sudo apt-get install git-core openssh-server openssh-client p...

ubuntu完美搭建git服务器-完善版

最近公司项目需要用到Git来管理项目,正好逢周末花了点时间在虚拟机的unbuntu系统中搭建了下git的服务器,由于搭建过程中多多少少遇到了一些小问题,再因为个人记性不太好,所以在这里记录下来,以备不...
  • dddxxxx
  • dddxxxx
  • 2015年10月11日 18:22
  • 5774

一步步在阿里云的Ubuntu服务器上搭建自己的Git服务器

如何在Ubuntu上搭建Git服务器代码的托管可以用GitHub,这个价格比较高,也可以选择国内的Coding,功能都很完善,价格也普遍可以接受,但无论哪个都不是自己的服务器总觉得不放心,这里介绍如何...
  • puyahua
  • puyahua
  • 2016年09月07日 10:00
  • 936

ubuntu16.04 搭建git服务器简单教程

ubuntu16.04创建git服务器简单教程
  • xiemanR
  • xiemanR
  • 2016年11月30日 12:20
  • 4178

ubuntu14.04搭建git服务器、远端仓库、自动部署

搭建的过程中细节太多,也走了许多弯路,就不说了,主要谈一谈几个注意点: 1、一定要学会看错误提示 从错误提示上可以看到很多东西,比如提示你哪儿哪儿权限不够,你就应该知道去改权限 比较有用的两个命令: ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Git : Ubuntu-git服务器搭建之亲自搭建--学习
举报原因:
原因补充:

(最多只允许输入30个字)