git的安装:

yum 源仓库里的 Git 版本更新不及时,最新版本的 Git 是 1.8.3.1,但是官方最新版本已经到了 2.9.2。想要安装最新版本的的 Git,只能下载源码进行安装。

1. 查看 yum 源仓库的 Git 信息:

1
# yum info git

可以看出,截至目前,yum 源仓库中最新的 Git 版本才 1.8.3.1,而查看最新的 Git 发布版本,已经 2.9.2 了。

2. 依赖库安装

1
2
# yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel
# yum install gcc perl-ExtUtils-MakeMaker

3. 卸载低版本的 Git

通过命令:git –-version 查看系统带的版本,Git 版本是: 1.8.3.1,所以先要卸载低版本的 Git,命令:

1
# yum remove git

4. 下载新版的 Git 源码包(我放的了  /usr/local/git 的目录下了,git是我自己mkdir的目录)

  进入:/usr/local下,新建git目录:  # mkdir git

  # cd git

在线下载最新的源码包

1
# wget https://github.com/git/git/archive/v2.9.2.tar.gz

也可以离线下载,然后传到 CentOS 系统中指定的目录下。

5. 解压当前目录

1
# tar -xzvf v2.9.2.tar.gz

6. 安装 Git

分别执行以下命令进行编译安装,编译过程可能比较漫长,请耐心等待完成。

1
2
3
# cd git-2.9.2
# make prefix=/usr/local/git all
# make prefix=/usr/local/git install

7. 添加到环境变量

vim /etc/profile

#如果没有vim,则安装vim工具   yum install vim

添加这一条:   export PATH="/usr/local/git/bin:$PATH"

source /etc/profile   #是配置立即生效

8. 查看版本号

1
2
# git --version
git version 2.9.2

8. 将git设置为默认路径,不然后面克隆时会报错

[root@localhost code]$ ln -s /usr/local/git/bin/git-upload-pack /usr/bin/git-upload-pack

[root@localhost code]$ ln -s /usr/local/git/bin/git-receive-pack /usr/bin/git-receive-pack

至此,CentOS 就安装上了最新版本的 Git。

第二步,创建一个git用户组和用户,用来运行git服务:

  1. $ groupadd git
  2. $ useradd git -g git
  3. $ passwd git #参数是用户名

最好切换到git用户 不然后面新建的git仓库都要改权限 烦烦烦!!

$ su - git 
 

第三步,创建证书登录:

如何生成密钥:http://blog.csdn.net/permanent_2008/article/details/73839384

{{{{

Git安装及密钥的生成

1.下载Git软件:http://msysgit.github.io/

2.安装git软件(很简单)。安装成功后,在[开始]->[程序]->[git],下就会看见Git Bash和Git GUI,打开Git Bash,进入bash界面。

 
 
 
3.注册邮箱
 在git bash界面输入如下内容即可完成邮箱的注册:
 $ git config --global user.name "user.name"
(说明:双引号中需要你的用户名,这个可以随便输入,比如“ming.xiao”)
 $ git config --global user.email "yourmail@youremail.com.cn"
(说明: 双引号中需要输入你的有效邮箱,比如“qwert@126.com.cn”)
 
4.查看是否存在ssh keys
 $ cd ~/.ssh
  若出现“No such file or directory”,则表示需要创建一个ssh keys。
 
5.创建新的ssh keys
 $ssh-keygen -t rsa -C "qwert@126.com.cn"
 $指定目录: C:\MykeysForGit\(说明:若在此处不输入路径,而直接按回车,则ssh keys生成后存放的路径为C:\User\.ssh)
 $输入密码: 123456
 $确认密码: 123456
   如此即可在C:\MykeysForGit\文件夹中生成ssh keys。包括两个文件rd_rsa和id_rsa.pub
 
 
6.到目前为止即完成了git软件的安装和钥匙的生成。之后需要在SourceTress或GitHub或GitLib软件中是使用到的ssh keys即可拷贝复制这里的两个文件id_rsa和id_rsa.pub。

}}}}

备注:下边虚线内容为多余内容,只是留着存档而已。于本教程没有关系

添加证书之前,还要做这么一步:

Git服务器打开RSA认证 。在Git服务器上首先需要将/etc/ssh/sshd_config中将RSA认证打开,

即:

1.RSAAuthentication yes

