linux中央服务器,如何在Linux上搭建一个Git中央仓库

前言:本教程只面向那些个人开发者,想要自己在linux上搭建一个git中央仓库用来上传发布自己的项目。但是对于团队来说可能有更高的要求,可以使用gitlab搭建一个可视化的类似github的版本管理系统

测试环境

我使用的linux版本是Centos7,如果大家使用的是其他发行版本,步骤也都是一样的

安装Git

Centos上使用的是yum的安装方式

yum install -y git

创建一个Git用户来运行Git服务

1.创建git用户

adduser git

2.设置用户密码

passwd git

3.禁止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 -t rsa -C "12345678@qq.com"

创建后你的用户主目录下面就有个.ssh文件夹,里面的id.rsa就是私钥,id.rsa_pub就是公钥。公钥里面的内容待会要用到

2.git 服务器打开RSA验证

vim /etc/ssh/sshd_config

找到并去掉前面的#号

RSAAuthentication yes

PubkeyAuthentication yes

AuthorizedKeysFile .ssh/authorized_keys

最后效果如图所示

82f2460e91e8

打开RSA验证

3.在git用户的主目录里新建.ssh文件夹,然后在文件夹里面新建文件authorized_keys

cd /home/git

mkdir .ssh

cd .ssh

vim authorized_keys

4.将客户端的id.rsa_pub公钥写进文件authorized_keys,一行一个。添加了这个以后你连接中央仓库就不需要输入密码了,直接使用公钥和私钥的验证方式

创建git中央仓库

1.进入git用户主目录

cd /home/git

2.创建一个裸仓库 (一般以.git结尾)

git init --bare test.git #以test.git为例子,当然你可以叫任意名字

裸仓库是没有工作区的,纯粹为了共享

3.修改仓库用户属主

chown -R git:git test.git

使用git hook

中央仓库其实只是一个中介,如果你想要把中央仓库的代码关联到你域名挂载下的文件夹时候,就需要使用到git的钩子来实现,当客户端提交代码到中央仓库,中央仓库能将代码也推送到另外的一个文件夹下面

1.在服务器初始化一个本地仓库

这个仓库就是你虚拟主机指定的文件夹,也就是你输入域名后会访问到的那个文件夹

cd /var/www #进入你虚拟主机的挂载目录

git init #初始化git

git remote add origin /home/git/test.git #添加远程仓库到隔壁的中央仓库(滑稽)

chown -R git:git /var/www #修改服务器本地仓库的用户属组

2.在中央仓库中设置钩子

进入远程仓库的钩子目录

cd /home/git/test.git/hooks

新建一个文件post-receive

vim post-receive

编写shell脚本

#!/bin/sh

unset GIT_DIR

DeployPath=/var/www #这里的目录是你自己虚拟主机的目录

cd $DeployPath

git add . -A && git stash

git pull origin master

当然你也可以视情况而定,将这个脚本编写得更加强大

给文件post-receive添加可执行权限

chmod +x post-receive

客户端远程git服务器

这应该也是大家最期待的步骤了,实现本地提交代码上服务器,通过钩子实现项目的自动部署

其实到了这一步,就和你以前使用git上传代码到github上面没有什么区别了

1.克隆中央仓库

方法一

git clone git@192.168.229.130:test.git #把ip换成你自己服务器的ip

方法二

git init

git remote add origin git@118.89.28.249:test.git #把ip换成你自己服务器的ip

2.推送远程服务器 (第一次加上-u参数)

git push -u origin master

结尾

通过上面的这些步骤其实就可以实现一个简易的git服务器了,是不是很简单呢?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/526646.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux桌面发展方向,观点|Linux 桌面的发展之路!

Ken Starks 在 fossforce.com 网站上问 你们是如何优化 Linux 的?,我很高兴他问了这个问题,因为我有话要说!对我来说,Linux 桌面就是一连串的承诺,但是这些承诺却总是无法兑现。它在每个版本发布后都会说“…

arm linux 脚本 排序,arm-linux连接以及连接脚本

前言:arm linux的连接工具可以使用arm-linux-ld,在进行连接时可以使用-T命令采用脚本控制,如不指明脚本,则使用默认的脚本文件,参见arm-linux-ld的缺省linker script。一.目标文件格式与类型本文引用地址:h…

linux常见基础服务,常用的linux命令的基本使用(一)

序号命令对应英文作用01lslist查看当前文件夹下的内容02pwdprint name of of current/working directory查看当前所在文件夹03cd[目录名]change directory切换文件夹04touch[目录名]touch如果文件不存在,新建文件05mkdir[目录名]make directory创建目录06rm[文件名]…

vlc-qt编译 linux,记录一次搞vlc官方源码中Qt示例工程的过程,文件路径对话框

代码目录:E:\vlc-3.0.12\doc\libvlc\QtPlayer编译成立,但是libvlc_new返回NULL老子就是要搞他,在网上的其他人成功的代码帮助下要把他搞成(背景是:老板要在Qt界面里播放视频文件,本身知道opencv会更简单点,但是想自己去根据文档再熟悉vlc sdk的使用)libvlc_new返回NULL原因是pl…

linux kernel 调度,在Linux中,实时调度_kernel_开发99编程知识库

在實時調度,fifo和RR不具有完全相同的含義他們在非實時調度。 但是,進程總是在FIFO方式中選擇的時間量程SCHED_FIFO不限制不同的時間量程SCHED_RR 。schED_FIFO進程不能preempt SCHED_RR進程相同的優先順序。sched_setscheduler( 2 ) linux手冊頁。。。&…

