git搭建服务器

搭建Git服务器


远程仓库一节中,我们讲了远程仓库实际上和本地仓库没啥不同,纯粹为了7x24小时开机并交换大家的修改。

GitHub就是一个免费托管开源代码的远程仓库。但是对于某些视源代码如生命的商业公司来说,既不想公开源代码,又舍不得给GitHub交保护费,那就只能自己搭建一台Git服务器作为私有仓库使用。

搭建Git服务器需要准备一台运行Linux的机器,强烈推荐用Ubuntu或Debian,这样,通过几条简单的apt命令就可以完成安装。

假设你已经有sudo权限的用户账号,下面,正式开始安装。

第一步,安装git

$ sudo apt-get install git

第二步,创建一个git用户,用来运行git服务:

$ sudo adduser git

第三步,创建证书登录:

收集所有需要登录的用户的公钥,就是他们自己的id_rsa.pub文件,把所有公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个。

第四步,初始化Git仓库:

先选定一个目录作为Git仓库,假定是/srv/sample.git,在/srv目录下输入命令:

$ sudo git init --bare sample.git

Git就会创建一个裸仓库,裸仓库没有工作区,因为服务器上的Git仓库纯粹是为了共享,所以不让用户直接登录到服务器上去改工作区,并且服务器上的Git仓库通常都以.git结尾。然后,把owner改为git

$ sudo chown -R git:git sample.git

第五步,禁用shell登录:

出于安全考虑,第二步创建的git用户不允许登录shell,这可以通过编辑/etc/passwd文件完成。找到类似下面的一行:

git:x:1001:1001:,,,:/home/git:/bin/bash

改为:

git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell

这样,git用户可以正常通过ssh使用git,但无法登录shell,因为我们为git用户指定的git-shell每次一登录就自动退出。

第六步,克隆远程仓库:

现在,可以通过git clone命令克隆远程仓库了,在各自的电脑上运行:

$ git clone git@server:/srv/sample.git
Cloning into ‘sample‘...
warning: You appear to have cloned an empty repository.

剩下的推送就简单了。

管理公钥

如果团队很小,把每个人的公钥收集起来放到服务器的/home/git/.ssh/authorized_keys文件里就是可行的。如果团队有几百号人,就没法这么玩了,这时,可以用Gitosis来管理公钥。

这里我们不介绍怎么玩Gitosis了,几百号人的团队基本都在500强了,相信找个高水平的Linux管理员问题不大。

管理权限

有很多不但视源代码如生命,而且视员工为窃贼的公司,会在版本控制系统里设置一套完善的权限控制,每个人是否有读写权限会精确到每个分支甚至每个目录下。因为Git是为Linux源代码托管而开发的,所以Git也继承了开源社区的精神,不支持权限控制。不过,因为Git支持钩子(hook),所以,可以在服务器端编写一系列脚本来控制提交等操作,达到权限控制的目的。Gitolite就是这个工具。

这里我们也不介绍Gitolite了,不要把有限的生命浪费到权限斗争中。

小结

  • 搭建Git服务器非常简单,通常10分钟即可完成;
  • 要方便管理公钥,用Gitosis
  • 要像SVN那样变态地控制权限,用Gitolite
时间: 2024-10-12 11:55:23

git搭建服务器的相关文章

使用gitolite-3.6搭建git镜像服务器

需求: 在外网搭建一台git服务器,大家在任何联网的地方可以向git服务器提交.clone,如果一个仓库特别大,在公司clone一个仓库的时候会使用时间过长,带宽占用等不利的因素,那我们在公司内网搭建一台镜像服务器,clone代码的时候可以从镜像服务器clone,会省很多时间,下面我们开始. 我是参照gitolite官网文档搭建的:http://gitolite.com/gitolite/mirroring.html 环境: 总共3台机器,一台在外网git主服务器(以下称为servser1),一

在家用机上搭建 Git https 服务器

今天主要叙述在家里台式机的虚拟机上搭建支持 https 的 ubuntu git 服务器. 实际上,从一个用户请求家里 git 服务器代码,最终完成代码的传输,主要是通过以下的过程: 首先,从外界寻找到连接上互联网的家里的路由器,由路由器发送请求到虚拟机的 host,由 host 发送到虚拟机,由虚拟机的 apache 服务器将 https 请求转化为 git 数据请求发送给 git 服务程序,git 服务器程序拿到数据以后原路返还,下面一点一点的将这个过程说清楚. 第一步:从外界找到家里的路由

