折腾树莓派(四)使用gitosis创建git托管服务器

来源:互联网 发布:sql约束表达式大全 编辑:程序博客网 时间:2024/06/08 04:49

安装gitosis

找一个目录,下载并安装gitosis

git clone https://github.com/res0nat0r/gitosis.gitcd gitosis/sudo python setup.py install

初始化gitosis

安装好gitosis之后,需要添加一个公用用户给git服务器使用者使用,切换至root用户下执行以下命令

adduser --system --shell /bin/bash --gecos 'git version control by pi' --group --disabled-password --home /home/git git

该用户为了安全起见,禁用了密码,所以无法直接登陆到shell。因此,我们需要在初始化gitosis的时候指定一个默认管理员,这里我们使用本机用户pi作为默认管理员。

ssh-keygen -t rsasudo -H -u git gitosis-init < ~/.ssh/id_rsa.pub

以上命令为用户pi创建了rsa密钥存储在~/.ssh/id_rsa.pub,并使用该密钥初始化gitosis。创建rsa密钥的时候可以设置密码,这样安全性更高。如果初始化成功,将得到以下两行提示:

Initialized empty Git repository in /home/git/repositories/gitosis-admin.git/
Reinitialized existing Git repository in /home/git/repositories/gitosis-admin.git/

最后,将管理项目的管理仓库gitosis-admin导出到用户pi的home,这样就完成了gitosis的初始化配置。

cd ~git clone git@localhost:gitosis-admin.git

管理gitosis项目访问权限

假设只要使用另一台电脑管理树莓派上的项目,首先需要生成rsa密钥,windows下可在任意文件夹下’git bash here’,通过命令生成,生成的密钥默认保存在’C:\Users\{username}\.ssh’文件夹内

ssh-keygen -t rsa

将密钥文件id_rsa.pub上传至树莓派的Public文件夹下,并重命名为user@PC.pub,将其移动到gitosis管理项目内

mv ~/Public/user@PC.pub ~/gitosis-admin/keydir

之后编辑gitosis.conf文件分配权限

vim ~/gitosis-admin/gitosis.conf

该文件刚初始化完有以下内容

[gitosis][group gitosis-admin]members = pi@PiServerwritable = gitosis-admin

如果我们需要创建一个新的项目test,并添加新用户user@PC为管理员,可在以上内容下面添加如下内容

[group test]members = pi@PiServer user@PCwritable = test

如果members中人数太多,可将其归入另一个小组,并使用@group形式添加,例:

[group admins]members = pi@PiServer user@PC[group test]members = @adminswritable = test

如果要添加只读用户,则添加以下内容

[group test_readonly]members = user@PCreadonly = test

编辑完毕后,在~/gitosis-admin文件夹下使用git提交以上更改内容,完成权限配置

git add .git commit -m 'add a new user and a test project'git push

如果是在树莓派上第一次使用git,则首先需要对git进行基本设置

git config --global user.email "you@example.com"git config --global user.name "Your Name"

gitosis测试

上面我们已经完成了用户user@PC在test项目中权限的设置,但还没有创建test项目。接下来,我们将在PC上创建一个test项目进行测试。

初始化仓库

首先,在任意目录下新建文件夹test,进入test后,在bash中输入git init初始化仓库,并随便创建一个文件commit。

设置remote

如果git服务器有固定ip,则设置remote为

git remote add origin git@192.168.1.55:test.git

如果git服务器没有固定ip,并通过域名ddns实现,则remote设置为

git remote add origin git@url:test.git

如果git端口不是默认端口22,则命令为

git remote add origin ssh://git@url:port/test.git

上传项目,push

第一次向git服务器上上传项目同普通的上传略有普通,需要在git push后增加-u参数

git push -u origin master

成功上传即测试通过。

删除服务器上的git项目

在树莓派上进入git用户的repositories文件夹,直接删除.git文件夹即可,以test项目为例

cd /home/git/repositories/sudo rm -r test.git
0 0