搭建git服务器[linux环境]

搭建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【设置管理员用户】

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

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 ----------------------------删除用户组;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值