用Gitolite搭建服务器上的Git

使用git作为版本控制工具,确实非常流行且好用,常用的git代码服务器有Github还是国内的Gitcafe和OSC都是很不错,可以免费存放一些开源的项目代码,对于私人项目,则需要支付一定的费用.同时对于代码安全隐私的考虑,有时需要搭建自己的私有git服务器,官方wiki有介绍,这里在整理一遍自己的搭建过程,供之后参看. 安装基础依赖包 1 # yum install perl openssh git 添加并切换到git用户 12 # useradd git# su - git 安装gitoli

已经在Git Server服务器上导入了SSH公钥,可用TortoiseGit同步代码时,还是提示输入密码?

GitHub虽好,但毕竟在国内访问不是很稳定,速度也不快,而且推送到上面的源码等资料必须公开,除非你给他交了保护费:所以有条件的话,建议大家搭建自己的Git Server.本地和局域网服务器都好,不信你试试,那速度,怎一个爽字了得! 默认情况下,使用TortoiseGit同步代码,每次都需要输入用户名和密码,但为了方便可以在客户端创建ssh密钥,用于服务器端和客户端的认证(详细过程大家可参考这里),但有时会出现“ 已经在Git Server服务器上导入了SSH公钥,可用TortoiseGit同步

jenkins + Git 搭建持续集成环境

jenkins + Git 搭建持续集成环境 持续集成通过自动化构建.自动化测试以及自动化部署加上较高的集成频率保证了开发系统中的问题能迅速被发现和修复,降低了集成失败的风险,使得系统在开发中始终保持在一个稳定健康的集成状态.jenkins是目前广泛应用的持续集成工具,本文记录我使用jenkins+Git配置持续集成环境的整个流程以及踩到的坑(jenkins过程的坑往往不是在第一次配置,而是在配置结束后更改某些配置项的时候踩到). 总体流程如下: tomcat8.0下载地址:http://tom

搭建服务器(2)

搭建服务器(2) 1.安装GCC(GNU编译器集) GCC即GNU编译器集,是一个GNU项目开发的支持多种编程语言.最小化安装的CentOS没有默认安装.运行下面命令安装GCC编译器. yum install gcc gcc --version(检验版本) 2.安装Apache HTTP服务器 不管你因为什么原因使用服务器,大部分情况你都需要一个Http服务器运行网站.多媒体.用户端脚本和很多其他的东西. yum install http(我选择默认端口) 可以配置端口:

【Web】Eclipse + Maven + Struts搭建服务器

一.环境 系统:Windows7 IDE:Eclipse-Kepler Service Release 2 使用插件:Maven(请预先在电脑上安装Maven) 二.搭建 在Eclipse中新建一个Maven工程: 选择Maven Project. 注意选择maven-archetype-web选项.Catalog处,点击右边的Configuration按钮,弹出对话框: 点击右边的Add remote Catalog,在Catalog file输入框中输入http://repo1.maven.

1.2搭建服务器环境与备份原有数据简述

搭建服务器环境 安装Apache,mysql和php,并且配置实现三者的关联. 安装Apache 1. 下载Apache的安装文件:官网 http://www.apache.org 2. 双击安装,进入安装准备界面 3. 点击“next”,进入协议界面 4. 选中接收协议,点击“next”,进入到阅读协议界面 5. 点击“next”,进入服务器信息配置界面 6. 配置完服务器信息后,点击“next”进入设置选中界面 7. 选中自定义安装,点击“next”进入安装配置界面 a) 安装路径配置:在D

git仓库服务器SSH认证示例

git在用户管理及管理上,下面上三种解决办法: 如果需要团队里的每个人都对仓库有写权限,又不能给每个人在服务器上建立账户,那么提供 SSH 连接就是唯一的选择了.我们假设用来共享仓库的服务器已经安装了 SSH 服务,而且你通过它访问服务器.    有好几个办法可以让团队的每个人都有访问权. 第一个办法是给每个人建立一个账户,直截了当但过于繁琐.反复的运行 adduser 并且给所有人设定临时密码可不是好玩的.     第二个办法是在主机上建立一个 git 账户,让每个需要写权限的人发送一个 SS