文档章节

Ubuntu上搭建git服务器

皂白
 皂白
发布于 2017/06/08 16:08
字数 1148
阅读 42
收藏 0

安装git相关软件

  • 安装git
apt-get install git-core
  • 安装openssh-server和openssh-client openssh-server和openssh-client用于git通过ssh协议来在服务器与客户端之间传输文件
apt-get install openssh-server openssh-client
  • 安装python 由于安装gitosis需要用到Python的一些工具
apt-get install python-setuptools
  • 初始化服务器的git用户信息
git config --global user.name "your name"
git config --global nser.email "your eamil"
  • 获取gitosis
git clone https://github.com/res0nat0r/gitosis.git
  • 安装gitosis gitosis主要用来管理公钥和权限 进入到gitosis目录
cd gitosis/

安装

python setup.py install

配置gitosis

  • 添加用来管理仓库的用户,用户名任意,这里使用git 加入 -m 选项表示:创建用户的时候一并创建用户的home目录
useradd -m git
  • 生成公钥和私钥
    • 鱿鱼初始化gitosis的时候需要指定公钥,所以我们需要先生成公钥和私钥
    • 再者gitosis也是通过git仓库的形式来管理公钥和权限的,所以我们可以把初始化gitosis时生成的仓库gitosis-admin.git clone到本地,方便来完成相应的修改配置 比如我们在windows上面生成公钥,如果windows安装了git,点击右键,会出现如下界面

git bash here.png

打开git bash,就可以在windows上面使用linux的命令行

输入如下命令,按照提示一步一步走下去

ssh-keygen -t rsa

ssh-keygen.png

就会在用户目录下生成如下文件

  • 私钥:保存在本地
  • 公钥:需要上传到git服务器

公钥私钥生成.png

  • 把刚才生成的公钥上传到git服务器上 比如上传到/tmp目录项目下,这样可以确保gitosis-init命令对其有读取权限

  • 初始化gitosis 先切换到git用户!!!!!!!

su git
gitosis-init < /tmp/id_rsa.pub

这样就会看到gitosis在git用户的home目录下,增加了两个目录以及一个gitosis配置文件的软连接

git home dir.png

  • gitosis是gitosis的根目录

  • repositories是仓库存放目录

  • 进入gitosis的管理仓库

cd /home/git/repositories/gitosis-admin.git

gitosis-admin.png

进入存放公钥的目录,就可以看到有一个刚才我们初始化gitosis使用的公钥文件

keydir.png

注意!!! 上面的公钥文件名必须和gitosis.conf配置文件里面的成员名称一模一样

  • 再来看一下gitosis.conf配置文件

gitosis-conf.png

  • group 代表一个组
  • members 代表成员,可以有多个成员,用空格进行分割
  • writable 代表对哪个仓库名具有读写权限

上面的可以解释为:有一个组叫做gitosis-admin,里面只包含了一个成员smile@xxx,这些成员对gitosis-admin仓库具有读写权限

  • clone gitosis的管理仓库 gitosis-admin.git 到本地,方便来完成相应的修改配置 比如在windows下面,还是打开git bash
# git clone git@192.168.220.128:gitosis-admin.git
git clone git@改为你的git服务器ip地址:gitosis-admin.git
  • 修改配置文件gitosis.conf ,新添加一个测试组
[group test]
members = smile@DESKTOP-IG7L8BJ
writable = test

更改提交并push到git@ip地址:gitosis-admin.git

git commit -a -m "添加新仓库test"
git push
  • 在本地创建一个test仓库,并push到git@ip地址:test.git
  • gitosis会在/home/git/repositories自动创建test.git这个仓库
mkdir test
cd test
git init
git remote add origin git@192.168.220.128:test.git
touch README.md
git add README 
git commit -m 'first commit'
git push origin master

多人协同开发

比如上面创建的test.git仓库(也可以称为一个项目:test) 新来了一个小伙伴,名叫:tom,需要把他加入test项目组,tom也需要有对应的公钥和私钥。 假如我们现在是组长,gitosis的配置权限只有我们有,tom的公钥和私钥生成有两种方法:

  • 我们帮tom生成,然后把私钥分发给tom
  • tom自己生成公钥和私钥,然后把公钥发给我们

也是用如下命令生成公钥和私钥

ssh-keygen -t rsa

