使用Gitolite搭建Gitserver
Gitolite是一款Perl语言开发的Git服务管理工具。通过公钥对用户进行认证。并可以通过配置文件对些操作进行基于分支和路径的精细控制。
Gitolite採用的是SSH协议而且使用SSH公钥认证。因此不管是管理员还是普通用户。都须要对SSH有所了解。Gitolite的官网是:https://github.com/sitaramc/gitolite。以下就来细说使用Gitolite搭建Gitserver的过程吧。
硬件需求:Ubuntu电脑(或虚拟机)。正常网络訪问。
软件需求:git-core,gitolite, openssh-server, git-daemon-run(ubuntu),msysgit(windows)
在Gitolite的搭建过程中,Gitweb、Apache不是必须的,Gitweb、Apache跟Gitolite一起使用。看到的效果类似于 http://git.chromium.org/gitweb/。
1. 安装配置Gitserver(IP:10.203.138.129)
安装Git和openssh。
$ sudo apt-get install git-core openssh-server
新建用户git,该用户作为全部代码仓库和用户权限的管理者。
$ sudo groupadd git
$ sudo useradd git –g git –m
$ sudo passwd git (须要设置用户git的password)
2. 下载gitolite
初始化server的全局设置,为安装gitolite做准备。
在不论什么一台机器上使用git。第一次必需要先设置user.name和user.email。
$ git config --global user.name “david”
$ git config --global user.email “david@server-pc”(name和email任意)
安装一下python的setup tool。
$ sudo apt-get install python-setuptools
获取gitolite包。
$ git clone https://github.com/sitaramc/gitolite.git(或者到网上下载相应的gitolite)
当然,我们也能够使用包管理器进行安装。
$ sudo aptitude install gitolite
3. 配置gitolite
在git管理员的PC上,先安装msysgit(windows系统)。安装后,打开gitbash。执行例如以下命令生成管理员密钥:
$ ssh-keygen –t rsa
执行以上命令后。能够默认提示直接回车。回车后在当前用户文件夹下生成了.ssh/id_rsa和.ssh/id_rsa.pub。
当中.ssh/id_rsa是私玥,.ssh/id_rsa.pub是公钥。接下来能够使用例如以下命令将git管理员的公钥上传到gitserver。也能够直接复制到gitserver。
$ scp xxx/.ssh/id_rsa.pub webgod@10.203.138.129:/tmp/admin.pub
回到Gitserver上。
$ sudo chmod a+r /tmp/id_rsa.pub
运行Gitolite安装。
Initialized empty Git repository in /home/repo/gitolite-admin.git/
Reinitialized existing Git repository in /home/repo/gitolite-admin.git/
Gitolite是通过一个git仓库来管理配置文件。仓库放在/home/git/repositories/gitolite-admin.git。
设置git仓库权限
$ sudo chown git:git /home/git/repositories
$ sudo chmod 755 /home/git/repositories
$ sudo chmod 755 /home/git/repositories/gitolite-admin.git/hooks/post-update
4. 在server上新建測试项目仓库
在server上新建一个空的项目仓库可。叫“test”。
切换到git用户:
$ su – git
$ cd repositories
$ git init --bare test.git
$ exit
到这里,test仅仅是一个空仓库。它是不能clone下来的。
为了能做clone,必须先让管理员或有权限的人放一个初始化的版本号到仓库中。
所以,我们必须先改动一个gitolite-admin。
5. 管理gitolite的配置文件
Gitolite本身的配置也是通过git来实现的。
在刚刚上传公钥的机器上,把gitolite-admin.git这个仓库clone下来,就能够以管理员的身份改动配置了。
新建一个目录,如git129:
$ mkdir git129
$ cd git129
$ git clone git@10.203.138.129:gitolite-admin.git(或使用全路径)
注:訪问git用户仓库的默认路径是/home/git/repositories/
$ cd gitolite-admin
该文件夹下的keydir文件夹是用来存放全部须要訪问gitserver的用户的ssh公钥。
各个用户依照前面提到的办法生成各自的ssh公钥文件后,把全部人的ssh公钥文件按名字又一次命名一下,然后复制到keydir文件夹下,然后改动gitolite.conf文件,做对应的配置:
[gitolite]
[group gitolite-admin]
writable = gitolite-admin
members = david@DAVID-PC tom@TOM-PC
[group team]
writable = test
members = david@DAVID-PC tom@TOM-PC pitter@PITTER-PC
这个配置文件表达了例如以下含有:gitolite-admin组成员有david,tom,该组对gitolite-admin仓库有读写权限;test组有david,tom,pitter三个成员,该组对test仓库有读写权限。眼下这些配置文件的改动仅仅是在本地,必须推送到远程的gitserver上才干真正生效。
增加新文件、提交并push到Gitserver:
$ git add .
$ git commit –m “add test and someusers”
$ git push origin master
$ sudo chmod a+r /tmp/id_rsa.pub
6. 初始化測试项目
如今server搭建完成,而且有一个空的项目test在server上。接下来,须要測试一下,空仓库是不能clone的。所以须要某个有写权限的人初始化一个版本号。
在client运行:
$ mkdir test-ori
$ cd test-ori
$ git init (在client运行,初始化一个本地的版本号库)
$ echo “/* add something */” > hello.c
$ git add .
$ git commit –m “initial version”
$ git remote add origin git@10.203.138.129:test.git
$ git push origin master
到此为止,test已经有了一个版本号了,team的其它成员仅仅要先clone一下test仓库就能够了。并且gitolite.conf中赋予的读写权限。
7. 加入已有git项目
假设想将一个现成的git仓库,放到Gitserver上供team使用(比方clone了一个官方的kernel仓库,想在内部使用它作为基础仓库)。能够这样操作:
首先须要从你的工作仓库中得到一个纯仓库。比方你的工作文件夹为~/kernel,你想将该纯仓库复制到Gitserver上使用。Gitserver的管理员拿到这个纯仓库(~/kernel)后,将其复制到/home/repo/下,同一时候配置gitolite相关配置文件。比方说:下载ALSA库。
$ git clone git://android.git.kernel.org/platform/external/alsa-lib.git
$ git clone git://android.git.kernel.org/platform/external/alsa-utils.git
生成bare库:
$ git clone --bare alsa-lib alsa-lib.git
$ git clone --bare alsa-utils alsa-utils.git
将bare库移动到Gitserver文件夹:
$ cp alsa-lib.git /home/repo
注意变更全部者。以获取提交权限。
$ chown -R git alsa-lib.git
8. Gitweb和Git Daemon的支持
能够在授权文件里设定版本号库的描写叙述信息,并在gitolite-admin管理库更新时创建到版本号库的description文件里。
line of description"
name" = "one line of description"
setdesc path/to/repo.git
getdesc path/to/repo.git
尽管git-daemon能够支持写操作,但由于git-daemon没有提供认证支持。因此非常少人会配置git-daemon来提供匿名的写服务。
使用git-daemon提供的Git版本号库仅仅读服务效率非常高。
故,git-daemon一直是Git版本号库仅仅读服务的首选。
假设想使用git协议,那么就须要安装git-daemon。
$ sudo apt-get install git-daemon-run
编辑git-daemon配置文件:
$ sudo gedit /etc/sv/git-daemon/run
#!/bin/bash
exec2>&1
echo‘git-daemon starting.’
execchpst -ugitdaemon
“$(git--exec-path)”/git-daemon --verbose --export-all--enable=receive-pack --enable=upload-pack --enable=upload-archive --reuseaddr --base-path=/home/webgod/
说明:
--base-path 指向Gitserver的根文件夹
--enable=receive-pack
--enable=upload-pack
--enable=upload-archive
以上三个是与git-clone,git-push。git-pull相关的。
查看详情使用命令:$ man git-daemon查看。
重新启动gitserver:
$ sudo sv restart git-daemon
在Gitserver上:
$ cd /home/webgod
$ mkdir RepoServer
$ cd RepoServer
$ git init --bare manifest.git
切换到其它文件夹:
$ cd ~/test
$ git clonegit://127.0.0.1/RepoServer/manifest.git
(è $ git clone git@127.0.0.1:/home/webgod/RepoServer/manifest.git)
这里就实现了所谓的“匿名訪问”。
使用Gitolite搭建Gitserver的更多相关文章
- # 基于Gitolite搭建Git Server - 支持SSH&HTTP
Git, 一个分布式的版本管理工具,我认为其革命性的点:在于改变了用户协作的方式,使得协作更简单. 下面讲述 使用一个开源软件 Gitolite搭建一个Git Sever, 并给了一个推荐的团队协助方 ...
- 版本号控制-搭建gitserver
GitHub是一个免费托管开源码的Gitserver,假设我们不想公开项目的源码,又不想付费使用.那么我们能够自己搭建一台Gitserver. 以下我们就看看,怎样在Ubuntu上搭建Gitserve ...
- 使用gitolite搭建Git服务器
使用gitolite搭建Git服务器 运行环境 Ubuntu18.04 gitolite 搭建过程 安装好Ubuntu18.04系统 更新系统 sudo apt update sudo apt upg ...
- 用Gitolite搭建服务器上的Git
使用git作为版本控制工具,确实非常流行且好用,常用的git代码服务器有Github还是国内的Gitcafe和OSC都是很不错,可以免费存放一些开源的项目代码,对于私人项目,则需要支付一定的费用.同时 ...
- 使用Gitolite搭建轻量级的Git服务器
By Harrison Feng在Git服务管理工具这个领域,主要有三种流行的方案,它们分别是 Gitosis - 轻量级, 开源项目,使用SSH公钥认证,只能做到库级的权限控制.目前项目已经停止开发 ...
- [CentOS] 使用gitolite搭建git服务端
1. 创建用户 #创建gitadmin用户 useradd gitadmin #设置gitadmin密码 passwd gitadmin #创建git用户 useradd git #设置git密码 p ...
- [原]五分钟搭建gitserver
本来在忙一些事情,结果刚才突然收到一个临时的事情,号称很着急. 问了一下,原来是需要在本地搭建一个git库,但其实之前我是有做过gitserver的,不过是在阿里云(部分分布在青云)上,而且目前在使用 ...
- CentOS 7下使用Gitolite搭建Git私服
1. 搭建环境 CentOS7, git version 1.8.3.1 2. 安装依赖包 yum install curl-devel expat-devel gettext-devel opens ...
- 用gitolite搭建git server
在Ubuntu上测试安装一下git server,为后面项目的代码管理做准备.记录流水账如下, 中间关于git 命令的使用说明不做过多解释,需要了解的请google或者直接git help: 我用到了 ...
随机推荐
- 使用bottle进行web开发(1):hello world
为什么使用bottle?因为简单,就一个py文件,和其他模块没有依赖,3000多行代码. http://www.bottlepy.org/docs/dev/ 既然开始学习,就安装它吧. pip3 in ...
- [python] win7 64位 安装pygame
1.下载pygame 2.python 下载3.2.* 32位的(电脑64位没关系的) 3.先安装python,再安装pygame 4.验证是否成功 打开IDLE >>>impor ...
- 由"软件是干什么的"引发的思考
自工作以来,都只在进行模块的开发,很少站在整个项目的角度思考过.甚至,自己开发的软件,自己都没有去用过,包括开发的一些APP,都没有下载来认真体验过.思考过.却对自己手机上那些用过的A ...
- springboot微服务的简单小结
springboot微服务的简单小结 近来公司用springboot微服务,所以小结一下. 基础: 什么是SpingBoot微服务? 如何创建SpringBoot微服务? 如何管理和完善SpringB ...
- 洛谷——P1991 无线通讯网
P1991 无线通讯网 题目描述 国防部计划用无线网络连接若干个边防哨所.2 种不同的通讯技术用来搭建无线网络: 每个边防哨所都要配备无线电收发器:有一些哨所还可以增配卫星电话. 任意两个配备了一条卫 ...
- elasticsearch 插件使用
5.3.0新版本好像插件和开源的项目没有以前的多,官网就那么几个 常用的先安装Kibana: 提供炫丽的可视化图形展示并且作为elasticsearch的搜索的小清新客户端 1.下载安装包 wget ...
- Tiny 6410的Linux学习总结!
1.Tiny6410的Linux系统修改IP地址: vi /etc/eth0-setting 2.Ubuntu14.04自动以root身份登录系统: /etc/lightdm/lig ...
- 在C#中实现简单的对象池
当我们频繁创建删除大量对象的时候,对象的创建删除所造成的开销就不容小觑了.为了提高性能,我们往往需要实现一个对象池作为Cache:使用对象时,它从池中提取.用完对象时,它放回池中.从而减少创建对象的开 ...
- zap安装和部署
1.zap的安装 注意一点测试环境新申请的linux系统java执行路径是/usr/install/java/bin/java,安装zap的时候,会提示找不到java运行环境,解决办法是:做一个软链接 ...
- log4j教程 7、日志记录级别
org.apache.log4j.Level类提供以下级别,但也可以通过Level类的子类自定义级别. Level 描述 ALL 各级包括自定义级别 DEBUG 指定细粒度信息事件是最有用的应用程序调 ...