开发者社区> sky-heaven> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

ubuntu完美搭建git服务器【转】

简介: 转自:http://blog.csdn.net/tommy_wxie/article/details/38779667 最近公司项目需要用到Git来管理项目,正好逢周末花了点时间在虚拟机的unbuntu系统中搭建了下git的服务器,由于搭建过程中多多少少遇到了一些小问题,再因为个人记性不太好,所以在这里记录下来,以备不时之需。
+关注继续查看

转自:http://blog.csdn.net/tommy_wxie/article/details/38779667

最近公司项目需要用到Git来管理项目,正好逢周末花了点时间在虚拟机的unbuntu系统中搭建了下git的服务器,由于搭建过程中多多少少遇到了一些小问题,再因为个人记性不太好,所以在这里记录下来,以备不时之需。开始我已经在虚拟机的ubuntu12.04系统下已经装过一次,忘了记录,这次重新再在虚拟机的ubuntu13.10系统下一步一步的来搭建,后面介绍包括了在客户端机器(宿主机器win7)安装git客户端,及客户端git bash的简单使用。

 

一、安装git服务器所需软件

 

打开终端输入以下命令:

 

  1. ubuntu:~$ sudo apt-get install git-core openssh-server openssh-client  

 

 

 


 

git-core是git版本控制核心软件

安装openssh-server和openssh-client是由于git需要通过ssh协议来在服务器与客户端之间传输文件

 

然后中间有个确认操作,输入Y后等待系统自动从镜像服务器中下载软件安装,安装完后会回到用户当前目录。如果

安装提示失败,可能是因为系统软件库的索引文件太旧了,先更新一下就可以了,更新命令如下:

 

  1. ubuntu:~$ sudo apt-get update  

 

 

 


 

更新完软件库索引后继续执行上面的安装命令即可。

 

安装python的setuptools和gitosis,由于gitosis的安装需要依赖于python的一些工具,所以我们需要先安装python

的setuptools。

执行下面的命令:

  1. ubuntu:~$ sudo apt-get install python-setuptools  

 

 

这个工具比较小,安装也比较快,接下来准备安装gitosis,安装gitosis之前需要初始化一下服务器的git用户信息,这个

随便填。

 

  1. ubuntu:~$ git config --global user.name "myname"   
  2. ubuntu:~$ git config --global user.email "******@gmail.com"  

 

 


初始化服务器用户信息后,就可以安装gitosis了,gitosis主要是用于给用户授权,设置权限也算是很方便的。

可以通过以下命令获取gitosis版本文件

 

  1. ubuntu:~$ git clone https://github.com/res0nat0r/gitosis.git  

 

注意:中间有两个是数字零

 

获取gitosis文件后,进入到文件目录下面


  1. ubuntu:/tmp$ cd gitosis/  

 

 

接着使用python命令安装目录下的setup.py的python脚本进行安装


 

  1. ubuntu:/tmp/gitosis$ sudo python setup.py install  

 


 

到这里,整个安装步骤就完成了,下面就开始对git进行一些基本的配置。


二、创建git管理员账户、配置git


创建一个账户(git)作为git服务器的管理员,可以管理其他用户的项目权限。

 

  1. ubuntu:/tmp/gitosis$ sudo useradd -m git  
  2. ubuntu:/tmp/gitosis$ sudo passwd git  

 

 


然后再/home目录下创建一个项目仓库存储点,并设置只有git用户拥有所有权限,其他用户没有任何权限。

 

  1. ubuntu:/tmp/gitosis$ sudo mkdir /home/gitrepository  
  2. ubuntu:/tmp/gitosis$ sudo chown git:git /home/gitrepository/  
  3. ubuntu:/tmp/gitosis$ sudo chmod 700 /home/gitrepository/  

 

 


由于gitosis默认状态下会将仓库放在用户的repositories目录下,例如git用户的仓库地址默认在

/home/git/repositories/目录下,这里我们需要创建一个链接映射。让他指向我们前面创建的专门用于存放项目

的仓库目录/home/gitrepository。

 

  1. ubuntu:/tmp/gitosis$ sudo ln -s /home/gitrepository /home/git/repositories  

 

 

 

这里我将在服务器端生成ssh公钥,如果想在其他机器上管理也可以在其他机器上生成一个ssh的公钥。

 

  1. ubuntu:/home/git$ ssh-keygen -t rsa  

 


 

这里会提示输入密码,我们不输入直接回车即可。

然后用刚生成公钥id_rsa.pub来对gitosis进行初始化。



出现如上信息说明gitosis已经初始化成功。

gitosis主要是通过gitosis-admin.git仓库来管理一些配置文件的,如用户权限的管理。这里我们需要对其中的一

个post-update文件添加可执行的权限。

 

  1. ubuntu:/home/git$ sudo chmod 755 /home/gitrepository/gitosis-admin.git/hooks/post-update  

 

 


三、服务器上创建项目仓库


使用git账户在服务器上创建一个目录(mytestproject.git)并初始化成git项目仓库。

 

  1. ubuntu:/home/git$ su git  
  2. $ cd /home/gitrepository  
  3. $ mkdir mytestproject.git  
  4. $ git init --bare   
  5. $ exit  

 

 

 

如果出现以下信息就说明已经成功创建了一个名为mytestproject.git的项目仓库了,新建的这个仓库暂时还是空