c语言程序设计课程设计心得体会,C语言程序课程设计心得体会

在科技高度发展的今天,计算机在人们之中的作用越来越突出,学习它,有助于我们更好的了解计算机,与计算机进行交流,因此,c语言的学习对我们尤其重要。在这个星期里,我们专业的学生在专业老师的带领…

树莓派怎么学linux,树莓派使用入门用树莓派学 Linux

树莓派使用入门用树莓派学 Linux我们的《树莓派使用入门》的第四篇文章将进入到 Linux 命令行。在本系列的 第三篇文章 中开始了我们的树莓派探索之旅,我分享了如何安装 Raspbian,它是树莓派的官方 Linux 版本。现在,你已经安装好了 Raspbian…

全国计算机二级C语言过关要求,计算机二级考试c语言过关经验

计算机二级考试c语言过关经验考试要求考生在规定的时间内按指定的方式解答精心选定的题目或按主办方的要求完成一定的实际操作的任务,并由主办方评定其结果,从而为主办方提供考生某方面的知识或技能状况的信息。下面是小编整理的关于计算机二级考试c语言…

c语言链表贪吃蛇脚本之家,C++控制台实现贪吃蛇游戏

本文实例为大家分享了C实现贪吃蛇游戏的具体代码,供大家参考,具体内容如下刚学完了C语言,便尝试的写了贪吃蛇的代码,但是效果不佳,很多的bug,所以,这个学了C,便重新的写了这个小游戏…

c语言isfinite用法,C# Double.IsFinite()用法及代码示例

Double.IsFinite()方法用于检查double值是否超出范围。用法: public static bool IsFinite (double value);返回值:如果值是有限的,则此方法返回true,否则返回false。下面的程序说明Double.IsFinite()方法的使用:示例1…

窄带语谱图c语言算法,MELP语音编码算法实现及算法改进

摘要:随着数字通信在当今社会的快速发展和广泛应用,低速率语音编码以其极低的编码速率,高质量的合成效果在网络通信,军事通信,保密通信和卫星通信等领域发挥着及其重要的作用,成为语音编码中的关键技术。当前标准化的各种算法中,MELP语音编码算法以LPC声码器为基础作…

android gta5 下载地址,GTA 5 for Android下载

GTA 5 for Android下载介绍GTA 5 for Android下载是这款游戏的全新版本,相比上个版本加入更多全新的剧情内容和道具,可以称得上是该系列至今为止最庞大也最具野心的作品,带来上至高山、下至深海,规模空前、细腻无比且充满生命力的…

win8能开发android的sdk么,Win8下Android SDK安装与环境变量配置教程

Win8下Android SDK的安装与环境变量配置,具体内容如下1、下载Android SDK,点击安装,直接默认路径即可!进入该网站后往下拉就能找到sdk下载的位置,选择图中红圈的程序进行下载2、安装过程比较简单,按照平时安…

Android公共jar,使用JitPack管理Android项目中公共模块库

随着项目的功能越来越多,代码和模块维护也越来越复杂,为了减少主项目的代码量,一般都会将一些公共使用的类或者功能模块抽离出来,与主项目解耦分离,当主项目中需要使用的时候,直接进行引用即可。现在Androi…

mac android 手机连接打印机,为什么苹果电脑连接打印机打不出来怎么办

1. 为什么苹果笔记本连接打印机打印不了1、您的 Wi-Fi 或本地网络上的 AirPrint 打印机。2、临近的 Wi-Fi 打印机或位于您本地网络且支持 Bonjour 的基于有线网络的打印机。3、连接到家庭网络中 Time Capsule 或 AirPort 基站的 USB 端口的打印机。4、与家庭网络中的其他 Mac 共…

Android 数据库 哪个好,目前最好用的安卓数据库,DBFlow使用详解

1.在你使用之前,建议你先阅读一下官方文档https://agrosner.gitbooks.io/dbflow/content/2.步骤如下:(1)在项目级的gradle中添加buildscript {repositories {jcenter()}dependencies {classpath com.android.tools.build:gradle:2.3.2classpath com.neen…

android 左右卡片切换,3D卡片切换

源码片段public class MainActivity extends FragmentActivity implements OnCardClickListener{List list;private TestFragment frag;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_ma…

c# 修改xslt并转为html,c#使用XSLT将xml文档转换为html文档

c#使用XSLT将xml文档转换为html文档使用xslt可以将xml文档转成html,如下c#函数:需要引用下面的命名空间:using System.Xml;using System.Xml.Xsl;方法实现:public static string ConvertXML(XmlDocument InputXMLDocument, string…

华为正式官宣鸿蒙OS,华为正式官宣,鸿蒙OS 2.0系统即将问世,Mate 40有望首发

由于华为5G技能取得了突破性的领先,美国对其采取了实体清单操持。意图干涉华为的发展速率,但实际上对于华为影响最大的却是软件方面的“断供”。在美国发布实体清单短短数月之后,谷歌公布停止对于华为手机系统的GMS服务授权。间接导致了华为手…

html音频控件隐藏,html5 – Html 5音频标签自定义控件?

你创建你的元素如此…play!并添加一些功能:var yourAudio document.getElementById(yourAudio),ctrl document.getElementById(audioControl);ctrl.onclick function () {// Update the Buttonvar pause ctrl.innerHTML pause!;ctrl.innerHTML pause ? play!…