centos搭建git服务器

第一步,安装git

  • 查看git版本:https://github.com/git/git/releases?_blank
  • 查看git安装说明:https://github.com/git/git/blob/master/INSTALL?_blank

yum info git 可以看到服务器上自带的是1.8.3.1版本,我也升级下最新的是2.16.2(2018-03-05)

开始安装git

进入/home/soft目录,直接下载安装git,先不用安装一大推的扩展,等安装过程中报错了,看需要哪个扩展再装哪个~

cd /home/soft/
wget https://github.com/git/git/archive/v2.16.2.tar.gz
tar -zxvf v2.16.2.tar.gz
cd git-2.16.2
mkdir /usr/local/git
make prefix=/usr/local/git #报错了,libiconv错误
下载安装libiconv
```bash
cd /home/soft
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
tar -zxvf libiconv-1.14.tar.gz
cd libiconv-1.14
./configure --prefix=/usr/local/libiconv && make && make install

    编译libiconv发生./stdio.h:1010:1: 错误:'gets'未声明(不在函数内)
    解决如下:
    ```bash
    cd srclib/ #进到出错文件的目录
    sed -i -e '/gets is a security/d' ./stdio.in.h #编辑出错文件
    cd ../ #回到编译对象目录
    make #重新Make安装
    ```
至此libiconv安装结束

继续编译安装git

cd /home/soft/git-2.16.2
make clean #清理之前的编译文件
make prefix=/usr/local/git #重新执行安装,但是依旧报错,libiconv错误

换一种方式,使用configure,增加libiconv

make clean
make configure 
./configure --prefix=/usr/local --with-iconv=/usr/local/libiconv/
make install

安装成功!

创建软连接

ln -s /usr/local/git/bin/git /usr/bin/git

查看版本

git --version

第二步,创建git用户,导入公钥。

创建用户与组

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

本地创建公钥

ssh-keygen -t rsa -C "893371810@qq.com"
cd /home/lypeng/.ssh/

拷贝到服务器

scp id_rsa.pub lypeng@your_ip:/home/lypeng/id_rsa.pub

登录服务器,将公钥导入到auth验证文件

vim /home/git/.ssh/authorized_keys
:r /home/lypeng/id_rsa.pub
:wq

开启ssh中的RSA认证

vim /etc/ssh/sshd_config

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

创建仓库

cd /home/git
git init —bare test.git

本地克隆仓库,提交测试

mkdir /home/gitrepo
cd /home/gitrepo
git clone git@your-ip:test.git

echo 123456 > a.txt
git add a.txt
git commit -m ‘first’

git remote add mytestrepo git@your_ip:test.git
git push -u mytestrepo master

发生错误如下:

git@your_ip’s password:
对象计数中: 3, 完成.
写入对象中: 100% (3/3), 200 bytes | 0 bytes/s, 完成.
Total 3 (delta 0), reused 0 (delta 0)
error: unpack failed: unable to create temporary object directory
To git@your_ip:test.git
! [remote rejected] master -> master (unpacker error)
error: 无法推送一些引用到 ‘git@your_ip:test.git’

unable to create temporary object directory,无法创建临时目录,看样子应该是权限问题,怀疑是.git文件夹写权限问题。

给个test.git整体777试试

chmod 777 test.git -R
git push mytestrepo

ok,提交成功!

至此,clone push等测试结束!

标签:GITCentos 发布于:2019-10-26 15:39:19