使用自建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 ### 也可以指定libicon -with-iconv=/usr/local/libiconv
[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@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 Files\Git\etc\profile文件
找到以下段落,然后增加一行内容 cd d:\repo
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:\repo
保存后,重新打开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 -t rsa -C "vicowong@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 查看已经生成的密钥对(私钥vicowong@git,公钥vicowong@git.pub)
$ ll ~/.ssh
-rw-r--r-- 1 Administrator 197121 1679 1月 12 09:52 'vicowong@git'
-rw-r--r-- 1 Administrator 197121 390 1月 12 09:52 'vicowong@git.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/vicowong@git.pub
4.8 .服务器上初始化gitosis
增加 git 用户
[root@tCentos ~]# adduser -m git
切换到 git 用户
[root@tCentos ~]# su - git
把服务器的公钥导入到gitosis。(完成后即可以使用开发端来管理git服务器)
[root@tCentos ~]# gitosis-init < /tmp/vicowong@git.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
*****************************************
使用自建Git服务器管理私有项目 Centos 7.3 + Git 2.11.0 + gitosis (实测 笔记)的更多相关文章
- CentOS7 编译安装 Git 服务器  Centos 7.0 + Git 2.2.0 + gitosis (实测 笔记)
		
环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G,双网卡) 系统版本:CentOS-7.0-1406-x86_64-DVD.iso 服务器IP:192.168.1.31 域 ...
 - 在centos搭建git服务器时,不小心把/home/git目录删除了,我是怎么恢复的
		
在centos搭建git服务器时,不小心把/home/git目录删除了,我是怎么恢复的 在删除掉/home/git目录后,每次 git push提交时,都让填写密码,烦 第一步:在本地找到id_rsa ...
 - 在git服务器上创建项目过程及遇到的问题
		
一: 登录git服务器,输入用户名,密码等 二: New Project 添加项目 设置组可见,项目名称等. 创建成功的项目可以看到该项目的clone地址,可以通过http,ssh两种方式来获取: 三 ...
 - 使用git@osc管理现有项目
		
首先安装git和powershell集成git工具 参考 http://www.cnblogs.com/kreo/p/4685988.html 打开windows powershell,进入项目目录, ...
 - git代码管理——克隆项目到本地仓库及上传本地项目到仓库
		
一.克隆项目到本地仓库 1.github网站操作 1.1 登录github 首先创建一个仓库,点击“New” 1.2 输入仓库信息 1.3 创建完成后,会多出一个仓库 2.安装git客户端 2.1 安 ...
 - CentOS SVN服务器管理多项目
		
一 需求 一般来说,公司有多个项目,在搭建好SVN服务器之后,就需要使用SVN来实现不在一个项目中的开发人员不能访问其它项目中的代码. 假设: 有3个项目:project1.project2.proj ...
 - CentOS6.8 SVN服务器管理多项目
		
一 需求 一般来说,公司有多个项目,在搭建好SVN服务器之后,就需要使用SVN来实现不在一个项目中的开发人员不能访问其它项目中的代码. 假设: 有3个项目:project1.project2.proj ...
 - Linux系统搭建并管理Git服务器
		
搭建Git服务器 GitHub就是一个免费托管开源代码的远程仓库.但是对于某些视源代码如生命的商业公司来说,既不想公开源代码,又舍不得给GitHub交保护费,那就只能自己搭建一台Git服务器作为私有仓 ...
 - Git学习笔记(10)——搭建Git服务器
		
本文主要记录了Git服务器的搭建,以及一些其他的配置,和最后的小总结. Git远程仓库服务器 其实远程仓库和本地仓库没啥不同,远程仓库只是每天24小时开机为大家服务,所以叫做服务器.我们完全可以把自己 ...
 
随机推荐
- redis批量灌库
			
需求:将批量数据灌入redis中 如果通过代码形式将数据灌入redis中,效率比较低,以下将根据redis的特性进行快速的批量灌库 环境:centos7 将数据整理成规定格式的文件,比如: SET k ...
 - Go命令官方指南【原译】
			
启动错误报告 编译包和依赖项 删除目标文件和缓存的文件 显示包或符号的文档 打印Go环境信息 更新包以使用新API Gofmt(重新格式化)包源 通过处理源生成Go文件 下载并安装包和依赖项 编译并安 ...
 - maven与eclipse连接的配置
			
1.修改本地仓库位置 maven从中心仓库下载的文件一般默认放在本地用户文件加下的.m2/repository文件夹中,修改则需要找到所下载的maven文件夹下的conf文件夹下的setting.xm ...
 - 利用python进行数据加载和存储
			
1.文本文件 (1)pd.read_csv加载分隔符为逗号的数据:pd.read_table从文件.URL.文件型对象中加载带分隔符的数据.默认为制表符.(加载为DataFrame结构) 参数name ...
 - 末学者笔记--apache编译安装及LAMP架构上线
			
apache介绍 一.Apache的三种工作模式 Apache一共有3种稳定的MPM模式(多进程处理模块),它们分别是prefork.worker.event.http-2.2版本的httpd默认的m ...
 - 网络安装Centos x64 6.10
			
1.下载老毛桃PE最新增强版本,然后生成一个可启动U盘. 2.在U盘或移动硬盘中创建一个目录 MYEXT,然后把centos的安装iso放到里面. 3.引导选择从外置ISO进行安装. https:// ...
 - Spark SQL UDAF示例
			
UDAF:用户自定义聚合函数 Scala 2.10.7,spark 2.0.0 package UDF_UDAF import java.util import org.apache.spark.Sp ...
 - 【JAVA】文件各行打乱
			
给定一个文件,把文件 里的各行打乱,并验证其正确性,时间紧迫,随手写写 String path = "/Users/guangyi.zgy/Desktop/scene_2khas_8kno_ ...
 - Windows激活最高权限
			
两种方法激活最高权限 方法1 用鼠标右键点击要操作的文件或文件夹,依次进入"属性→安全→高级→所有者→编辑",在"将所有者更改为"栏中选择登录系统的管理员用户, ...
 - pip命令
			
安装包 pip install django #最新版本 pip install django==1.11.7 #指定版本 pip install django>=1.11.7 #最小版本 ...