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

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

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

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

打开终端输入以下命令:

[sql] view plaincopyprint?在CODE上查看代码片派生到我的代码片

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

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

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

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

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

[sql] view plaincopyprint?在CODE上查看代码片派生到我的代码片

ubuntu:~$ sudo apt-get update  

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

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

的setuptools。

执行下面的命令:

[sql] view plaincopyprint?在CODE上查看代码片派生到我的代码片

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

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

随便填。

[sql] view plaincopyprint?在CODE上查看代码片派生到我的代码片

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

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

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

[sql] view plaincopyprint?在CODE上查看代码片派生到我的代码片

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

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

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

[sql] view plaincopyprint?在CODE上查看代码片派生到我的代码片

ubuntu:/tmp$ cd gitosis/  

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

[sql] view plaincopyprint?在CODE上查看代码片派生到我的代码片

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

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

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

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

[sql] view plaincopyprint?在CODE上查看代码片派生到我的代码片

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

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

[sql] view plaincopyprint?在CODE上查看代码片派生到我的代码片

ubuntu:/tmp/gitosis$ sudo mkdir /home/gitrepository
ubuntu:/tmp/gitosis$ sudo chown git:git /home/gitrepository/
ubuntu:/tmp/gitosis$ sudo chmod 700 /home/gitrepository/  

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

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

的仓库目录/home/gitrepository。

[sql] view plaincopyprint?在CODE上查看代码片派生到我的代码片

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

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

[sql] view plaincopyprint?在CODE上查看代码片派生到我的代码片

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

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

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

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

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

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

[sql] view plaincopyprint?在CODE上查看代码片派生到我的代码片

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

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

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

[sql] view plaincopyprint?在CODE上查看代码片派生到我的代码片

ubuntu:/home/git$ su git
$ cd /home/gitrepository
$ mkdir mytestproject.git
$ git init --bare
$ exit  

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

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

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

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

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

[sql] view plaincopyprint?在CODE上查看代码片派生到我的代码片

ubuntu:~$ mkdir gitadmin
ubuntu:~$ cd gitadmin/
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目录下。

[sql] view plaincopyprint?在CODE上查看代码片派生到我的代码片

ubuntu:~$ cp /home/aaaaa/Desktop/zhangsan.pub /home/aaaaa/gitadmin/gitosis-admin/keydir/  

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####只读项目仓库名

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

[sql] view plaincopyprint?在CODE上查看代码片派生到我的代码片

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

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

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

[sql] view plaincopyprint?在CODE上查看代码片派生到我的代码片

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服务器仓库

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

[sql] view plaincopyprint?在CODE上查看代码片派生到我的代码片

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

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

了。

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

[sql] view plaincopyprint?在CODE上查看代码片派生到我的代码片

$ git clone git@serverip:mytestproject.git  

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

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

[sql] view plaincopyprint?在CODE上查看代码片派生到我的代码片

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

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

 

时间: 2024-10-28 22:15:46

ubuntu完美搭建git服务器【转】的相关文章

在Linux下搭建Git服务器的方法详解_相关技巧

前言 GitHub就是一个免费托管开源代码的远程仓库.但是对于某些视源代码如生命的商业公司来说,既不想公开源代码,又舍不得给GitHub交保护费,那就只能自己搭建一台Git服务器作为私有仓库使用. 我打算自己搭建git服务器.虽然目前已经有很不错的git工具,如github,coding.net等,但是为了安全,减少限制和开销,还是放在自己的服务器为好.下面给出安装配置的过程,有问题欢迎讨论和交流,我会及时回复的. 第一步 安装git:可以通过命令的方式快速安装,不同的linux的安装方法可能不

如何在Linux上用Apache搭建Git服务器

最近在学Linux,终于在Linux上用Apache搭建起了Git服务器,在此记录一下. 服务器:阿里云服务器 Linux版本:CentOS 6.5 Apache版本:Apache/2.2.15 Git版本:git 1.7.1 Git访问方式:基于http的基本验证(非SSL) Apache的安装 1. 安装Apache软件:yum install httpd 2. 设置Apache在服务器启动时运行:chkconfig --levels 235 httpd on Git的安装与配置 1. 安装

