玖叶教程网

前端编程开发入门

CENTOS7下部署Git服务器(超详细教程)

参考1:https://www.cnblogs.com/fly_dragon/p/8718614.html

参考2:https://blog.csdn.net/dumingming_stj/article/details/80551312

删除老版本Git,自带的好像是1.8

yum remove git
安装新版Git
#安装gcc
yum install gcc
#安装g++
yum install gcc-c++
#安装编译所需的包
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel
yum install gcc perl-ExtUtils-MakeMaker
wget -P /usr/src/git-2.19.1 https://www.kernel.org/pub/software/scm/git/git-2.19.1.tar.gz
#切换到指定目录
cd /usr/src/git-2.19.1/
?
#解压源码包
tar zxvf git-2.19.1.tar.gz
?
#进入解压目录
cd git-2.19.1/
?
#配置安装目录并编译和安装(耐心等待……)
./configure --prefix=/usr/local/git-2.19.1 && make install
?
#将编译好的git-2.18.0 bin目录添加到bashrc中,相当于添加全局变量
echo 'export PATH=$PATH:/usr/local/git-2.19.1/bin' > /etc/profile.d/git.sh
?
#使bashrc立即生效,全局变量立即生效
source /etc/bashrc
?
#查看git版本,如果是版本是git version 2.18.0即大功告成
git --version
?
#如果发现还是老版本,再执行一次即可
yum remove git
?
#至此,CentOS 就安装上了最新版本的 Git。

创建一个git用户

#root用户下创建用户git
id git #查看系统里面是否已经存在此账户
#如果存在删除此用户
userdel -r git
#如果不存在直接添加即可
groupadd git
useradd git -g git
passwd git #为用户git设置一个登录密码,如果不配置ssh登录,每次clone等操作都需要此密码
开启ssh登录(不是必须)
如果不配置每次克隆,推送代码都要输入gjt用户密码,其实GitHub等网站采用的ssh登录方式都是采用的上传公钥方式。所以推荐配置。
#最好切换到git用户 不然后面新建的git仓库都要改权限
su git
cd /home/git
chmod 700 .ssh
#ssh-keygen -t rsa //默认会生成~/.ssh/id_rsa.pub公钥文件。
mkdir /home/git/git-shell-commands #如果没有这个一会本机登录会有问题
?
#切换到root
su
cd /home/git/.ssh
chmod 600 authorized_keys
vim authorized_keys
#把你客户端生成的公钥复制进去就OK了
#或者是上传本地id_id_rsa.pub 直接改名为authorized_keys(掉进此坑,半天之后才爬出来)
#cat authorized >> authorized_keys
?
vim /etc/ssh/sshd_config
?
#开启公钥免密码登录
RSAAuthentication yes
PubkeyAuthentication yes

初始化Git仓库

su git
$ cd /home/git
$ git init --bare zhao.git
Initialized empty Git repository in /home/git/zhao.git/
#以上命令会创建一个空仓库,服务器上的Git仓库通常都以.git结尾。

本地克隆仓库测试

#如果没有更改过ssh默认的登录端口,默认22
$ git clone git@IP:zhao.git
Cloning into 'test'...
warning: You appear to have cloned an empty repository.
?
#如果更改过ssh端口号
gcl ssh://git@IP:端口号/~/zhao.git

注意:在服务器上是看不到你上传的这个test.txt文件的。但是,你再次克隆是可以下载到这个文件的。

如图所示:

服务器上:可以看到该目录下什么东西都没有

如果需要同步代码到服务器参考:https://blog.csdn.net/xiaoweite1/article/details/80344289

代码同步到服务器

--(没有多大必要)

登录git用户,在其夹目录下创建一个文件夹www用来同步代码;

然后进入zhao.git/hooks/目录下

[git@VM_0_12_centos ~]$ cd zhao.git/hooks/
#这里我们创建post-receive文件
vim post-receive
?
#在该文件里输入以下内容
#!/bin/bash
git --work-tree=/home/git/www checkout -f
?
#由于该文件其实就是一个shell文件,我们还应该为其设置可执行权限
chmod +x post-receive

然后本地再次推送代码,在www这个文件夹下是可以看到文件变动的,但是服务器并不能更改,所以我说并没有什么卵用。

禁止 git 用户 登录服务器

之前在服务器端创建的 git 用户不允许 ssh 登录服务器,不然会有很多安全问题出现

编辑 /etc/passwd
[root@localhost .ssh]# vim /etc/passwd
找到:
git:x:502:504::/home/git:/bin/bash
修改为
git:x:502:504::/home/git:/usr/local/git-2.19.1/bin/git-shell

设置成功之后,尝试从root切换到git用户登录只能进行git操作,大功告成:

添加一个新的项目到git服务器

1.服务器上先初始化一个仓库

2.本地拉取项目即可

删掉重新拉取一下,刚刚上传的文件可以拉取到:

喜欢文章的小伙伴可以点一波收藏加关注。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言