Ubuntu server 16.04 git服务器部署

安装git依赖软件

sudo apt-get install git-core python-setuptools openssh-server openssh-client

配置服务器git用户信息

git config --global user.name "fangqi179"

git config --global user.email "[email protected]"

安装gitosis

cd ~

git clone https://github.com/res0nat0r/gitosis.git

cd gitosis/

sudo python setup.py install

创建服务器管理员git

sudo useradd -m git

sudo passwd git

为git用户创建仓库目录

sudo mkdir /home/gitrepository

sudo chown git:git /home/gitrepository

创建链接映射

由于gitosis默认状态下会将仓库放在用户的repositories目录下,例如git用户的仓库地址默认在/home/git/repositories/目录下,这里我们需要创建一个链接映射。让他指向我们前面创建的专门用于存放项目的仓库目录/home/gitrepository。

su - git

ln -s /home/gitrepository /home/git/repositories

用ssh公钥对gitosis初始化

gitosis-init < ~/id_rsa.pub

此处的id_rsa.pub为管理员客户端的ssh公钥。

对post-update文件添加执行权限

sudo chmod 755 /home/gitrepository/gitosis-admin.git/hooks/post-update

gitosis管理员客户端配置权限

sudo mkdir ~/gitadmin

cd gitadmin

git clone [email protected]:gitosis-admin.git

clone下来会有一个gitosis.conf的配置文件和一个keydir的目录。gitosis.conf用于配置用户的权限信息,keydir主要用户存放ssh公钥文件(一般以“用户名.pub”命名,gitosis.conf配置文件中需使用相同用户名),用于认证请求的客户端机器。现在让需要授权的用户使用前面的方式各自在其自己的机器上生成相应的ssh公钥文件,管理员把他们分别按用户名命名好,复制到keydir目录下。

编辑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

新增的用户不能立即生效,这时候需要重新启动一下sshd服务

sudo /etc/init.d/ssh restart

你可能感兴趣的:(Ubuntu server 16.04 git服务器部署)