码迷,mamicode.com
首页 > 其他好文 > 详细

Git专题--Git服务器端配置文档

时间:2016-04-12 17:39:00      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:

Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。

分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库。


技术分享

从一般开发者的角度

1、从服务器上克隆完整的Git仓库(包括代码和版本信息)到单机上。

2、在自己的机器上根据不同的开发目的,创建分支,修改代码。

3、在单机上自己创建的分支上提交代码。

4、在单机上合并分支。

5、把服务器上最新版的代码fetch下来,然后跟自己的主分支合并。

6、生成补丁(patch),把补丁发送给主开发者。

7、看主开发者的反馈,如果主开发者发现两个一般开发者之间有冲突(他们之间可以合作解决的冲突),就会要求他们先解决冲突,然后再由其中一个人提交。如果主开发者可以自己解决,或者没有冲突,就通过。

8、一般开发者之间解决冲突的方法,开发者之间可以使用pull 命令解决冲突,解决完冲突之后再向主开发者提交补丁。

从主开发者的角度(假设主开发者不用开发代码)看,git有以下功能:

1、查看邮件或者通过其它方式查看一般开发者的提交状态。

2、打上补丁,解决冲突(可以自己解决,也可以要求开发者之间解决以后再重新提交,如果是开源项目,还要决定哪些补丁有用,哪些不用)。

3、向公共服务器提交结果,然后通知所有开发人员。


操作文档


测试操作环境:

服务器端:  Ubuntu 14.04 LTS 虚拟机

开发端: windows 7 , Mac OS X Yosemite

软件: git , SourceTree

操作步骤:

搭建git服务器

一.配置SSH无密码登陆

1、安装OpenSSH

(1)通过命令安装SSH服务。(ssh服务:数据加密协议)

sudo apt-get install openssh-server

(2)检测ssh服务是否启动

netstat -an |more

查询是否存在Local Address:0.0.0.0:22端口 存在即启动


2、创建一个git用户,用来运行git服务

sudo adduser git

填写密码和账户信息

3、配置无密码SSH证书登录

在服务器端home/git文件中创建.ssh文件(.ssh为隐藏文件)

mkdir .ssh

然后再.ssh文件中创建authorized_keys文件

touch authorized_keys

技术分享

收集所有需要登录的开发者的公钥id_rsa.pub文件,把所有公钥导入到/home/git/.ssh/authorized_keys文件里

测试操作(Mac OS):

(1)在开发机上使用命令生成密钥

 ssh-keygen -t rsa


技术分享


成功后会在用户目录生成.ssh文件(.ssh为隐藏文件)

.ssh文件中可以看到id_rsa和id_rsa.pub两个文件.

id_rsa.pub为公钥文件

(2)通过scp发送到服务器或者邮箱直接发给管理员

scp /Users/Jack/.ssh/id_rsa.pub git@192.168.10.86:/home/git/.ssh

技术分享


(3)服务器端将开发机拷贝过来的公钥id_rsa.pub的内容追加到authroized_keys中并删除id_rsa.pub文件

cat /home/git/.ssh/id_rsa.pub >>/home/git/.ssh/authorized_keys 

rm -rf id_rsa.pub

技术分享

二.禁用shell登录

使用ssh的方式来访问,意味者,访问者具有权限可以ssh登陆到服务器上

出于安全考虑,第一步创建的git用户不允许登录shell


编辑/etc/passwd文件完成git用户不允许登录shell

技术分享


找到

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

改为

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


