zoukankan      html  css  js  c++  java
  • AWS ec2的ubuntu14.04上安装git服务

    http://imerc.xyz/2015/11/13/Ubuntu-14-04%E4%B8%8AGit%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%9A%84%E6%90%AD%E5%BB%BA/

    工具与平台

    平台: Ubuntu Server 14.04

    工具: gitolite

    搭建步骤

    1、安装 git 和 openssh-server

    假设服务器系统 Ubunut 上有一个名为 ubuntu (AWS的Ubuntu默认管理员用户) 的管理员用户,在 ubuntu 用户下安装 git 和 openssh-server

    sudo apt-get install git
    sudo apt-get install openssh-server

    2、创建 git 用户

    创建一个名为 git 的用户,用于管理 git:

    # 添加一个名为 git 的用户,创建同名用户组,设置其可用 shell 登录,shell是 /bin/bash

    sudo adduser --system --shell /bin/bash --group git

    git这个名字是可以更改的,但一般都是取名为 git。

    有些系统只允许特定的用户组(ssh用户组)可以通过 ssh 协议登录,所以将 git 用户添加到 ssh 用户组中:

    sudo adduser git ssh

    给 git 用户设置密码:

    sudo passwd git

    AWS上登录只能使用密钥,所以不能设置密码。
    adduser时增加--disabled-password参数。

    3、在 ubuntu 用户下生成 ssh key

    还是在 ubuntu 用户下,生成 ssh key:

    ssh-keygen -t rsa   # 以 rsa 方式加密

    如果不想改变默认存储路径,不设置 ssh 通信时的密码,只要一路回车即可。
    当出现这个画面,表示 ssh key 已经生成成功。

    默认 ssh key 存储在 ~/.ssh 文件夹中,我们将其中的公钥 id_rsa.pub 复制到 git 用户主目录中待用,并重命名为 admin.pub:

    sudo cp ~/.ssh/id_rsa.pub /home/git/admin.pub

    4、在 git 用户下安装 gitolite

    切换到 git 用户:

    su git

    AWS上因为git用户没有设置密码,必须使用:sudo su git

    切换到 /tmp 目录下,从 github 上克隆 gitolite 的源码:

    cd /tmp
    git clone https://github.com/sitaramc/gitolite.git

    在 git 用户的主目录下新建 bin 文件夹,准备用来安装 gitolite:

    cd ~
    mkdir bin

    安装 gitolite:

    /tmp/gitolite/install -to ~/bin

    利用 admin.pub 来初始化 gitolite 初始仓库:

    ~/bin/gitolite setup -pk ~/admin.pub

    如果出现以下信息,表明初始化成功

    输出的信息告诉我们,gitolite 帮我们初始化了两个空仓库:gitolite-admin.git 和 testing.git。其中 testing.git 只是生成了给我们做测试之用,而 gitolite-admin.git 是用来管理的,非常重要。
    由于我们用 ubuntu 用户的的 ssh key 来初始化 gitolite 初始仓库,因此 ubuntu 用户就是管理员,它可以用来增加删除仓库,添加用户,进行权限管理等。
    切换到 ubuntu 用户下,尝试用 ssh 登录 git 用户:

    su ubuntu  # 可以使用exit命令切回ubuntu用户
    ssh git@127.0.0.1

    如果出现以下信息,则表明,git服务器基本上搭好了。

    上面的信息表示 ubuntu 用户目前对 gitolite-admin 和 testing 仓库有读写操作权限。
    ssh连接自动关闭,这是 gitolite 所起的作用,禁止 git 用户使用 shell 登录,以防没有权限的人登录 git 用户破坏里面的代码仓库。

    仓库管理

    由于 ubuntu 用户是 gitolite 的管理员,因此,我们在 ubuntu 用户下,便可以对仓库进行管理。管理方式也是通过 git clone /git push 等操作的来进行的。
    首先将 gitolite-admin.git 仓库克隆下来:

    git clone git@127.0.0.1:gitolite-admin.git

    由上图可知,gitolite-admin 文件夹下面还有两个文件夹 conf 和 keydir。其中 conf 文件夹下面存放了仓库配置文件 gitolite.conf 。keydir 里面存放各个用户的 ssh 公钥文件。
    打开 gitolite.conf ,里面的内容如下图所示,每个repo表示一个仓库,下面表示特定的用户有特定的权限。此处可以用来进行权限控制。

    假设此时有两个用户 Tom 和 Jack 需要利用这个git服务器合作开发一个名为 Lake 的项目。则首先 Tom 和 Jack 需要在它们各自的电脑上生成 ssh key,然后将其中的公钥 id_rsa.pub 改名为 Tom.pub 和 Jack.pub ,并添加到服务器上 ubuntu 用户下的 gitolite-admin/keydir/ 目录下。
    然后管理员需要编辑 gitolite.conf 文件,创建新的仓库,并给 Tom 和 Jack 读写的权限。

    现在这些配置其实还不能生效,只有把本地(ubuntu 用户下)对 gitolite-admin 的修改再推送到远程服务器(git 用户下),修改才能生效:

    # 在 ~/gitolite-admin/目录下
    git add -A
    git commit -m "create repo:Lake, add user:Tom&Jack"
    git push origin master

    这样,Tom 和 Jack 就对远程仓库 Lake 有了读写权限,就可以进行合作开发了。

    客户端使用

    客户端使用需先编辑 ~/.ssh/config 文件,如此文件不存在,先创建。然后输入以下内容:

    Host 服务器别名
        HostName AWS的开放域名
        User git                            # git是服务器上安装gitolite的用户名
        IdentityFile ~/.ssh/id_rsa   # 指定的私钥要和服务器上git里keydir目录下的公钥相对应

    配置config后就可以使用git命令。

    git clone git@服务器别名:testing.git

  • 相关阅读:
    Nginx + uWSGI 配置django
    django视图缓存的实现
    scrapy 资料
    scrapy 安装
    程序题做题一般步骤
    检查代码的一般步骤
    Mathematical-Analysis-I-4
    Mathematical-Analysis-I-3
    Mathematical-Analysis-I-1
    Mathematical-Analysis-I-2
  • 原文地址:https://www.cnblogs.com/liuzhenwei/p/5590073.html
Copyright © 2011-2022 走看看