一:安装git服务器所需软件
sudo apt-get install git-core openssh-server openssh-client python-setuptools
1.git-core: git核心软件;
2.openssh-server和openssh-client:git通过ssh协议在服务器与客户端之间进行数据传输;
3.python-setuptools:gitosis依赖;
二:安装gitosis
1.安装gitosis之前需要初始化服务器的git用户信息,这个随便填。
git config --global user.name "xxx"
git config --global user.email "123@gmail.com"
2.安装gitosis.gitosis主要是给用户授权,通过以下命令获取gitosis版本文件:
git clone https://github.com/res0nat0r/gitosis.git
注意:中间有两个是数字零
3.获取gitosis文件后,进入到文件目录下面
cd gitosis/
4.使用python命令安装目录下的setup.py的python脚本进行安装
sudo python setup.py install
到这里,整个安装步骤就完成了,下面就开始对git进行一些基本的配置。
二:创建git管理员账户、配置git
1.创建一个账户(git)作为git服务器的管理员,可以管理其他用户的项目权限。
sudo useradd -m git
sudo passwd git
2.然后在/home目录下创建一个项目仓库存储点,并设置只有git用户拥有所有权限,其他用户没有任何权限。
sudo mkdir /home/gitrepository
sudo chown git:git /home/gitrepository/
sudo chmod 700 /home/gitrepository/
3.创建一个链接映射。
由于gitosis默认状态下会将仓库放在用户的repositories目录下,例如git用户的仓库地址默认在/home/git/repositories/目录下,这里我们需要创建一个链接映射,让他指向我们前面创建的专门用于存放项目的仓库目录/home/gitrepository。
su git
sudo ln -s /home/gitrepository /home/git/repositories
4.在服务器端生成ssh公钥,如果想在其他机器上管理也可以在其他机器上生成一个ssh的公钥。
ssh-keygen -t rsa
这里会提示输入密码,我们不输入直接回车即可。
然后用刚生成公钥id_rsa.pub来对gitosis进行初始化。
gitosis-init < ~/.ssh/id_rsa.pub
![](https://img.haomeiwen.com/i10074549/bffce457ed8d559e.png)
出现如上信息说明gitosis已经初始化成功。
gitosis主要是通过gitosis-admin.git仓库来管理一些配置文件的,如用户权限的管理。这里我们需要对其中的一个post-update文件添加可执行的权限。
sudo chmod 755 /home/gitrepository/gitosis-admin.git/hooks/post-update
三:服务器上创建项目仓库
1.使用git账户在服务器上创建一个目录(mytestproject.git)并初始化成git项目仓库。
su git
cd /home/gitrepository
git init --bare mytestproject.git
新建的这个仓库暂时还是空的,不能被客户端clone,还需要对gitosis进行一些配置操作。
四:使用gitosis管理用户操作项目的权限
1.首先需要在前面生成ssh公钥(用来初始化gitosis)的机器上将gitosis-admin.git的仓库clone下来。
mkdir gitadmin
cd gitadmin/
git clone git@192.168.1.106:repositories/gitosis-admin.git
clone下来会有一个gitosis.conf的配置文件和一个keydir的目录。gitosis.conf用于配置用户的权限信息,keydir主要用于存放ssh公钥文件(一般以“用户名.pub”命名,gitosis.conf配置文件中需使用相同用户名),用于认证请求的客户端机器。
2.复制ssh公钥文件到keydir目录下。
现在让需要授权的用户使用前面的方式各自在其自己的机器上生成相应的ssh公钥文件,管理员把他们分别按用户名命名好,复制到keydir目录下。
3.编辑gitosis.conf文件。
[gitosis]
[group gitosis-admin] ####管理员组
members = charn@ubuntu ####管理员用户名,需要在keydir目录下找到相应的.pub文件,多个可用空格隔开(下同)
writable = gitosis-admin####可写的项目仓库名,多个可用空格隔开(下同)
[group testwrite] ####可写权限组
members = zhangsan####组用户
writable = mytestproject####可写的项目仓库名
[group testread]####只读权限组
members =lisi####组用户
readonly= mytestproject####只读项目仓库名
因为这些配置的修改只是在本地修改的,还需要推送到服务器中才能生效。
git add .
git commit -am "add a user permission"
git push origin master
推送成功会显示下面提示信息
![](https://img.haomeiwen.com/i10074549/3220e3965b3a32a9.png)
新增的用户不能立即生效,这时候需要重新启动一下sshd服务。
sudo /etc/init.d/ssh restart
现在,服务端的git就已经安装和配置完成了,接下来就需要有权限的组成员在各自的机器上clone服务器上的相应项目仓库进行相应的工作了。
网友评论