(文件只读需修改权限:http://jingyan.baidu.com/article/454316ab753a1cf7a6c03a75.html)


三.搭建git服务器


1.在服务器端安装git

首先需要修改git权限在system Setting—User Accounts—选择git用户 点击右上见Unlock  在Account Type中修改为Administrator

技术分享

2.重启Terminal 进入git用户 安装git

先升级:sudo apt-get update

sudo apt-get install git-core

技术分享


git --version确定成功


四.创建开发仓库

1.建立git仓库的存储目录

mkdir repository

2.始化服务器端仓库

git --bare init /home/git/repository/myRepository.git

技术分享

五:克隆远程仓库

开发机器需要安装git

然后通过git clone命令克隆远程仓库

git@192.168.10.86:/home/git/repository/myRepository.git


测试操作环境:

服务器端:  CentOS 6.7 虚拟机

开发端: windows 7 , Mac OS X Yosemite

软件: git , SourceTree


一.git安装

1.依赖环境和库

yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel gcc gcc-c++ -y

git包

wget https://www.kernel.org/pub/software/scm/git/git-2.0.0.tar.gz

解压安装(需要在root下进行)

tar zxvf git-2.0.0.tar.gz

cd git-2.0.0

make prefix=/usr/local all

make prefix=/usr/local install  

查看版本号:git --version 看是否安装成功


二.安装gitosis

gitosis为Git用户权限管理系统,通过管理服务端的/home/git/.ssh/authorized_key文件来执行对用户权限的管理,是一个python模块包

技术分享

yum install python python-setuptools

git clone git://github.com/res0nat0r/gitosis.git

cd gitosis/

python setup.py install

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

技术分享



三.安装ssh

1.安装ssh

yum install openssh-server

检测ssh服务是否启动

netstat -an |more

查询是否存在Local Address:0.0.0.0:22端口 

chkconfig --list sshd 检查SSHD是否在本运行级别下设置为开机启动
chkconfig --level 2345 sshd on  如果没设置启动就设置下.
service sshd restart  重新启动
netstat -antp |grep sshd  看是否启动了22端口.确认下.
iptables -nL  看看是否放行了22口.
setup---->防火墙设置   如果没放行就设置放行.



2.创建一个git用户,用来运行git服务

useradd git  设置用户

passwd git  设置密码

提示输入新密码,输入密码

技术分享




3、配置无密码SSH证书登录

在服务器端home/git文件中创建.ssh文件(.ssh为隐藏文件)

mkdir .ssh

然后再.ssh文件中创建authorized_keys文件

touch authorized_keys

技术分享

收集所有需要登录的开发者的公钥id_rsa.pub文件,把所有公钥导入到/home/git/.ssh/authorized_keys文件里

(用户可以通过scp scp /Users/Jack/.ssh/id_rsa.pub git@192.168.10.86:/home/git/.ssh)

服务器端将开发机拷贝过来的公钥id_rsa.pub的内容追加到authroized_keys中并删除id_rsa.pub文件

cat /home/git/.ssh/id_rsa.pub >>/home/git/.ssh/authorized_keys 

rm -rf id_rsa.pub

技术分享


ps:报错

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

解决方法:

rm -rf ~/.ssh/known_hosts



四.创建开发仓库

1建立git仓库的存储目录

mkdir repository

2始化服务器端仓库

git --bare init /home/git/repository/myRepository.git

技术分享


四:克隆远程仓库

开发机器需要安装git

然后通过git clone命令克隆远程仓库

git@192.168.10.163:/home/git/repository/myRepository.git



附加1:给用户git设置 root权限

1)进入超级用户模式。也就是输入"su root",系统会让你输入超级用户密码,输入密码后就进入了超级用户模式。(当然,你也可以直接用root用) 

2)添加文件的写权限。也就是输入命令"chmod u+w /etc/sudoers"。 

技术分享

3)编辑/etc/sudoers文件:输入命令"vim /etc/sudoers",点击,找到这一 行:"root ALL=(ALL) ALL"在起下面添加"git ALL=(ALL) ALL"(这里的git是你的用户名),然后保存(就是先按一 下Esc键,然后输入":wq")退出。 

不行就强写:wq!

技术分享

4)撤销文件的写权限。也就是输入命令"chmod u-w /etc/sudoers"

重启终端

ps:这里说下你可以sudoers添加下面四行中任意一条
youuser            ALL=(ALL)                ALL
%youuser           ALL=(ALL)                ALL
youuser            ALL=(ALL)                NOPASSWD: ALL
%youuser           ALL=(ALL)                NOPASSWD: ALL

第一行:允许用户youuser执行sudo命令(需要输入密码).
第二行:允许用户组youuser里面的用户执行sudo命令(需要输入密码).
第三行:允许用户youuser执行sudo命令,并且在执行的时候不输入密码.
第四行:允许用户组youuser里面的用户执行sudo命令,并且在执行的时候不输入密码.


附加2:禁用shell登录

使用ssh的方式来访问,意味者,访问者具有权限可以ssh登陆到服务器上

出于安全考虑,第一步创建的git用户不允许登录shell

编辑/etc/passwd文件完成git用户不允许登录shell

1)进入超级用户模式。也就是输入"su root",输入密码

2)添加文件的写权限。也就是输入命令"chmod u+w /etc/passwd"。 

3)编辑/etc/sudoers文件:输入命令"vim /etc/passwd",回车

找到

git:x:501:501::/home/git:/bin//bash

改为

git:x:501:501::/home/git:/usr/bin/git-shell

保存(就是先按一 下Esc键,然后输入":wq")退出。 

不行就强写:wq!

技术分享


4)撤销文件的写权限。也就是输入命令"chmod u-w /etc/passwd"


转载请注明:Jack Jia 博客地址http://blog.csdn.net/jackjia2015

Git专题--Git服务器端配置文档

标签:

原文地址:http://blog.csdn.net/jackjia2015/article/details/51134504

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!