2.PubkeyAuthentication yes

3.AuthorizedKeysFile .ssh/authorized_keys

这里我们可以看到公钥存放在.ssh/authorized_keys文件中。

所以我们在/home/git下创建.ssh目录,然后创建authorized_keys文件,并将刚生成的公钥导入进去。

然后再次clone的时候,或者是之后push的时候,就不需要再输入密码了:

Zhu@XXX/E/testgit/8.34 $ git clone git@192.168.8.34:/data/git/learngit.git Cloning into 'learngit'... warning: You appear to have cloned an empty repository. Checking connectivity... done.

===============================

收集所有需要登录的用户的公钥,就是他们自己的id_rsa.pub文件,把所有公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个。

$ cd /home/git/
$ mkdir .ssh #新建文件夹
$ chmod 700 .ssh
$ touch .ssh/authorized_keys #新建文件
$ chmod 600 .ssh/authorized_keys

第四步,初始化Git仓库

  1. $ cd /home/git
  2. $ git init --bare test.git
  3. Initialized empty Git repository in /home/git/test.git/

以上命令会创建一个空仓库,服务器上的Git仓库通常都以.git结尾。


第五步、本地克隆仓库

  1. $ git clone git@your-ip:test.git
  2. Cloning into 'test'...
  3. warning: You appear to have cloned an empty repository.
  4. Checking connectivity... done.

your-ip 为您 Git 所在服务器 ip

 

用git clone 获取服务器上的代码

[root@localhost code]$ git clone root@192.168.57.61:/root/code.git

报错如下:

bash: git-upload-pack: command not found
fatal: The remote end hung up unexpectedly

什么原因呢?原来代码服务器【192.168.57.61】上的git安装路径是/usr/local/git,不是默认路径,根据提示,在git服务器192.168.57.61上, 建立链接文件:

[root@localhost code]# ln -s /usr/local/git/bin/git-upload-pack /usr/bin/git-upload-pack

再次,执行git clone ,果真可以了。

当然,如果无法修改git代码服务器上配置,可以在clone时,添加--upload-pack选项来指定git服务器上的git-upload-pack 路径,达到上面相同的目的,如下所示:

[root@localhost code]$ git clone --upload-pack "/usr/local/git/bin/git-upload-pack" root@192.168.57.61:/root/code.git

当然,也许你会遇到git-receive-pack 之类的错误,很有可能和这个原理是一样的,请采用类似的操作即可

5.禁止Shell登录

出于安全考虑,git用户不允许登录shell,这可以通过编辑/etc/passwd文件完成。 
找到类似下面的一行:

git:x:502:502::/home/git:/bin/bash

改为

git:x:502:502::/home/git:/usr/local/git/bin/git-shell

这样,git用户可以正常通过ssh使用git,但无法登录shell,因为我们为git用户指定的git-shell每次一登录就自动退出


参考文档:
git安装部署  http://www.cnblogs.com/imayanlong/p/5617626.html 
git/ssh捋不清的几个问题  http://www.cnblogs.com/hustskyking/p/problems-in-git-when-ssh.html
centos7下git服务器端搭建和验证  https://my.oschina.net/u/2343829/blog/644663
Git 服务器搭建  http://www.runoob.com/git/git-server.html
Windows下SSH连接git服务器 https://www.zybuluo.com/zhutoulwz/note/30495