的,不能被客户端clone,还需要对gitosis进行一些配置操作。


四、使用gitosis管理用户操作项目的权限


首先需要在前面生成ssh公钥(用来初始化gitosis)的机器上将gitosis-admin.git的仓库clone下来。

在客户端机器上新建一个目录用于存放gitosis-admin.git仓库

 

  1. ubuntu:~$ mkdir gitadmin  
  2. ubuntu:~$ cd gitadmin/  
  3. ubuntu:~/gitadmin$ git clone git@192.168.1.106:gitosis-admin.git  

 


 

clone正确会显示一下信息


clone下来会有一个gitosis.conf的配置文件和一个keydir的目录。gitosis.conf用于配置用户的权限信息,

keydir主要用户存放ssh公钥文件(一般以“用户名.pub”命名,gitosis.conf配置文件中需使用相同用户名),用

于认证请求的客户端机器。


现在让需要授权的用户使用前面的方式各自在其自己的机器上生成相应的ssh公钥文件,管理员把他们分别按用户名

命名好,复制到keydir目录下。

 

  1. ubuntu:~$ cp /home/aaaaa/Desktop/zhangsan.pub /home/aaaaa/gitadmin/gitosis-admin/keydir/  
  2.   
  3. ubuntu:~$ cp /home/aaaaa/Desktop/lisi.pub /home/aaaaa/gitadmin/gitosis-admin/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####只读项目仓库名


因为这些配置的修改只是在本地修改的,还需要推送到服务器中才能生效。

 

  1. ubuntu:~/gitadmin/gitosis-admin$ git add .  
  2. ubuntu:~/gitadmin/gitosis-admin$ git commit -am "add a user permission"  
  3. ubuntu:~/gitadmin/gitosis-admin$ git push origin master  

 


 

推送成功会显示下面提示信息



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

 

  1. ubuntu:~/gitadmin/gitosis-admin$ sudo /etc/init.d/ssh restart  

 


 

现在,服务端的git就已经安装和配置完成了,接下来就需要有权限的组成员在各自的机器上clone服务器上的相应

项目仓库进行相应的工作了。


五、客户端(windows)使用git


下载安装windows版本的git客户端软件,下载地址:http://msysgit.github.io/

安装完成后右键菜单会出现几个git相关的菜单选项,我们主要使用其中的git bash通过命令行来进行操作。

在本地新建一个目录,使用git初始化这个目录,然后再里面新建一个文本文件用于测试,最后关联到git服务器仓库

中的相关项目,最后上传本地版本到服务器。

 

  1. $ mkdir testgit  
  2. $ cd testgit  
  3. $ git init  
  4. $ echo "this is a test text file,will push to server" > hello.txt  
  5. $ git add .  
  6. $ git commit -am "init a base version,add a first file for push to server"  
  7. $ git remote add origin git@serverip:mytestproject.git  
  8. $ git push origin master  

 


 

这样服务端就创建好了一个mytestproject.git的仓库的基础版本了,现在其他组员只要从服务端进行clone就可以

了。

window下面进入到需要克隆的本地目录下面右键选择git bash选项,输入

 

  1. $ git clone git@serverip:mytestproject.git  

 


 

就可以把项目clone到本地仓库了。

下面进行简单的修改和提交操作

 

  1. $ cd mytestproject  
  2. $ echo "this is another text file created by other" >another.txt  
  3. $ git add .  
  4. $ git commit -am "add a another file by other"  
  5. $ git push origin master  


 

 

最后推送到服务器成功会显示如下信息

 
1
【作者】张昺华
【新浪微博】 张昺华--sky
【twitter】 @sky2030_
【facebook】 张昺华 zhangbinghua
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
ubuntu简单搭建nfs tftp服务器
ubuntu简单搭建nfs tftp服务器
156 0
ubuntu搭建个人git服务器
搭建个人Git服务器
1500 0
在ubuntu上搭建FTP服务器
1、安装FTP软件源 sudo apt-get install vsftp 2、安装完毕FTP会自动为我们创建帐户,这时候设置密码就可以了 sudo passwd ftp 按提示输入即可 3、创建ftp用户的home目录,使用sudo mkdir /home/ftp命令 4、设置home目录权限chmod 777 /home/ftp  5、配置/etc/vsftpd.
4043 0
1Ubuntu下ftp服务器搭建
1安装ftp服务器的条件 电脑联网 2.执行以下命令: 3配置vsftpd.conf 命令:sudo vi /etc/vsftpd.conf 在配置文件(vsftpd.conf最后面)中添加以下配置: 要注意的是:anno_root=/home/toto/ftp要含有ftp这个文件夹,并且这个文件夹要和普通文件的权限是相同的。不能是最
1775 0
ubuntu下搭建nfs服务器
1.首先查看系统中是否安装了nfs服务,命令为:dpkg -l | grep nfs  2. 如果没有安装如上文件 则在线安装nfs服务和客户端及端口映射程序 命令为: apt-get install nfs-kernel-server nfs-common portmap  在这里的portmap被rpcbind替代3.安装好后修改 共享的配置文件,命令为:vim /etc/exp
1678 0
+关注
sky-heaven
我是一个技术爱好者,喜欢分享交流技术心得
1191
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载