您的位置:首页 > 运维架构 > Linux

搭建git服务器[linux环境]

2016-04-06 19:42 633 查看
搭建git服务器的过程遇到了不少麻烦【如果当时对Linux系统有着比较熟悉的话,那会少走很多弯路】

* 网上资料不够详细

* 遇到的Error,不易查找

# 搭建git服务器的时候,你先得了解下Linux下有关权限方面的知识:【~$: su git --------------切换git用户】

Problem a:

# 开始使用的管理工具是gitosis【应该使用gitolite (gitosis在2009年就停止更新了)】,当时遇到的问题有:



git clone git@192.168.XXX:gitosis-admin.git(没有加上全路径)会有错误 (如上图)

当我加上仓库路径时 就能克隆下来了

git clone git@192.168.xxx:/home/git/reposres/gitosis-admin.git

@当时是重装了ubuntu才解决的!【如果是gitolite,那么在服务器的/home/git/.gitolite.rc下设置$REPO_BASE="repositories"(也是默认路径);可以解决这个问题】

Problem b:

git clone git@192.168.xxx:/home/git/reposres/gitosis-admin.git 时要输入密码才能克隆:【且在/home/git/.authorized_keys已经配置好了密钥】

如果你也遇到了这个问题那么请你先检查git、.ssh、authorized_keys文件所属者(root OR git?【$ ll】查看文件状态以及读写权限 【这几个文件所属者应是git用户】)

Problem C:







perl: warning: Falling back to the standard locale ("C").

这只是一个警告不影响操作:

@解决方法 在服务器端(vim /etc/default/locale)

添加 LC_ALL="C"

退出重新登陆;

Problem D:

在仓库转移的过程中,压缩包解压



如果出现这样的错误,那么你得在原服务器重新压缩打包仓库;

² 搭建git服务器详细步骤:
² 1、安装Git和openssh:(Server端)
² $ sudoapt-get install git-core openssh-server
² (如有更新失败可 $ sudo apt-getupdate【刷新文件索引】)

² 2、新建用户git,该用户作为所有代码仓库和用户权限的管理者:
² $ sudouseradd git
² $ sudo passwd git(设置git用户密码-----一直回车吧)

² 3、初始化服务器

² $ git config--global user.name “your name”

² $ git config --global user.email“123@XX.com”

² 3.1安装一下python的setuptool

² $ sudoapt-get install python-setuptools

² 3.2获取gitolite包。<两种方式>

² $ sudo aptitude installgitolite

² $ git clonehttps://github.com/sitaramc/gitolite.git

² 4、配置gitolite【Client端】

² 管理员设置【(在你拥有权限的目录下)生成密钥】

² $ ssh-keygen –t rsa 【一直回车就行】

² 然后将密钥拷贝至服务器

² $ scp ~/.ssh/id_rsa.pubgit@192.168.XXX.XXX:/tmp/00_rsa.pub

² 【以名00_rsa.pub挂载到Server端的tmp下[建议命名得规范,有利于维护]】【可在服务器端cat
/tmp/00_rsa.pub >>/home/git/.ssh/authorized_keys 或者在管理员用户下配置(即6.1)】

² 回到Git服务器上。

² $ sudo chmod a+r/tmp/00_rsa.pub

² 执行Gitolite安装。

² $ gl-setup/tmp/00_rsa.pub【设置管理员用户】

n Initialized empty Git repository in/home/git/gitolite-admin.git/

n Reinitialized existing Git repository in/home/git/gitolite-admin.git/

² Gitolite是通过一个git仓库来管理配置文件,仓库放在/home/git/repositories/gitolite-admin.git。

² 设置git仓库权限

² $ sudo chown git:git/home/git/repositories

² $ sudo chmod 755/home/git/repositories

² $ sudo chmod 755/home/git/repositories/gitolite-admin.git/hooks/post-update

² 5、 在服务器上新建测试项目仓库

² 在服务器上新建一个空的项目仓库可,叫“test”。【/home/git/repositories/ $ git init --baretest.git】

² 切换到git用户:

² $ su – git

² $ cd repositories

² $ git init --bare test.git

² $ exit

² test只是一个空仓库,它是不能clone下来的。为了能做clone,必须先让管理员或有权限的人放一个初始化的版本到仓库中。所以,我们必须先修改一个gitolite-admin。

²

² 6. 管理gitolite的配置文件

² Gitolite本身的配置也是通过git来实现的。在刚刚上传公钥的机器上,把gitolite-admin.git这个仓库clone下来,就可以以管理员的身份修改配置了。【注意刚才配置的密钥所属这才是管理员】

² 在客户端拥有权限的目录下新建一个文件夹:

² $ git clone git@192.168.XXX.XXX:gitolite-admin.git(或使用全路径)

² 注:访问git用户仓库的默认路径是/home/git/repositories/

² $ cd gitolite-admin

² 该目录下的keydir目录是用来存放所有需要访问git服务器的用户的ssh公钥。各个用户按照前面提到的办法生成各自的ssh公钥文件后,把所有人的ssh公钥文件按名字重新命名一下,然后拷贝到keydir目录下,然后修改gitolite.conf文件【/home/hzxiao/mtest/gitolite-admin/conf】,做相应的配置:($vim gitolite.conf你将会看到如下信息.....排版有点乱)

repo gitolite-admin 【和Server端的/home/git/repositories/gitolite-admin.git对应】

RW+ = hzxiao_41_rsa 【管理员】

repo testing 【testing.git】在server端/repositories目录下gitinit --brae
project (得将工程添加至gitolite.conf)

RW+ = @all 【(/home/hzxiao/mtest/gitolite-admin/keydir)中的用户密钥---------普通用户】

repo 123test

RW+ = @all

repo msm8916_4905_511

RW+ = @all

repo pxa988-jb4.2-t7-beta3-sp6

RW+ = @all

repo aurora

RW+ = @all

这个配置文件表达了如下含有:gitolite-admin组成员hzxiao_41_rsa,对gitolite-admin仓库有读写权限;test组@all及/keydir密钥的所属者,该组对test仓库有读写权限。目前这些配置文件的修改只是在本地,必须推送到远程的git服务器上才能真正生效。【或者直接在服务器上配置即步骤4】

加入新文件、提交并push到Git服务器:

$ git add .

$ git commit –m “add test and someusers”

$ git push origin master

7、克隆服务器工程:

$ git clonegit@192.168.XXX.XXX:项目名.git 【.git工程在服务器端的/repositories目录,想要克隆成功需要配置gitolite.conf,步骤6】

参考的博文有:
http://my.oschina.net/u/1240239/blog/495654?fromerr=m7pDiKwg
推荐git学习:
http://blog.csdn.net/hustpzb/article/details/7287948
附录:

使用chown命令更改文件拥有者

在 shell
中,可以使用chown命令来改变文件所有者。chown命令是change
owner(改变拥有者)的缩写。需要要注意的是,用户必须是已经存在系统中的,也就是只能改变为在/etc/passwd这个文件中有记录的用户名称才可以。

chown命令的用途很多,还可以顺便直接修改用户组的名称。此外,如果要连目录下的所有子目录或文件同时更改文件拥有者的话,直接加上 -R的参数即可。

chown [-R] 账号名称 文件或目录
chown [-R] 账号名称:用户组名称 文件或目录
参数
-R :进行递归( recursive )的持续更改,即连同子目录下的所有文件、目录
都更新成为这个用户组。常常用在更改某一目录的情况。

彻底删除用户:

useradd mm -----------------------------该命令会同时产生用户组和用户;

userdel mm ------------------------------删除用户;

groupdel mm ----------------------------删除用户组;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: