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 /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 /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 最后推送到服务器成功会显示如下信息
ubuntu完美搭建git服务器【转】的更多相关文章
- Ubuntu上搭建Git服务器
下面我们就看看,如何在Ubuntu上搭建Git服务器.我们使用VMware虚拟机安装两台Ubantu系统,分别命名为gitServer和gitClient_01. 1.安装OpenSSH并配置SSH无 ...
- 版本控制-搭建git服务器
GitHub是一个免费托管开源代码的Git服务器,如果我们不想公开项目的源代码,又不想付费使用,那么我们可以自己搭建一台Git服务器. 下面我们就看看,如何在Ubuntu上搭建Git服务器.我们使用V ...
- 轻松搭建Git服务器(Ubuntu)
搭建Git服务器 在远程仓库节中,我们讲了远程仓库实际上和本地仓库没啥不同,纯粹为了7x24小时开机并交换大家的修改. GitHub就是一个免费托管开源代码的远程仓库.但是对于某些视源代码如生命的商业 ...
- Ubuntu 18.04搭建Git服务器
学习链接:博客园.廖雪峰 一 前言 前面已经贴了两个链接,为什么还要再写一篇呢,因为可能由于个人能力问题,我觉得上面两篇写的都有点简略,有些地方不太好理解,并不能一次性成功搭建,所以想根据自己踩过的坑 ...
- Git版本控制之ubuntu搭建Git服务器
Git是一个开源的分布式版本控制系统,可以有效.高效的处理从很小到非常大的项目版本管理.使得开发者可以通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库,也可以将代码提交到Git服务 ...
- 搭建Git服务器
在远程仓库一节中,我们讲了远程仓库实际上和本地仓库没啥不同,纯粹为了7x24小时开机并交换大家的修改. GitHub就是一个免费托管开源代码的远程仓库.但是对于某些视源代码如生命的商业公司来说,既不想 ...
- Git学习笔记(10)——搭建Git服务器
本文主要记录了Git服务器的搭建,以及一些其他的配置,和最后的小总结. Git远程仓库服务器 其实远程仓库和本地仓库没啥不同,远程仓库只是每天24小时开机为大家服务,所以叫做服务器.我们完全可以把自己 ...
- 如何在服务器上搭建git服务器
参考文章: http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/00137583770 ...
- Ubuntu server 搭建Git server
Ubuntu server 搭建Git server,git相比svn,最主要就是分布式了,每个客户端用户的本地都是一个版本管理控制器. Ubuntu server 版本为12.04 搭建步骤如下: ...
随机推荐
- c++ swap 函数
转载地址 1,最通用的模板交换函数模式:创建临时对象,调用对象的赋值操作符. template <class T> void swap ( T& a, T& b ) { T ...
- 【CentOS】安装jdk
问题描述: jdk安装与配置 (1)查看是否安装jdk --CentOS默认自带openjdk 先查看 rpm -qa | grep java 显示如下 ...
- 引擎设计跟踪(九.9) 文件包系统(Game Package System)
很早之前,闪现过写文件包系统的想法, 但是觉得还没有到时候. 由于目前工作上在做android ndk开发, 所以业余时间趁热做了android的移植, 因为android ndk提供的mountab ...
- 亚马逊 在线测试题目 amazon
分析:其实就是求矩形中某一个点到其他点的距离加权最小 方法一: 对每一个点求其到其他点的加权距离,然后比较最小.由于有M*N个点,对每一个点求加权距离是O(M*N)的,所以整体时间复杂度是O(M*M* ...
- 从程序员到CTO的Java技术路线图 (转自安卓巴士)
在技术方面无论我们怎么学习,总感觉需要提升自已不知道自己处于什么水平了.但如果有清晰的指示图供参考还是非常不错的,这样我们清楚的知道我们大概处于那个阶段和水平. Java程序员 高级特性 反射.泛型. ...
- String、StringBuilder
public class testString{ public static void main(String[] args) { String a="cool"; String ...
- HDU 1548 A strange lift (Dijkstra)
A strange lift http://acm.hdu.edu.cn/showproblem.php?pid=1548 Problem Description There is a strange ...
- jquery mobile的学习资料
磨刀不误砍柴工!想要学的快就得有好的资源.jquery mobile只是jquery的一个插件,所以相对简单易学.只要有jquery的基础就好.如果想修改东西的话,那么需要的知识就相对较多了. 书 & ...
- 关于Try/Catch 代码块
应当放在Try/Catch 代码块中的常见任务包括连接到一个数据库或与其交互.处理文件.调用Web 服务. 老实说,我这人很少有打破沙锅问到底的精神.不过昨晚听一技术人员跟他的项目经理说要在程序中使用 ...
- MongoDB (九) MongoDB 投影
mongodb 投影意思是只选择必要的数据而不是选择一个文件的数据的整个.如果一个文档有5个字段,需要显示只有3个,然后选择其中只有3个字段. find() 方法 MongoDB 的find()方法, ...