linux搭建git服务器

git是非常方便的版本控制工具,目前网上有很多免费的git仓库可以给我们使用,但是有些时候我们并不放心将我们的项目寄放在别人的服务器上,这个时候就需要自己搭建一个git服务器. 在linux上面搭建git服务器是一件非常轻松的事情,只需要按照以下几步就能完成.为了确保整个过程的顺利,最好新创建一个名为git的账号,再使用该账号进行配置 1.安装git 在linux系统中,git安装只需要简单命令就可以完成,只需要打开终端,输入 sudo apt-get update sudo apt-get i

阿里云Linux-CentOS系统下-搭建Git服务器详解_Linux

 阿里云Linux-CentOS系统下-搭建Git服务器 步骤总结: 1. 安装git 首先确认服务器是否安装Git 在Xshell中输入命令:$ rpm -qa git 结果如下表示已经安装: 如果未安装就安装git 在Xshell中输入:$ yum install git 2. 创建一个git用户,用来运行git服务: 在Xshell中输入:$ sudo adduser git 此时在阿里云服务器的根目录:/home文件夹下新增一个文件夹git 按这个层级建立文件用于存放客户端用户的公钥:/

CentOS上搭建Git服务器步骤详解

Git是一个分布式版本控制软件,原来是linux内核开发者Linus Torvalds为了更好地管理linux内核开发而创立的.发展至今,Git已经成为了一个相当好用的版本管理工具.相比于SVN,如果想要保存一些微小的修改也必须得提交服务器保存才可以,这样使服务器的版本号过多,而Git解决了这个问题,一些小的修改只在本地提交即可,只需最后修改完成后再提交服务器.正是由于这样的便捷性,现在越来越多的社区项目都开始使用Git来取代SVN之类较为传统的版本管理工具进行开发. . 使用CentOS搭建G

CENTOS搭建GIT服务器和GITOLITE配置方法

最近给团队搭建Git服务器,路径曲折,记下来以备查询,内部服务器用的Centos6.4 64位版本,git 安装Git 安装git 首先安装git所需的库: yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel 下载Git安装文件 wget http://git-core.googlecode.com/files/git-1.9.0.tar.gz 安装 tar zxvf git-1

如何在Ubuntu下搭建tftp服务器

  今天开始调试arm的板子,要通过tftp下载到板子上,所以又要配置tftp服务器,真的烦死了- (本人酷爱装系统,所以经常都要搞配置) 因为之前已经在Ubuntu下搭建过很多次tftp服务器了,但是一直记不住那一个配置文件的名字(记性太差),所以每次都要百度. 可是每次百度出来的结果都不一样,而且出入很大,有的过程相当的繁琐,不仅很麻烦,而且搞到最后还没有配置成功.所以干脆写个日志记下来. tftp服务器最简单安装配置1.安装tftp-server sudo apt-get install

Linux中使用Gitolite 搭建 Git 服务器(服务器和客户端可以为同一台机器)

一般来说,配置git服务器的话,需要一台服务器,还需要一个客户端来验证服务器是否搭建成功,而一般开发者基本都只有一台服务器,那就需要这台服务器既作为Git的服务器,又要作为客户端来使用了,下面的教程就是以服务器和客户端都是同一台服务器为例的.如果需要服务器和客户端分开的话,只需要将下面列出的服务器端和客户端的操作到相应的机器上操作就可以了. 第一步(服务器端):创建git服务器专用账户 账户名字就叫git吧,创建之后为其设置密码  代码如下 复制代码 # useradd -m -s /bin/b

CentOS7搭建git服务器

1.yum – y install git        安装git,git作为一个 分布式代码仓库,其实没有server和client的概念,每个机器上保存的都是一份完整的代码库,不过貌似是大团队的话,为了管理方便,会在服务器装一个管理的东东,俺是小团队,有需要再去研究,小团队手动就口以了 安装git 2.创建一个裸仓库 cd srv mkdir git cd git git –init bare project.git 3.创建一个git用户,git登陆上传走的貌似好像就是ssh,所以要创建