Centos搭建Git服务器和Gitolite权限设置
-
前言
很多技术人员都喜欢使用GitHub或者其他服务商托管代码,但有时候我们希望能把代码放在自己服务器上。本文将记录下我在centos下搭建git服务器以及配置的经验,供有需要的人参考。
-
安装git
yum install git
-
创建git用户
创建一个git用户和用户组,并创建用户文件夹
sudo useradd -c 'git version manage' -m -d /home/git -s /bin/bash -U git
修改密码
passwd git
根据提示修改密码即可 -
生成ssh-key
su git
ssh-keygen -t rsa -C "git"
ssh-copy-id git@127.0.0.1
输入ssh git@127.0.0.1,看能不能免密登录
ssh git@127.0.0.1
-
下载并安装gitolite
git clone git://github.com/sitaramc/gitolite
mkdir tmp_bin
~/gitolite/install -to ~/tmp_bin
mv ~/.ssh/authorized_keys ~/git.pub
~/tmp_bin/gitolite setup -pk ~/git.pub
成功后会初始化两个版本库 /home/git/repositories/gitolite-admin.git 和 /home/git/repositories/testing.git 测试是否安装成功
ssh git@127.0.0.1
输出如下就表示成功:
hello git, this is git@linux-dev running gitolite3 v3.5.2-4-g62fb317 on git1.8.1.2
R W gitolite-admin
R W testing -
克隆管理员仓库
git clone git@127.0.0.1:gitolite-admin.git
-
添加用户
在开发机上生成ssh公钥,把其中的pub上传到/home/git/gitolite-admin/keydir目录下,以用户名命名,如“star7th.pub”。至于如何上传,你可以使用Xftp4可视化工具也可以命令行远程传输到服务器的临时目录然后再从临时目录拷贝到目标目录。
添加完用户后,还需要权限配置。请参考下文。 -
添加权限以及添加项目
添加权限以及添加项目都在gitolite-admin/keydir/conf/gitolite.conf配置。
配置解释,以下面内容为例:
@admin = git star7th
@all = git star7th test dev1
repo gitolite-admin
RW+ = git
repo testing
RW+ = @all
repo myGit
RW+ = star7th @admin
第1,2行定义"admin"用户组和"all"用户组。
第3行定义一个gitolite-admin的仓库(这是自动创建好的)。第4行表示赋与“git”用户权限。如果是想赋予某个用户组以权限,则参考第7行。
第9行和第10行是我自行添加的仓库。添加的仓库名为“myGit”,权限赋予给用户“star7th”以及用户组@admin
当star7th.pub文件添加好,gitolite.conf修改好,需要提交到git仓库才能生效。
cd /home/git/gitolite-admin
git add conf/gitolite.conf
git add keydir/star7th.pub
git commit
git push当提交后,gitolite会自动添加用户star7th,自动创建空仓库“myGit”。这时候你可以在客户端将“myGit”克隆下来
git clone git clone git@server:myGit.git ##其中server替换为你的服务器地址
关于详细的gitolite的原理以及更多配置,可参考:http://www.ossxp.com/doc/git/gitolite.html -
补充说明
提醒下,如果你的本机是windowns,使用tortoiseGit,则注意一下,ssh-key生成的私钥你是不能直接用的。正确做法是使用puttygen.exe工具,在其菜单栏选择Conversions,import,导入key,然后再保存为ppk格式。
😯
欢迎使用 gogs 啊哈哈
搜索了一下gogs好像是好东西呀,找时间装下试试
看了一下还是国人开发的啊,本来觉得上gitlab有点麻烦,团队这么小,现在这个gogs以后可以先试试
其实我已经从gitlab转到gogs了,只是没写文章。这篇文章是旧的