接下来配置tom的公钥到gitosis

  • 还是打开刚才clone到本地gitosis的管理仓库
  • 把tom的公钥放在keydir文件夹下面
  • 修改tom的公钥的名称为tom.pub(公钥文件名必须和gitosis.conf配置文件里面的成员名称一模一样)
  • 把更改push到gitosis-admin.git
git add ./keydir/tom.pub
git commit  -m "添加tom到test仓库"
git push
  • 修改gitosis.conf,加入tom
[group test]
members = smile@DESKTOP-IG7L8BJ tom
writable = test
  • 更改提交并push到git@ip地址:gitosis-admin.git
git commit -a -m "添加新用户tom"
git push

现在tom就可以在自己的电脑上clone test项目下来了

git clone git@192.168.220.128:test.git

参考资料

© 著作权归作者所有

共有 人打赏支持
皂白
粉丝 32
博文 34
码字总数 19277
作品 0
朝阳
程序员
私信 提问
搭建一个android的git本地服务器后,克隆下来的代码老报错。

我在一台ubuntu的服务器上搭建了一个git空仓库,然后克隆了一个空仓库,将我的android源代码里面的.git和.gitignore全部删除之后,将空仓库的.git复制到我的安卓源代码中,添加提交并推送到服...

architectu
2017/07/05
459
0
网页服务器搭建好了 GITHUB在网页服务器上能能实现什么?

ubuntu server网页服务器搭建好了 GITHUB在网页服务器上能能实现什么?是要在系统上装GIT还是要搭建GIT服务器?我需要一个知道我每次修改了什么 安装了什么的记录而已 我需要怎么做 有没相关...

OCDpunk
2016/05/05
611
3
如何在远程git仓库没有存仓库的前提下直接推送一个本地git仓库上去

我们公司想换git来作为版本控制 我现在已经能实现在ubuntu上面创建一个git用户 并通过ssh公钥来进行push和pull了 但是有个很头疼的问题 如果每个项目想推送到ubuntu上面都需要手动登录到服务...

冷艳刃
2016/10/21
339
1
搭建自己的git服务器

虽然国内外有很多git托管服务网站,但是有时候我们还是需要自己的git服务器用于托管一些私有项目,今天就来教大家搭建自己的git服务器 环境: 服务器腾讯云Ubuntu14.04 客户端:Win10 工具: x...

一个不想写代码的程序员
2017/11/10
0
0
在 VPS 上搭建 Hexo 博客,使用 Git 部署

摘要:因为 hexo 的搭建和使用与其他博客程序不同,而且搜索到的很多结果都是在 Github 上搭建 hexo 的教程。于是就有很多朋友问我 VPS 也可以搭建 hexo 吗?刚好前几天在迁移博客的时候也查...

Viosey's Blog
2017/12/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

为什么强烈建议大家使用枚举来实现单例

关于单例模式,我的博客中有很多文章介绍过。作为23种设计模式中最为常用的设计模式,单例模式并没有想象的那么简单。因为在设计单例的时候要考虑很多问题,比如线程安全问题、序列化对单例的...

群星纪元
24分钟前
8
0
Confluence 6 超过当前许可证期限进行升级

这个页面将会对你在进行 Confluence 升级的时候超过了当前许可证的期限进行升级的情况。 许可证警告 在升级的过程中,你将会在 Confluence 的应用程序日志(log file)中看到类似下面的错误提...

honeymoose
37分钟前
2
0
顶尖战略咨询公司常用分析模型

1、KANO模型 日本教授狩野纪昭(Noriaki Kano)构建出的kano模型。将影响用户满意度的因素划分为五个类型,包括: 魅力因素:用户意想不到的,如果不提供此需求,用户满意度不会降低,但当提供...

Moks角木
53分钟前
2
0
Linux iptables之mangle表使用案例

mangle表的用途 mangle表的主要功能是根据规则修改数据包的一些标志位,以便其他规则或程序可以利用这种标志对数据包进行过滤或策略路由。 mangel表使用示例 示例1-策略路由1 内网的客户机通...

月下狼
今天
3
0
OSChina 周日乱弹 —— 兼职我想去学学布偶戏

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @clouddyy : 《火炎 - 女王蜂》 《火炎 - 女王蜂》 手机党少年们想听歌,请使劲儿戳(这里) @小鱼丁 :还在睡觉突然接到一个小哥哥电话“x...

小小编辑
今天
223
8

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部