centos7下git服务器端搭建的更多相关文章

  1. centos7下git服务器端搭建(转)

    git的安装: yum 源仓库里的 Git 版本更新不及时,最新版本的 Git 是 1.8.3.1,但是官方最新版本已经到了 2.9.2.想要安装最新版本的的 Git,只能下载源码进行安装. 1. 查 ...

  2. centos7下git的安装和配置

    git的安装: yum 源仓库里的 Git 版本更新不及时,最新版本的 Git 是 1.8.3.1,但是官方最新版本已经到了 2.9.2.想要安装最新版本的的 Git,只能下载源码进行安装. 1. 查 ...

  3. Windows下Git服务器搭建[转]

    Windows下Git服务器搭建   作为对前两天Git服务器搭建的一个整理,我想分别从服务端和客户端两个角度来记录下整个搭建过程,为了达到目标,我们需要哪些操作. (一)服务端软件和账号的安装配置 ...

  4. 【MIT6.828】centos7下使用Qemu搭建xv6运行环境

    title:[MIT6.828]centos7下使用Qemu搭建xv6运行环境 date: "2020-05-05" [MIT6.828]centos7下搭建xv6运行环境 1. ...

  5. Ubuntu下Git从搭建到使用详解

    Ubuntu下Git从搭建到使用详解 一.git的搭建 (1).sudo apt-get update (2).sudo apt-get -y install git 符:安装最新版本方法: add- ...

  6. Git系列(1) Windows下Git服务器搭建

    作为对前两天Git服务器搭建的一个整理,我想分别从服务端和客户端两个角度来记录下整个搭建过程,为了达到目标,我们需要哪些操作. (一)服务端软件和账号的安装配置 我们这里只需要两个软件git和ssh, ...

  7. CentOS 6.5下Git服务器搭建

    1 . Git服务器搭建 1. 环境部署 系统环境:服务器端:CentOS 6.5 ,ip:192.168.56.1 客户端:CentOS 6.5 ,ip:192.168.56.101 软件版本:服务 ...

  8. Centos7下git服务器及gogs部署

    1.安装git # yum install -y git 2.创建git用户及组 # groupadd git # adduser git -g git # mkdir /home/git # mkd ...

  9. Linux centos7 下 svn 服务器搭建

    摘自:https://www.cnblogs.com/mymelon/p/5483215.html 鉴于在搭建时,参考网上很多资料,网上资料在有用的同时,也坑了很多人 本文的目的,也就是想让后继之人在 ...

随机推荐

  1. windows下搭建docker

    1.下载,双击安装,然后一路next 2.启动,然后打开docker的settings 在shared drives里勾选你想要把项目存放的盘,点击Apply(这里在windows系统下有个坑,项目只 ...

  2. ajax 200 4 parseerror 的错误

    这个问题也碰到几次: 最后在网上还是找到了点线索:1.一可能是data:中的json 不规范2.js语句不规范3.我碰到的是dataType: 'json',data:是数组,最后把json改为tex ...

  3. 转发一篇好文:36氪翻译自medium的文章: 读书没有 KPI:为什么坚持“一年读 100 本书”没用?

    你只是为了达成所谓的数量目标而读书. 编者按:读书本是一项安静.缓慢的活动,但随着现代社会节奏的加快,信息技术的广泛普及,读书这一行为模式也开始发生了变化.越来越多的人开始碎片化阅读,并且越来越多的文 ...

  4. vim保存只读文件时获得sudo权限

    有时使用vim时忘记输入sudo,导致编辑了一大堆文字,最后保存时发现是只读文件,无法保存,每次保存都会提示read only.这时可以使用如下命令代替原有的 :wq 命令 :w !sudo tee ...

  5. [No0000184]JAVA语言学校的危险性

    下面的文章是More Joel on Software一书的第8篇. 原文: http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools ...

  6. [No000014E]提问的智慧How To Ask Questions The Smart Way

    原文版本历史 目录 声明 简介 在提问之前 当你提问时 慎选提问的论坛 Stack Overflow 网站和 IRC 论坛 第二步,使用项目邮件列表 使用有意义且描述明确的标题 使问题容易回复 用清晰 ...

  7. FutureTask的用法及两种常用的使用场景

    FutureTask可用于异步获取执行结果或取消执行任务的场景.通过传入Runnable或者Callable的任务给FutureTask,直接调用其run方法或者放入线程池执行,之后可以在外部通过Fu ...

  8. 如何用Eclipse+maven创建servlet 3.0 web 项目

    用eclipse + maven, 选择 maven-archetype-webapp,默认的servlet版本是2.3. 目前servlet版本都已经是3.X. 那有什么办法可以创建servlet ...

  9. 【魔改】树状数组 牛客多校第五场I vcd 几何+阅读理解

    https://www.nowcoder.com/acm/contest/143/I vc-dimension 题解:分三种情况,组合数学算一下,其中一种要用树状数组维护 技巧(来自UESTC):1. ...

  10. [daily][archlinux] 本地字符乱码, 无法显示中文

    一: 突然有一天,Konsole里边看见的中文文件名的文件,就变成了乱码.thunderbird存到本地的附件,文件名也变成了乱码. 在X下查看locale,内容如下: 手动设置了之后也不对. 但是在 ...