git 入门教程之 git 私服搭建教程
git 私服搭建教程
前几节我们的远程仓库使用的是 github
网站,托管项目大多是公开的,如果不想让任何人都能看到就需要收费,而且 github
网站毕竟在国外,访问速度太慢,基于上述两点原因,我们有必要搭建自己的 git
服务器.
虽然我们能搭建基本的 git
服务器,但是想要做到 github
网站那种规模还不是目前能够探讨的,本节的主要目标是使用我们私有服务器对我提供类似于github
的远程仓库托管服务,以下示例以centos
服务器为例说明:
安装 git 服务
运行以下命令安装 git
服务
# 安装 git 相关依赖
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel
# 安装 git
yum install git
# 查看 git 版本
git --version
详情请参考安装 git
配置 git 用户
创建 git
用户组和 git
用户,以便对外提供 git
服务
# 新增 git 用户组
groupadd git
# 新增 git 用户并归属于 git 用户组
useradd git -g git
收集 git 公钥
回忆一下,在我们使用 github
网站时,我们是不是曾经将本地电脑生成的公钥~/.ssh/id_rsa.pub
复制到 Account -> Settings -> SSH and GPG keys -> New SSH key
,而我们现在搭建的git
服务还是简单,但是这步骤必不可少,因此只能手动收集素有需要访问我们服务器的公钥文件.
我们知道需要登录我们服务器的用户公钥一般是存放在~/.ssh/id_rsa.pub
,那当前服务器作为远程服务器将这些公钥存放到哪里呢?还记得上一步我们创建了 git
用户吗?
因为 linux
系统支持多用户操作,而 git
用户就用于专门运行 git
服务,负责所有和 git
有关的事宜.因此,导入公钥文件的目录就是/home/git/.ssh/authorized_keys
文件.一个用户公钥占用一行,几个用户就有几行.
# 切换到 git 用户主目录
cd /home/git/
# 创建.ssh 目录
mkdir .ssh
# 赋予标准目录权限
chmod 755 .ssh
# 创建authorized_keys文件
touch .ssh/authorized_keys
# 赋予标签文件权限
chmod 744 .ssh/authorized_keys
初始化 git 仓库
同样我们和github
网站类比,在 github
创建仓库时都会在当前账号下创建项目,完整的访问路径大概是这样的: git@github.com:snowdreams1006/git-demo.git
,从中我们可以看出项目仓库都有一个前缀即命名空间,这和上一步操作是不是很类似,上一步收集 git
公钥时我们也有统一的目录,这次也不例外.
假设 git
仓库存放目录在 /home/git/repos/
,同样的先创建该目录并赋予响应权限.
# 切换到 git 用户主目录
cd /home/git/
# 创建 repos 目录
mkdir repos
# 更改 repos 目录属主
chown git:git repos/
# 切换到 repos 目录
cd repos
# 初始化 git 仓库
git init --bare git-demo.git
# 更改 git-demo.git 仓库属主
chown -R git:git git-demo.git
经过上述操作,我们成功在远程服务器部署了 git
服务,并且创建了 git-demo
测试项目,实际访问路径大概是这样的 git@snowdreams1006.cn:/home/git/repos/git-demo.git
本地克隆远程仓库
身份回到本地电脑,假设本地已搭建好 git
环境,并且生成的ssh
公钥上传到远程服务器,那么我们接下来就可以和之前远程服务器是 github
网站那样的方式开发我们的项目了,唯一不同的是,接下来我们推送的远程服务器均是我们刚搭建好的主机.
需要做好心里准备,我们搭建的服务器还很简单,没有 github
网站那样可以直观操作远程仓库,但是这并不影响我们的 pull push merge
等操作哟!
git clone git@snowdreams1006.cn:/home/git/repos/git-demo.git
git-指的是 git 用户,snowdreams1006.cn-指的是远程主机域名或ip,/home/git/repos-指的是 git 仓库的目录,git-demo.git-指的是项目名称
现在我们已经成功搭建好自己的 git
私服了,是不是很简单呢?有没有对 git
和 github
进一步理解?欢迎大家一起探讨!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
Kubernetes CNI网络最强对比:Flannel、Calico、Canal和Weave
本文将在介绍技术原理和相应术语的基础上,再集中探索与详细对比目前最流行的CNI插件:Flannel、Calico、Weave和Canal,对比介绍它们的原理、使用方法、适用场景和优缺点等。 介 绍 网络架构是Kubernetes中较为复杂、让很多用户头疼的方面之一。Kubernetes网络模型本身对某些特定的网络功能有一定要求,但在实现方面也具有一定的灵活性。因此,业界已有不少不同的网络方案,来满足特定的环境和要求。 CNI意为容器网络接口,它是一种标准的设计,为了让用户在容器创建或销毁时都能够更容易地配置容器网络。在本文中,我们将集中探索与对比目前最流行的CNI插件:Flannel、Calico、Weave和Canal(技术上是多个插件的组合)。这些插件既可以确保满足Kubernetes的网络要求,又能为Kubernetes集群管理员提供他们所需的某些特定的网络功能。 背 景 容器网络是容器选择连接到其他容器、主机和外部网络(如Internet)的机制。容器的runtime提供了各种网络模式,每种模式都会产生不同的体验。例如,Docker默认情况下可以为容器配置以下网络: none:...
-
下一篇
深度解析RocketMQ Topic的创建机制
微信公众号「后端进阶」,专注后端技术分享:Java、Golang、WEB框架、分布式中间件、服务治理等等。 老司机倾囊相授,带你一路进阶,来不及解释了快上车! 我还记得第一次使用rocketmq的时候,需要去控制台预先创建topic,我当时就想为什么要这么设计,于是我决定撸一波源码,带大家从根源上吃透rocketmq topic的创建机制。 topic在rocketmq的设计思想里,是作为同一个业务逻辑消息的组织形式,它仅仅是一个逻辑上的概念,而在一个topic下又包含若干个逻辑队列,即消息队列,消息内容实际是存放在队列中,而队列又存储在broker中,下面我用一张图来说明topic的存储模型: 其实rocketmq中存在两种不同的topic创建方式,一种是我刚刚说的预先创建,另一种是自动创建,下面我开车带大家从源码的角度来详细地解读这两种创建机制。 自动创建 默认情况下,topic不用手动创建,当producer进行消息发送时,会从nameserver拉取topic的路由信息,如果topic的路由信息不存在,那么会默认拉取broker启动时默认创建好名为“TBW102”的Topic:...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker容器配置,解决镜像无法拉取问题
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- 2048小游戏-低调大师作品
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- MySQL数据库在高并发下的优化方案
- Dcoker安装(在线仓库),最新的服务器搭配容器使用
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题