在云服务器上搭建git服务

305 阅读4分钟

搭建Git服务器需要准备一台运行Linux的机器,在此我使用的是CentOS。以下为安装步骤:

1.使用xshell连接云服务器

2.安装编译源码所需依赖服务环境准备(此命令下已经安装git,版本为1.8.3,yum默认安装的git版本不是最新版本,下面会提到)

yum -y install curl curl-devel zlib-devel openssl-devel perl cpio expat-devel gettext-devel gcc cc perl-ExtUtils-MakeMaker

耐心等待安装,出现提示输入y即可,服务环境安装完成如下图:

安装完成后可以查看安装的git版本如下图:

使用yum安装确实简单方便,但yum存在一个问题就是安装的版本不好控制,如上图所示,安装的版本为1.8.3,这个版本太老了。

登录github的Git版本发布界面,可以看到目前最新的版本为2.26.0,如下图所示:

如果需要安装最新的版本Git,可以从github下载最新的源码进行编译,然后安装。

3.源码编译安装git:

  • 获取github想要下载的git安装下载链接,在此我选择v.2.25.0版本,进入Linux服务器,执行下载,命令为:wget https://github.com/git/git/archive/v2.25.0.tar.gz

  • 压缩包解压,命令为:tar -zxvf v2.25.0.tar.gz

  • 在步骤2安装编译源码所需依赖时,yum自动安装了Git,需要卸载旧版本Git,命令为: yum remove git 出现提示输入y即可;

  • 但在下载完压缩包后,解压文件,出现如下报错:出现报错的原因是因为通过命令wget https://github.com/git/git/archive/v2.25.0.tar.gz下载的安装包不完整,出现了解压的错误,可以通过github的Git版本下载到本地,然后通过命令把本地安装包上传到服务器,再解压安装。

  • 本地文件上传到服务器的方法,使用命令yum install lrzsz在服务器安装lrzsz,然后输入rz命令会弹出如下弹框就可以选择上传

    同样可以通过sz + 文件名的方式下载文件。

  • 上传完成本地安装包后,通过命令tar -zxvf git-2.25.0.tar.gz解压

    其中解压命令中的zxvfv可以不加,v是显示进度的意思。

  • 解压完毕后会有一个git-2.25.0的文件夹,进入文件夹cd git-2.25.0,里面都是git的源代码,然后对源代码进行编译,编译源代码需要生成一个Makefile,但源代码里面没有Makefile,所以我们要生成一个Makefile,先执行autoconf命令,执行完毕后再执行./configure,这个命令执行完毕后就会生成一个Makefile,C语言编译是需要一个Makefile文件的,然后执行make命令编译,这个编译大概花费一分钟时间,编译完成后是安装,执行make install命令安装,这样就会把git安装到相应目录

  • 但在执行autoconf命令时报错

  • 首先检查你的安装包yum whatprovides autoconf automake然后在根目录下执行下面命令:yum -y install autoconf-2.69-11.el7.noarchyum -y install automake-1.13.4-3.el7.noarch

  • 然后回到git-2.25.0目录下执行autoconf命令,再执行./configure命令,然后执行make命令编译,编译完成后是安装,执行make install命令安装,这样就会把git安装到相应目录

4.下面建一个专门使用git远程仓库上传下载文件的账号

adduser -r -c 'git version control' -d /home/git -m git

此命令执行后会创建/home/git目录作为git用户的主目录(此命令最后是用户名)

5.设置密码:

命令为:passwd git

现在我们看下/home下有git用户的文件夹,那么git已经创建好了

现在我们可以通过su git命令切换到git用户,然后通过whoami命令查看当前用户,可以看到当前为用户名为git的这个用户

使用cd ~命令,跳转到git这个用户的home下面,通过pwd打印当前路径如下图

在当前目录下创建一个目录repository,在repository目录下,我们通过git命令初始化一个服务器端linux下的本地仓库,使用git init初始化的是默认带工作目录的版本库,但在服务器上市创建纯版本库(不带工作目录),故使用的命令时git init --bare,这样初始化的版本库是不带工作目录的纯版本库,服务端上的仓库基本都是不带工作目录的纯版本库,如下图

这样,服务器上的本地仓库就初始化好了,我们就可以把该仓库作为远程仓库,把本地仓库的代码推送到服务器上的远程仓库了。