登录  | 加入社区

黑狼游客您好!登录后享受更多精彩

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

查看: 447|回复: 0

CentOS7搭建git服务器

[复制链接]

174

主题

174

帖子

0

现金

黑狼菜鸟

Rank: 1

积分
0
发表于 2019-1-29 07:57:05 | 显示全部楼层 |阅读模式 来自 江苏徐州
媒介
NibBa55cB89Tb951.jpg

用git搭建git服务器是一个很老的话题,我之前用gitlab搭建过,用git原生的方式搭建过,但是对我个人而言,gitlab有点浪费资源,占内存太大,本身原来就是一个博客服务器,设置比力低,而且git用的人不多,用gitlab太浪费了。(我公司利用gitlab,这个得当公司团队利用。),用原生的方式搭建本身用可以,但是一旦想给别人用一下,就有点题目了。
一、袒露git目次
二、权限不能控制
因此,用git的gitosis搭建git服务器,对我来说比力符合。
一、占用内存空间等相对较少,
二、隐蔽git目次
三、操纵简朴方便
下面我先容一下CentOS7下面用gitosis搭建git服务器方法及步调及常见题目。
原生方法搭建
想了一下,本文标题是CentOS7搭建git 服务器,照旧讲一下原生方式搭建git服务器吧!
第一步,安装git:
$ yum install git
第二步,创建一个git用户,用来运行git服务:
$ sudo adduser git
第三步,创建证书登录:
网络全部必要登录的用户的公钥,就是他们本身的id_rsa.pub文件,把全部公钥导入到
/home/git/.ssh/authorized_keys
文件里,一行一个。(也是通过这个方法关联git公钥的)
第四步,初始化Git堆栈:
先选定一个目次作为Git堆栈,假定是/srv/haorooms.git,在/srv目次下输入下令:
$ sudo git init --bare haorooms.git
Git就会创建一个裸堆栈,裸堆栈没有工作区,由于服务器上的Git堆栈纯粹是为了共享,以是不让用户直接登录到服务器上去改工作区,而且服务器上的Git堆栈通常都以.git末端。然后,把owner改为git(git用户):
$ sudo chown -R git:git haorooms.git
第五步,禁用shell登录:
出于安全思量,第二步创建的git用户不答应登录shell,这可以通过编辑/etc/passwd文件完成。找到雷同下面的一行:
git:x:1001:1001:,,,:/home/git:/bin/bash
改为:
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
如许,git用户可以正常通过ssh利用git,但无法登录shell,由于我们为git用户指定的git-shell每次一登录就主动退出。
第六步,克隆长途堆栈:
如今,可以通过git clone下令克隆长途堆栈了,在各自的电脑上运行:
$ git clone git@server:/srv/haorooms.gitCloning into 'sample'...warning: You appear to have cloned an empty repository.
剩下的推送就简朴了。
这个方式的缺点我最上面写过了,git是全路径,如果你是放到/home/www/git/haorooms.git,谁人clone地点就是:
$ git clone git@server:/home/www/git/haorooms.git
看起来总感觉怪怪的,本身利用可以!
gitosis搭建git服务器
用gitosis搭建服务器,网上也有不少相干文章,但是很多多少写的不清晰,关于gitosis搭建git服务器,我在这里具体写一下:
安装gitosis有2种方式:
1、服务器 - 服务器 安装【这种方式缺点是每次新增修改设置(如果新增一个用户)都要登岸服务器】
2、服务器 - 客户端 安装 【这种方式新增用户直接在当地客户端修改,git提交就可以了,方便快捷,但是客户端电脑不在身边,想要新增用户的时间,就比力贫苦了!】
下面我以服务器 - 客户端 安装为例先容(服务器 - 服务器雷同)
步调如下:
起首是在git服务器上操纵,毗连登录git服务器:
一、安装git
直接和上面一样,yum安装,也可以下载git压缩包安装。此步调省略。
二、添加git用户
git的用户名可以本身任意起,也可以直接用git,清楚明白,本文暂用git用户名
$ adduser git ; $ passwd git ; //设置用户暗码 (如果是本身利用,此步调可以省略)
三、 Gitosis的安装
注:Gitosis依靠python,如果服务器没有安装python ,必要先安装python
$ yum install python-setuptools
然后举行地点克隆,gitosis的github地点是:http://github.com/res0nat0r/gitosis
git clone http://github.com/res0nat0r/gitosis.git
然后进入举行安装
$ cd gitosis
$ python setup.py install
四、Gitosis服务初始化
此步调包罗把客户端电脑的ssh key上传到服务器,
为了制止客户端和服务器端肴杂,此处客户端操纵省略,由于客户端操纵很简朴(用过git的你应该都懂得),就是找到你的
id_rsa.pub
并将id_rsa.pub上传到git服务器
/tmp/id_rsa.pub
这个目次下面。
关键步调如下:
$ sudo su - git #切换到git用户身份下,否则实行下面的初始化后客户端管理员是无法通过密钥来访问的,权限的题目 $ gitosis-init < /tmp/id_rsa.pub
$ cd ~ #回到git用户的宿主目次 $ ls #检察目次文件 gitosis repositories #主动天生两个目次
确保gitosis-admin版本库的钩子脚本可实行(如果上面安装乐成,此步调忽略)
chmod a+x ~git/repositories/gitosis-admin.git/hooks/post-update
报错处置惩罚方案:
当你运行
gitosis-init < /tmp/id_rsa.pub
大概会有如下报错:
错误一:
OSError: [Errno 13] Permission denied: '/home/git/gitosis'
办理
# chown -R git:git /home/git/
错误二:
oserror: [errno 2] no such file or directory: '/home/git/repositories/gitosis-admin.git
这个错误是大概你之前的repositories没有安装好,删掉repositories,重新上面步调四内里的关键步调操纵。
错误三:
su: warning: cannot change directory to /home/git/: Permission denied
阐明目次权限不敷,
办理方案,给目次添加权限就可以了:
chmod -R 755 /home/git/
就可以了!
管理Gitosis
操纵到这来,恭喜你,git服务器根本上已经安装好了,下面是Gitosis的管理和设置。
如果管理你是在客户端举行,此步调可以在客户端操纵!(包罗上面的客户端ssh-keygen)
客户端克隆 gitosis-admin管理库
$ git clone git@server:gitosis-admin.git
$ cd gitosis-admin/
克隆完成后,进入gitosis-admin目次下,看有哪些文件
.git (隐蔽的目次, 假如在windows下看不见,请百度“windows下怎样表现隐蔽的文件”)
keydir (目次,存放用户的公钥,刚开始只有一个管理员公钥)
gitosis.conf (授权文件)
授权文件gitosis.conf,初始内容:
[gitosis][group gitosis-admin]writable = gitosis-admin
members = Administrator@PC20180009
keydir 目次:
存放用户的公钥,一个用户对应一个.pub文件。
创建新的测试git版本库
git服务器操纵如下:
$ su git
$ cd ~/respositories
$ mkdir test.git
$ cd test.git
$ git init --bare
客户端设置如下:
1、管理员在keydir 目次下面新增 username.pub,内里就是对应用户的sshkey
2、设置gitosis.conf文件,增长用户对测试库的访问权限。
[gitosis]
[group gitosis-admin]
writable = gitosis-admin
members = Administrator@PC20180009
[group common]
writable = test
members = 用户1 用户2 //和keydir 目次下面用户名同等,keydir 目次下面临应有 用户1.pub, 用户2.pub
3、客户端提交接码
git add -A
git commit -am "新增XX成员"git push origin master
此中group代表一个组,writable是堆栈名,members是此堆栈的成员,可以有多个成员,用空格举行分割。 别的留意:
堆栈名不要利用_下划线
gitlab方法创建git服务器
这个方式本文临时省略,详细可以看 http://about.gitlab.com/installation/




上一篇:「转」CentOS7安装mysql图文详解
下一篇:Centos7+CDH5.7.2全摆设流程
您需要登录后才可以回帖 登录 | 加入社区

本版积分规则

 

QQ|申请友链|小黑屋|手机版|Hlshell Inc. ( 豫ICP备16002110号-5 )

GMT+8, 2024-4-20 18:04 , Processed in 0.061565 second(s), 47 queries .

HLShell有权修改版权声明内容,如有任何爭議,HLShell將保留最終決定權!

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表