当前位置: 首页 > Linux

如何在Linux上搭建Git中央仓库

时间:2023-04-06 06:04:18 Linux

前言:本教程仅供那些想在Linux上搭建Git中央仓库的个人开发者上传发布自己的项目。但是对团队的要求可能会更高。可以使用gitlab搭建类似github的可视化版本管理系统测试环境。我使用的linux版本是Centos7。如果使用其他发行版,步骤相同使用yum安装方式安装GitCentosyuminstall-ygit创建Git用户运行Git服务1.创建git用户addusergit2。设置用户密码passwdgit3。禁止shell登录vim/etc/passwd找到git用户一行并修改git:x:1001:1001:,,,:/home/git:/bin/bash为git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell这样新创建的git用户可以通过ssh正常使用git,但是不能登录shell,创建客户端登录证书会更安全1.客户端创建私钥和公钥ssh-keygen-trsa-C"12345678@qq.com"创建后在你的用户主目录下会有一个.ssh文件夹,其中id.rsa就是私钥,id.rsa_pub是公钥。公钥里的内容后面会用到2.git服务器打开RSA认证vim/etc/ssh/sshd_config找到并去掉前面的#号RSAAuthenticationyesPubkeyAuthenticationyesAuthorizedKeysFile.ssh/authorized_keys最终效果如图3所示。在git用户主目录下新建.ssh文件夹,然后在文件夹下新建文件authorized_keyscd/home/gitmkdir.sshcd.sshvimauthorized_keys。4.将客户端的id.rsa_pub公钥写入authorized_keys文件,一行一个。添加这个之后,连接中央仓库就不需要输入密码了。可以直接使用公钥私钥验证方式创建git中央仓库1.进入git用户主目录cd/home/git2.创建裸仓库(一般以.git结尾)gitinit--baretest.git#以test.git为例,当然你可以任意命名。裸仓没有工作空间,纯粹为了共享。3.修改仓库用户ownerchown-Rgit:gittest.git使用githook中央仓库其实只是一个中介。如果想把中央仓库的代码和你域名下的文件夹关联起来,就需要使用githook来实现。当客户端提交代码到中央仓库时,中央仓库也可以将代码推送到另一个文件夹1.在服务器上初始化一个本地仓库。这个仓库就是你的虚拟主机指定的文件夹,也就是你输入域名后要访问的文件夹cd/var/www#进入你的虚拟主机的挂载目录gitinit#初始化gitgitremoteaddorigin/home/git/test.git#将远程仓库添加到隔壁的中央仓库(滑稽)chown-Rgit:git/var/www#修改服务器本地仓库的用户组2.在中央仓库设置hook进入hook远程仓库的目录cd/home/git/test.git/hooks新建文件post-receivevimpost-receivewriteshellscript#!/bin/shunsetGIT_DIRDeployPath=/var/www#这里的目录是你自己的虚拟主机cd$DeployPathgitadd。-A&&gitstashgitpulloriginmaster当然你也可以根据情况把这个脚本写得更厉害一些post-receive添加可执行权限chmod+xpost-receiveclientremotegitserver这应该是最期待的一步了,实现本地提交代码到服务器,通过hooks实现项目的自动部署和以往使用git上传代码到github没有区别1、克隆中央仓库方法一gitclonegit@192.168.229.130:test。git#put把ip改成自己服务器的ip方法2gitinitgitremoteaddorigingit@118.89.28.249:test.git#把ip改成自己服务器的ip2.推送远程服务器(第一次加-u参数)gitpush-uoriginmasterend通过以上步骤,其实可以实现一个简单的git服务器,是不是很简单呢?