zoukankan      html  css  js  c++  java
  • 使用自建Git服务器管理私有项目 Centos 7.3 + Git 2.11.0 + gitosis (实测 笔记)

    环境:

    系统硬件:vmware vsphere (CPU:2*4核,内存2G,双网卡)

    系统版本:CentOS-7-x86_64-Minimal-1611.iso

    GIT服务器IP:192.168.1.10 SSH端口:默认为22

    开发端1: GIT管理者,管理GIT服务器的成员和项目设置,同时也是使用者 (Win10系统)

    开发端2: GIT使用者 (Win10系统)

    安装步骤:

    1.显示服务器版本
    [root@tCentos7 ~]# cat /etc/redhat-release

    CentOS Linux release 7.3.1611 (Core)


    [root@tCentos7 ~]# uname -r

    3.10.0-514.2.2.el7.x86_64

    [root@tCentos7 ~]# ip addr|grep inet

    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
    inet 192.168.1.10/24 brd 192.168.1.255 scope global ens192
    inet6 fe80::2e16:e3ba:baaf:5f7a/64 scope link


    2.安装git

    2.1 安装依赖的库

    [root@tCentos7 ~]# yum install autoconf curl-devel expat-devel openssl-devel zlib-devel perl-devel

    2.2 删除原本的安装的git

    [root@tCentos7 ~]# yum remove git gettext-devel -y

    2.3 编译安装
    [root@tCentos7 ~]# cd /usr/local/src

    [root@tCentos7 ~]# wget https://www.kernel.org/pub/software/scm/git/git-2.11.0.tar.gz

    [root@tCentos7 ~]# tar -zvxf git-2.11.0.tar.gz

    [root@tCentos7 ~]# cd git-2.11.0

    [root@tCentos7 ~]# make configure

    [root@tCentos7 ~]# ./configure --prefix=/usr/local/git   

    ### 也可以指定  -with-iconv=/usr/local/libiconv  

    ### 也可以指定  --with-openssl=/opt/openssl

    [root@tCentos7 ~]# make && make install

    2.4 增加软连接

    [root@tCentos7 ~]# ln -s /usr/local/git/bin/* /usr/bin/

    [root@tCentos7 ~]# git --version

    git version 2.11.0


    3.安装GIT服务管理工具 gitosis 

    [root@centos ~]# cd /usr/local/src

    [root@centos ~]# yum install unzip -y

    [root@centos ~]# wget https://files.pythonhosted.org/packages/6e/9c/6a003320b00ef237f94aa74e4ad66c57a7618f6c79d67527136e2544b728/setuptools-41.0.0.zip

    [root@centos ~]# unzip setuptools-41.0.0.zip && cd setuptools-41.0.0

    [root@centos ~]# python setup.py build && python setup.py install

    [root@tCentos7 ~]# yum install python python-setuptools

    [root@tCentos7 ~]# cd /usr/local/src

    [root@tCentos7 ~]# git clone git://github.com/res0nat0r/gitosis.git

    [root@tCentos7 ~]# cd gitosis

    [root@tCentos7 ~]# python setup.py install

    显示Finished processing dependencies for gitosis==0.2即表示成功

    4.GIT服务管理工具设置

    4.1 打开GIT网址 https://www.git-scm.com/ ,下载Git-2.1 1.0-64-bit.exe,然后一路默认安装。

    https://github.com/git-for-windows/git/releases/download/v2.11.0.windows.1/Git-2.11.0-64-bit.exe

    4.2 设置git 默认打开git本地仓库目录 (这里设置为D盘下的repo目录)

    点击Git Bash命令行工具(如下图)

    关闭Git Bash命令行工具

    用写字板,打开C:Program FilesGitetcprofile文件

    找到以下段落,然后增加一行内容 cd d: epo

    MSYS2_PATH="/usr/local/bin:/usr/bin:/bin"
    MANPATH="/usr/local/man:/usr/share/man:/usr/man:/share/man:${MANPATH}"
    INFOPATH="/usr/local/info:/usr/share/info:/usr/info:/share/info:${INFOPATH}"

    cd d: epo

    保存后,重新打开Git Bash 后,默认目录已经变成 /d/repo (也就是D盘的repo目录)

    *******************************************************

    如果服务器的端口已经修改过,客户端访问也需要进行修改(如果GIT服务器使用默认端口22,则不需要以下步骤)

    #修改开发机客户端配置文件(可以省略每次输入端口)

    $ mkdir  ~/.ssh

    $ vim ~/.ssh/config


    #打开后,编辑文件,添加以下代码
    host 192.168.1.10
    hostname www.domain.com
    port 8200

    #修改后,开发机客户端即可用以下方式进行连接访问(如果域名指定了IP,也可以通过域名访问)

    #git clone ssh://git@192.168.1.10/gitosis-admin.git
    #git clone ssh://git@www.domain.com/gitosis-admin.git

    #否则需要需要加上端口进行访问

    #git clone ssh://git@192.168.1.10:8200/gitosis-admin.git

    #git clone ssh://git@www.domain.com:8200/gitosis-admin.git
    *******************************************************

    4.3 在开发端1上,生成密钥并上传到服务器上 (开发机的密钥名称为vicowong@git)

    $ mkdir  ~/.ssh

    $ cd ~/.ssh 

    $ ssh-keygen -m PEM -t rsa -b 4096 -C "youname@git" 

    显示 Enter file in which to save the key 然后输入指定生成公钥的文件名 vicowong@git,然后一路回车。(以下生成时显示)

    ********************************************************************************

    Generating public/private rsa key pair.
    Enter file in which to save the key (/c/Users/Administrator/.ssh/id_rsa): vicowong@git
    Enter passphrase (empty for no passphrase):
    Enter same passphrase again:
    Your identification has been saved in vicowong@git.
    Your public key has been saved in vicowong@git.pub.
    The key fingerprint is:
    SHA256:PAvBkuFdbYJp21whRYz6M+c8SymtkjRD5LaNfYe8Dak vicowong@git
    The key's randomart image is:
    +---[RSA 2048]----+
    | . oo*+. |
    | . ==.o.= |
    | +++= + |
    | .*oo |
    | o.*S. o |
    | *.*+B.. |
    | . +oO+= |
    | o E+= . |
    | .. .o |
    +----[SHA256]-----+

    ********************************************************************************

    4.4 查看已经生成的密钥对(私钥id_rsa,公钥id_rsa.pub)

    $ ll ~/.ssh 

    -rw-r--r-- 1 Administrator 197121 1679 1月 12 09:52 'id_rsa'
    -rw-r--r-- 1 Administrator 197121 390 1月 12 09:52 'id_rsa.pub'

    4.5 查看公钥内容(注意,公钥内容最后部分是公钥的名称 vicowong@git)

    $ cat test@git.pub 

    ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCkY7YFuitOJ5LJkf8kK741Wj1rHjKTYfbSvkBCkKQ

    AAAADAQABAAABAQCkY7YFuitOJ5LJkf8kK741Wj1rHjKTYfbSvkBCkKQhtkp5HnlkBCkKQhtkp5Hnl3

    upEZ77S9ALv3+0A7FAp+moRlJ33Kv5433r0Mr01qXRK+xfWJp/1 vicowong@git

    4.6 从开发机1,把刚生成的公钥上传到服务器 (建议用Ftp等工具,直接上传到服务器的/tmp目录)

    $ scp ~/.ssh/vicowong@git.pub root@192.168.1.10:/tmp/

    4.7 在服务器上显示已经上传的密钥

    [root@tCentos ~]# ll /tmp/id_rsa@git.pub

    4.8 .服务器上初始化gitosis

    增加 git 用户

    [root@tCentos ~]# adduser -m git

    切换到 git 用户
    [root@tCentos ~]# su - git

    把服务器的公钥导入到gitosis。(完成后即可以使用开发端来管理git服务器)

    [root@tCentos ~]# gitosis-init < /tmp/id_rsa.pub

    #显示以上信息即表示成功
    #Initialized empty Git repository in /home/git/repositories/gitosis-admin.git/
    #Reinitialized existing Git repository in /home/git/repositories/gitosis-admin.git/

    删除服务器上密钥(为安全考虑)

    [root@tCentos ~]# su - root

    [root@tCentos ~]# rm -rf /tmp/id_rsa.pub


    4.9 在开发端1,克隆git管理项目gitosis-admin(gitosis-admin服务器管理项目,本身也是一个git仓库)

    打开Git Bash命令提示工具工具

    $ mkdir -p /d/repo

    $ cd /d/repo

    $ git clone git@192.168.1.10:gitosis-admin.git

    查看从服务器上GIT仓库复制下来的GIT项目(也就是本地GIT仓库)

    $ ll /d/repo

    drwxr-xr-x 1 Administrator 197121         0 Jul  1  2016 git-admin/

    查看本地仓库信息

    $ cd /d/repo/git-admin

    $ git remote -v
    origin git@192.168.1.10:git-admin.git (fetch)
    origin git@192.168.1.10:git-admin.git (push)


    5 GIt服务端,git服务器管理项目的设置 (在开发端1上通过管理gitosis-admin项目达到管理目的)

    5.1查看已经上传密钥(所有的公钥都存放到gitosis-admin/keydir 目录下)

    $ cd /repo/gitosis-admin 

    $ ll keydir/

    'vicowong@git.pub'

    可以看到,目前有一个公钥vicowong@git.pub

    5.2 查看服务器上GIT仓库设置

    $ vim gitosis.conf

    #初始内容如下

    [gitosis]

    [group gitosis-admin]
    members = vicowong@git
    writable = gitosis-admin

    ***************************************************************************

    [group gitosis-admin]       表示这组(或者说是项目)设置名称为gitosis-admin

    members = vicowong@git    表示组的成员只有一个 vicowong@git ,对应成员已经上传到keydir目录的公钥

    writable = gitosis-admin     表示组的项目名称是gitosis-admin,组成员拥有写权限。对应的下载地址就是 git@192.168.1.10:gitosis-admin.git

    ***************************************************************************

    5.3 在开发端2上生成新的密钥(需要事先安装和设置好Git Bash)

    打开Git Bash,生成密钥时,需要指定密钥名称 test.git(可以参考开发端1的步骤)

    $ cd ~/.ssh

    $ ssh-keygen -t rsa -C "test@git"

    查看是否生成成功

    $ ll ~/.ssh

    -rw-r--r-- 1 Administrator 197121 1679 1月 12 09:52 'test@git'
    -rw-r--r-- 1 Administrator 197121 390 1月 12 09:52 'test@git.pub'

    查看生成公钥的名称是否是 test@git

    $ cat test@git.pub 

    ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCkY7YFuitOJ5LJkf8kK741Wj1rHjKTYfbSvkBCkKQ

    AAAADAQABAAABAQCkY7YFuitOJ5LJkf8kK741Wj1rHjKTYfbSvkBCkKQhtkp5HnlkBCkKQhtkp5Hnl3

    upEZ77S9ALv3+0A7FAp+moRlJ33Kv5433r0Mr01qXRK+xfWJp/1 test@git

    5.3 把开发端2上的公钥文件 test@git.pub,复制到开发端1上的 仓库管理项目gitosis-admin,对应的目录下的/repo/gitosis-admin/keydir

    $ ll /repo/gitosis-admin/keydir

    -rw-r--r-- 1 Administrator 197121 395 6月   8  2015 'vicowong@git.pub'

    -rw-r--r-- 1 Administrator 187242 395 6月   8  2015 'test@git.pub'

    5.4 修改开发机1的gitosis.conf

    新增加一个新的项目 test-git,vicowong用户允许写,test用户只读

    新增加一个新的项目 test2-git,rw_menbers组的用户允许写(rw_menbers,成员包括2个: vicowong@git user1@git),r_menbers组的用户只读

    $ cd /repo/gitosis-admin/

    $ vim gitosis.conf

    在文件顶部[gitosis]的下一行,增加两个分组(读写组rw_menbers成员2个,只读组r_menbers成员1个)

    每个成员都需要把各自开发机上生成的公钥,复制到管理仓库gitosis-admin/keydir目录上(user1@git 需在开发机3上生成)

    [group rw_menbers]
    members = vicowong@git user1@git

    [group r_menbers]
    members = test@git

    #在文件尾增加以下内容

    [group test-git]
    writable = test-git 
    members = vicowong@git

    [group test-git_r]
    readonly = test-git 
    members = test@git

    [group test2-git]
    writable = test2-git
    members = @rw_menbers

    [group test2-git_r]
    readonly = test2-git
    members = @r_menbers

    :wq 保存退出

    5.5 在开发端1上,把以上的设置提交到服务器上(提交成功,设置才会生效)

    $ git add .

    $ git commit -a -m "add test-git repo"

    $ git push

    5.6 .在开发端1,初始,增加及使用项目test-git  

    $ cd /d/repo

    $ mkdir test-git

    $ cd test-git

    $ git inti

    $ touch readme

    $ git add .

    $ git commit -a -m "init test-git"

    $ git remote add origin git@192.168.1.10:test-git.git

    $ git push origin master

    5.7 .在开发端2,初始,增加及使用项目test2-git

    参考5.6  

    5.8 在开发机2,克隆和使用 test-git

    $ cd /d/repo

    $ git clone git@192.168.1.10:test-git.git

    $ cd test-git

    $ git remote -v
    origin git@192.168.1.10:test-git.git (fetch)
    origin git@192.168.1.10:test-git.git (push)

    5.9 在开发机2,克隆和使用 test2-git 

    参考5.8

    5.10 其它开发2,克隆和使用Git项目 

    参考开发端2的设置

    *****************************************

    在服务器上,把Git 项目仓库目录 repositories,指到其它目录下。

    [root@tCentos ~]mkdir -p /data

    [root@tCentos ~]mv /home/git/repositories /data

    [root@tCentos ~]ln -s /data/repositories /home/git/repositories

    *****************************************

  • 相关阅读:
    委托学习笔记一(调用委托)
    委托和事件— 一个虚构的故事
    WPF中控制窗口状态
    oracle创建DBLINK
    添加路由 route add
    通过脚本执行sql语句
    c#对声音系统的控制
    ProcessBuilder调用外部脚本
    sql server 重新编译所有视图
    silverlight 隐藏ChildWindow 右上角的关闭按钮
  • 原文地址:https://www.cnblogs.com/vicowong/p/4142571.html
Copyright © 2011-2022 走看看