全部博文(39)
分类: LINUX
2013-03-04 21:14:41
真心累,不过总算能用了
一开始按照《git权威指南》折腾,但是在最后一步不小心把版本库配置到root用户身上了,悲剧,只好重来。
*对了,提醒下,《git权威指南》里的安装方法要小心。客户端方式安装已经过时了,不好用了,所以要么直接安装 apt-get 软件源里的,要么源代码安装,至于该书作者自己的那个版本,不推荐初学者折腾,专家级的可以自己把握。
这里就讲下最简单的方式。apt-get
服务器和客户端都是ubuntu12.04
1.首先直接登录root帐号,apt-get install git-core (在服务器上执行)
2.然后,apt-get install gitolite (在服务器上执行)
3.然后,创建ssh无口令登录的公钥 ssh-keygen -f ~/.ssh/admin (本地,创建这个的时候会要你输入一个类似密码的东西,不用太复杂,但请记牢了)
4.然后,复制到服务器上,scp ~/.ssh/admin.pub server:/tmp/admin.pub (server 就是服务器地址)
5.然后,再到服务器上,创建git用户 adduser --system --shell /bin/bash --group git (在服务器上执行)
6.切换到git用户 su git
7.执行gl-setup /tmp/admin.pub (没错就是刚才scp过来的公钥)
到这步,gitolite已经安装并配置完毕了
然后,在本地 获取 管理用的版本库 gitolite-admin (克隆版本库就不多说了,会用git的我想不必多讲吧)
在gitolite-admin 的conf文件夹下gitolite.conf 文件定义了版本库以及用户组和权限,在keydir目录下放置的是用户的公钥,所做的更改直接提交并推送到服务器上,就可以实现对git服务器的管理。
然后,遇到一个问题,我是管理员,但是我平时开发提交代码的时候,不想用管理员帐号,那怎么办?
首先想到的就是添加git用户:ssh-keygen -f ~/.ssh/personball 生成的personball.pub直接丢到gitolite-admin/keydir 目录下 ,然后到conf目录下编辑gitolite.conf 文件,添加版本库定义
repo newone
RW+ = personball
git add .
git push
这就添加了用户和版本库以及做好权限定义了
**注:如果客户端是windows,使用Puttygen生成公钥和私钥:参数为SSH-2 RSA,1024位,按需加上密码。
然后到其他地方新建目录newone
git init
这就行了,然后添加一个文件,提交试试。
touch readme
git add readme
git commit -m ‘the first commit’
git push master master
出问题了,提示说,git服务器拒绝了admin帐号对这个版本库的写操作!
其实原因很简单,无口令ssh登录,默认使用了之前那个用于管理git的admin身份。那怎么办呢?
于是我翻了翻《git权威指南》,看了下ssh主机别名这节,找到了解决方法。
首先去~/.ssh/下找config文件,没有的话,就自己新建一个
添加以下内容
host newone (这是别名)
user git (注意这里要写服务器上的用户,访问的当然是git用户)
hostname 1.1.1.1 (这是服务器地址,可以用域名)
port 22
identityfile ~/.ssh/personball (这才是我们需要使用的ssh身份)
然后呢,然后就需要改一下 版本库中的设置了
到newone版本库中, 进入.git目录,找到config文件
修改其中的server部分(服务器地址部分,可能是IP 也可能是域名)为我们刚在.ssh中config文件中定义的别名 newone
如: url = git@newone:newone.git
当然别名不一定要和版本库名相同。
再试一下 git push master master 就ok了。
最后,感谢一下前辈们的经验
参考:《git权威指南》
参考: