Gitserver + gitosis + gitweb 安装及使用说明
这里讲到的是一套完整的git方案, 包括git server安装,gitosis进行项目及用户的权限管理,gitweb.
-
Gitserver安装
安装git和openssh(以下@server表示在服务器的机器上的操作):
a@server:~$sudoapt-get install git-core openssh-server openssh-client
新加用户git,该用户将作为所有代码仓库和用户权限的管理者:
a@server:~$sudouseradd -m git
a@server:~$sudopasswd git
在不需要后gitosis,gitweb,gerrit的情况下,可参考陈星宏写的《ubuntugit 服务器搭建.docx》
-
安装配置gitosis
Gitosis是用来对项目的权限和公租钥进行管理的工具。
-
服务器端
安装一下python的setuptool,这个也是为了gitosis做准备:
a@server:~$sudoapt-get install python-setuptools
安装gitosis包:
a@server:~$cd/tmp
a@server:/tmp$git clone https://github.com/res0nat0r/gitosis.git
a@server:/tmp$cdgitosis
a@server:/tmp/gitosis$sudopython setup.py install
如果你将作为git服务器的管理员,那么在你的电脑上(另一台pc)生成ssh公钥,在~/.ssh目录下生成公私钥:
usr@pc1:~$ssh-keygen-trsa
将公钥拷贝到服务器的/tmp下:
usr@pc1:~$scp.ssh/id_rsa.pub git@<server>:/tmp
回到git服务器上
a@server:/tmp/gitosis$sudochmod a+r /tmp/huangbz.pub
让gitosis运行起来:
a@server:/tmp/gitosis$ sudo -H -u git gitosis-init < /tmp/ huangbz.pub
修改权限:
root@server:/home/git#cd repositories
root@server:/home/git/repositories#cdgitosis-admin.git/
root@server:/home/git/repositories/gitosis-admin.git#sudochmod 755/home/repo/gitosis-admin.git/hooks/post-update
至此服务器端就配置好了。
-
客服端
添加新仓库:
执行:gitclone git@localhost:gitosis-admin.git
这会得到一个名为 gitosis-admin 的工作目录,gitosis.conf 文件是用来设置用户、仓库和权限的控制文件。keydir 目录则是保存所有具有访问权限用户公钥的地方—每人一个
添加新的项目成员:
新成员将生成的公钥传给管理员,管理员将公钥放到keydir中,并将该公钥push到服务器,这样新员就获得了访问服务器的权限。
usr@pc1:~/work/gitosis-admin$gitadd .
usr@pc1:~/work/gitosis-admin$gitcommit -am “add new user”
usr@pc1:~/work/gitosis-admin$gitpush
管理员添加一个新的空仓库,在gitosis.conf文件中添加以下内容,
[grouptest]
members= huangbz@carbit.com.cn
writable= test
把更改提交并push到git@localhost:gitosis-admin.git:
gitcommit -a -m "添加新仓库test"
gitpush
-
权限管理
管理员通达修改gitosis.conf文件,可以实现对不同项目进行权限的管理,如:
[gitosis]
[groupgitosis-admin]
writable = gitosis-admin
members =huangbz@carbit.com.cn
[test]
writable= test
members = huangbz hbz
这个配置文件表达了如下含义:gitosis-admin组成员有huangbz,该组对gitosis-admin仓库有读写权限,gitosis-admin是管理项目权限的git,只配给管理员。
test组有huangbz,hbz两个成员,该组对test仓库有读写权限,目前这些配置文件的修改只是在你的本地,你必须推送到远程的gitserver上才能真正生效。
加入新文件、提交并push到git服务器:
usr@pc1:~/work/gitosis-admin$gitadd .
usr@pc1:~/work/gitosis-admin$gitcommit -am “add test ”
usr@pc1:~/work/gitosis-admin$gitpush
管理员上将空项目到服务器,新建一个工程目录(位置随意):
mkdirtest
cdtest
toucha.txt
gitinit
gitremote add origin git@localhost:test.git
至此,管理创建了空仓库, 权限管理,空项目到服务器,其它成员就可以克隆该项目进行开发了。
-
Gitweb
安装apache2
sudoapt-get install apache2
安装gitweb
sudoapt-get install gitweb
配置gitweb
默认没有css加载,把gitweb要用的静态文件连接到DocumentRoot下:
cd/var/www/
sudoln -s /usr/share/gitweb/* .
修改配置:
sudovi /etc/gitweb.conf
将$projectroot改为git仓库存储目录(例如:/home/git/repositories),并修改权限sudochmod 777 –R /home/git/repositories