文档章节

ubuntu14.10server搭建git服务器成功记录

包子的账号
 包子的账号
发布于 2015/08/21 22:38
字数 1893
阅读 1064
收藏 10

安装配置git

  1. 安装git和openssh。在当前用户下执行如下命令安装git和openssh:
    sudo apt-get install git-core openssh-server openssh-client

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

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

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

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

    sudo apt-get update

  2. 配置git

    • 创建所有代码仓库和用户权限的管理者git,并更改用户的密码。在当前用户下执行:
      sudo useradd -m -s /bin/bash git
      sudo passwd git

      useradd会在ubuntu上增加一个git用户

    • 创建git仓库的存储目录、更改文件目录属主为代码仓库的管理者git,只让git用户对此目录有权限。本文档以/home/repo目录做为git仓库的存储目录。在当前用户下执行:
      sudo mkdir /home/repo
      sudo chown git:git /home/repo
      sudo chmod 700 /home/repo

安装配置gitosis

  1. 安装gitosis前准备

    • 初始化git用户。在任何一台机器上使用git,第一次必须初始化一下。在当前用户下初始化全局的git信息:
      git config --global user.name "jackliu"
      git config --global user.email "xcltl618@gmail.com"

    • 安装python的setup tool。在当前用户下执行如下命令安装:
      sudo apt-get install python-setuptools

  2. 安装gitosis。在当前用户下进行安装,执行如下命令: 

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

    上面有2个零啊,不要打错了

  3. cd gitosis
    sudo python setup.py install
    默认状态下,gitosis会将git仓库放在 git用户的home下,所以我们做一个链接到/home /repo,su到git用户,执行如下命令:
    ln -s /home/repo /home/git/repositories
    然后退出git用户,一定要切换到git用户下执行

  4. 配置gitosis。如果你是git服务器的管理员,在你的计算机上(最好是另一台PC)来生成访问git服务器的ssh公钥,然后将生成的公钥拷贝到git服务器,执行相关命令来允许你用个人的计算机进行访问和管理git服务器。本文档以liutailin@liutailin-ThinkPad-Edge来做为远程访问和控制git服务器的管理用户。如果另外一台电脑还是linux的电脑,还要在linux上安装上git(传送下载地址http://git-scm.com/downloads),并且初始化用户git config那两句命令,如果是linux,在此计算机上的/home/liutailin目录下,执行如下命令: 

    • 在你的PC上选择一个用户做为远程访问及管理git服务器的用户,同时并生成ssh公钥。在选中的用户的home下,执行如下命令:
      ssh-keygen -t rsa

      windows电脑也一样是通过这个命令来生成公钥,默认保存在c盘用户文件夹下的.ssh文件夹,id_rsa.pub是公钥,用于身份验证的

    • 将生成的公钥拷贝到服务器的/tmp下,注意要把改成git服务器对应的IP地址:
      scp .ssh/id_rsa.pub git@<server-IP>:/tmp

      你也可以直接用U盘拷贝id_rsa.pub到这台服务器上到/tmp目录下

    • 回到git服务器/tmp/gitosis目录,执行:
      sudo chmod a+r /tmp/id_rsa.pub

    • 在git服务器上执行如下命令,让gitosis运行起来:
      sudo -H -u git gitosis-init < /tmp/id_rsa.pub
      会出现如下应答:
      Initialized empty Git repository in /home/repo/gitosis-admin.git/ Reinitialized existing Git repository in /home/repo/gitosis-admin.git/

    • gitosis通过一个git仓库来管理配置文件,仓库放在/home/repo/gitosis- admin.git。我们需要为一个文件加上可执行权限,以root用户登录,
      cd /home/git/repositories
      cd gitosis-admin.git/
      sudo chmod 755 /home/repo/gitosis-admin.git/hooks/post-update

        exit

在git服务器上搭建测试项目库

  1. 建立仓库名“test”的测试仓库。在git服务器上切换到git用户,执行如下命令建立测试仓库:
    su - git
    cd /home/repo
    mkdir test.git
    cd test.git
    git init --bare
    exit
    到目前为止,这只是一个空仓库,空仓库是不能clone的。为了能clone,我们必须先让某个有权限的人放一个初始化的版本到仓库中。所以,我们必须先修改一下gitosis-admin。此时需要 管理gitosis的配置文件。

  2. gitosis本身的配置也是通过git来实现的。

  • 克隆gitosis-admin.git仓库。
    在git管理员用户目录下,把gitosis-admin.git这个仓库clone下来,接下来我们可以用管理员的身份修改配置了。在git管理员用户目录下执行:

     git clone git@<server>:gitosis-admin.git

    在windows电脑上git base下一样执行这个克隆命令
    如果出现:
    fatal: '~/gitosis-admin.git' does not appear to be a git repository fatal: The remote end hung up unexpectedly
    改成:
    sudo git clone git@<Server-IP>:/home/repo/gitosis-admin.git

  • 拷贝需要访问git服务器的开发用户的ssh公钥 获取仓库后,执行
    cd gitosis-admin/            进入到刚刚克隆的管理仓库
    该目录下的keydir目录是用来存放所有需要访问git服务器的用户的ssh公钥:各个用户按照前面提到的办法生成各自的ssh公钥文件后,把所有人的ssh公钥文件都拿来,按名字命名一下,比如b@pc1.publz@pc2.pub等,统统拷贝到keydir下:
    su root

  • cp /path/.ssh/id_rsa.pub ./keydir/b@pc1.pub
    exit

    windows下直接复制粘贴

  • 修改gitosis.conf文件
    [gitosis]
    [group gitosis-admin]
    members = test@liutailin-ThinkPad-Edge ltl@it-c-015
    writable = gitosis-admin 

    [group hello]
    members = ltl@liutailin-ThinkPad-Edge ltl@it-c-015
    writable = test

    这个配置文件说明:

    members = 后面跟的一定要和 .pub的前缀一致,否则没有访问权限

    目前这些配置文件的修改只是在你的本地,你必须推送到远程的gitserver上才能真正生效。 加入新文件、提交并push到git服务器:
    git add .
    git commit -am “add test prj and users”
    git push origin master

    • gitosis-admin组成员有test@liutailin-ThinkPad-Edge, ltl@it-c-015, 该组对gitosis-admin仓库有读写权限;

    • hello组有test@liutailin-ThinkPad-Edge, ltl@it-c-015两个成员, 该组对test仓库有读写权限;

测试搭建的项目库

服务器搭建完了,并且有一个空的项目test在服务器上。接下来测试一下,空仓库是不能clone的,所以需要某一个有写权限的人初始化一个版本。 下面是在ltl@it-c-015客户端完成。
mkdir test-ori
cd test-ori/
git init
echo “/*add something*/” > hello
git add .

git commit -am “initial version”
git remote add origin git@<server-ip>:test.git
git push origin master
到此,test已经有了一个版本了,test仓库的其他成员只要先clone一下test仓库,就可以进行仓库的开发了。下面是一个用户b来克隆test:
su b
cd /home/b
git clone git@<server-ip>:test.git
cd teamwork
vim hello
git add .
git commit -am “b add”
git push origin master
exit

在git服务器上添加已有git项目

当我们有一个现成的git仓库,想放到 gitserver上供team使用。以zark仓库为例。 

  • 首先需要从你的工作仓库中得到一个纯仓库, 比如你的工作目录为~/kernel, 你想导出纯仓库到指定路径,然后拷贝到gitserver上去。
    git clone –bare ~/workspace/zark ~/zark.git

  • 然后把zark.git 拷贝到git服务器/home/repo/下,同时把zark.git的所有者变更为git scp ~/zark.git git@<server-ip>:/home/repo/
    chown -R git:git /home/repo/zark.git

  • 同时需要配置 gitosis相关配置文件,增加zark仓库的用户


© 著作权归作者所有

包子的账号
粉丝 1
博文 7
码字总数 3043
作品 0
长宁
私信 提问
Webhook实践 —— PHP自动部署

前言:最近在研究git自动部署项目,然后知道可以通过webhook实现自动部署的功能,查了一些文章,大多讲的是根据官网的方法用Node.js进行自动部署。线上服务器已经在跑php,想着能不能直接用p...

xiaozhenkai
2017/07/21
0
0
记录第一次搭建hexo

title: 记录第一次搭建hexo date: 2016-11-22 14:57:37 type: "hexo" tags: - 搭建hexo 即使扒了很多大佬的搭建教程,还是踩了很多坑,所以打算记录下来自己的搭建过程。本文主要介绍win10下...

黑天很黑
2016/11/22
0
0
docker-compose安装gogs,实现GitHub代码版本管理服务

gogs简介 由于GitHub私服需要钱,所以自己搭建了类似GitHub的代码版本管理系统。 docker-compose方式来安装gogs 通过docker-compose方式来安装gogs,好处是方便管理。以下是从刚装好Centos ...

谢思华
03/07
223
0
GitLab+Jenkins+Rsync+PM2实现Node项目的持续集成与自动部署

前言 最原始的软件开发流程是,在本地搭建好环境,进行开发测试,然后去服务器上搭建环境,手动上传代码,运行测试,然后启动服务。实际上,近些年来出现了很多的工具,使得这些步骤可以自动...

MageekChiu
2017/12/20
0
0
Android拓展系列(2)--Git使用

git是免费的开源的分布式的版本控制系统。 我说的直白点,要强调的点是每个git clone下来的版本库都是一个完整的版本库,包括所有的历史记录和版本信息,不需要依赖网络,这点在使用的过程中...

枫影Xda
2011/10/23
245
0

没有更多内容

加载失败,请刷新页面

加载更多

深入理解表单脚本系列第二篇——表单字段

本文转载于:专业的前端网站➜深入理解表单脚本系列第二篇——表单字段 前面的话   表单字段又叫表单元素,表示表单所包含控件,如<input>、<select>等。本文将详细介绍表单字段的内容 访问...

前端老手
19分钟前
5
0
前端技术之:常用webpack插件

1、html-webpack-plugin Simplifies creation of HTML files to serve your webpack bundles. 主页地址: https://github.com/jantimon/html-webpack-plugin 安装方法: npm i --save-dev h......

popgis
24分钟前
6
0
IT兄弟连 HTML5教程 HTML5表单 多样的输入类型1

HTML5拥有多个新的表单输入类型,这些新特性提供了更好的输入控制和验证。并不是所有的主浏览器都支持新的input类型,不过我们可以在所有的主浏览器中使用它们,即使不被支持,仍然可以显示为...

老码农的一亩三分地
26分钟前
5
0
规则引擎

解决问题 版本迭代速度更不上业务变化,但是若多个业务同时变化,除了为每个业务设计专属配置项也不利于操作。就想服务接口单纯化,将复杂多变的业务逻辑交给规则引擎,让用户在web端或cs端自...

无极之岚
今天
7
0
OSChina 周三乱弹 —— 欢迎你来做产品经理

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @巴拉迪维 :10多次劲歌金曲获奖,更多叱咤歌坛排名,黎明才应该是四大天王之首,只可惜拍的电影太少。单曲循环一个多月的歌,力荐 《无名份的...

小小编辑
今天
803
11

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部