搭建git服务器——小组级别

一、服务端安装(用户较少,小组级别)
1、建立git用户
最好建立一个git组,让后再添加一个git用户,并且添加到该组当中。这里我们只添加用户。
#sudo adduser git
#su git
$cd ~
$mkdir .ssh
此时在git用户的根目录下新建一个.ssh的目录,用以将开发者(客户)的SSH公钥添加到该目录下authorized_keys这个文件当中(没有就手动创建即可)。
例如有zhangsan这个开发者:
$cat /tmp/id_rsa_zhangsan.pub >> ~/.ssh/authorized_keys
至于该密钥是来自Linux还Win,下文再详细叙述。


2、安装git程序
下载安装包,如git-1.9.0.tar.gz tar
$ tar zxvf git-1.9.0.tar.gz  
$ cd git-1.9.0
$ make prefix=/usr/local/git all
$ make prefix=/usr/local/git install   #root用户运行


3、建库
建立一个空的仓库
$cd work
$mkdir project.git
$cd project.git
$git --bare init
初始化一个不带任何工作目录的仓库,不会看到工程源码。建议默认使用参数--bare,以防止上传/下载时候出问题。


另外为了不使开发者每次clone代码的时候都输入ip地址,可以采用DNS的方式。具体操作如下
sudo vim /etc/hosts
在里面加入下面一行,将IP与用户名进行绑定。
192.168.1.100 gitserver



二、客户端安装
每个需要使用git服务器的工程师,自己需要生成一个ssh公钥
1、Linux端
1.1 参照上文的1.2安装git程序。
1.2 进入自己的~/.ssh目录,看有没有用 文件名 和 文件名.pub 来命名的一对文件,这个 文件名 通常是 id_dsa 或者 id_rsa.pub 文件是公钥,另一个文件是密钥。假如没有这些文件(或者干脆连 .ssh 目录都没有),你可以用 ssh-keygen 命令来建立它们,如:

$ ssh-keygen 
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/schacon/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /Users/schacon/.ssh/id_rsa.
Your public key has been saved in /Users/schacon/.ssh/id_rsa.pub.
The key fingerprint is:
······

 
它先要求你确认保存公钥的位置(.ssh/id_rsa),然后它会让你重复一个密码两次,如果不想在使用公钥的时候输入密码,可以留空。此处衔接文章开头1.1的添加用户功能。


2、Windows端
2.1 下载安装git安装包;
2.2 在安装目录下,找到并运行“Git Bash.vbs”文件;
程序会出一个类似Linux命令行模式的窗口,输入 ssh-keygen -t rsa -C "[email protected]",其中[email protected]就是你的github账号,在本地局域网里指的是你的本机IP。如:

Admin@KARLOO-PC /
$ ssh-keygen -t rsa -C "192.168.10.4"
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/Administrator/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /c/Users/Administrator/.ssh/id_rsa.
Your public key has been saved in /c/Users/Administrator/.ssh/id_rsa.pub.
The key fingerprint is:
······


这里我们采用的的默认生成即可(路径默认,密码空),可以看到密钥的保存路径是/c/Users/Administrator/.ssh/,该文件夹下有生成的私密密钥id_rsa,和公开密钥id_rsa.pub。此处衔接文章开头1.1的添加用户功能。


测试:
1、 在甲工程师的电脑上,将甲本地工程,并上传到服务器里project库中。
$git config --global user.name "someone" ——这里的name/email可以在服务器上查看上传的公钥获得。
$git config --global user.email "[email protected]"
$ cd myproject ——进入工程文件夹
$ git init ——初始化
$ git add . 
$ git commit -m 'initial commit'
$ git remote add origin git@gitserver_ip:/opt/git/project.git
$ git push origin master


2、在乙电脑上,直接下载project整个库,并做修改。
$ git clone git@gitserver_ip:/opt/git/project.git ——克隆下载工程库
$ git commit -am 'fix for the README file' ——提交修改后的工程
$ git push origin master


至此一个小型的局域网内部git服务器搭建完成。用这个方法可以很快捷的为少数几个开发者架设一个可读写的 Git 服务。


为了更好的管理使用你的git服务器,你需要继续的打怪升级,刷装备:
1、深入学习git的管理命令,如:版本回退撤销、远程仓库的添加使用、分支的管理与问题解决、标签管理等等,这也是本文的一个不足之处,对不分支的管理没有细说。


2、你可以用 Git 自带的 git-shell 简单工具来把 git 用户的活动限制在仅与 Git 相关。把它设为 git 用户登入的 shell,那么该用户就不能拥有主机正常的 shell 访问权。如:
sudo vim /etc/passwd
在文件结尾找到这样的类
git:x:1001:1001:,,,:/home/git:/bin/bash
将其中的/bin/bash/改为/user/bin/git-shell
现在开发者只能通过SSH来推送和获取代码,不能登陆ssh服务端了。


3、如果你需要搭建一个几百人共同使用的git服务器,那么你就需要使用gitosis-master来进行用户管理。详细说明暂时不表,待后面专门写一篇。

猜你喜欢

转载自blog.csdn.net/karloo/article/details/52886990