CentOS下搭建Git服务器Gitosis
时间:2014-04-27 16:57 来源:linux.it.net.cn 作者:IT网
1.编译安装git
Sql代码
1$ wget http://kernel.org/pub/software/scm/git/git-1.7.3.tar.gz #目前最新版本
2$ tar -xzvf git-1.7.3,tar.gz #解压出来
3$ cd git-1.7.3 #进入目录
4$ yum install -y gettext-devel expat-devel curl-devel zlib-devel openssl-devel #-y是默认自动安装,安装编译时用到的东东
5$ ./configure --with-curl=/usr/local #git安装路径
6$ make && make install #最小化安装的CentOS是没有make的,可以 yum install make 进行安装
7$ git --version #查看版本号,确实git是否安装成功
2.安装gitosis
Sql代码
1$ yum install python python-setuptools
2$ git clone git://eagain.net/gitosis.git
3$ cd gitosis
4$ python setup.py install
3.在开发机器上生成公共密钥(用来初始化gitosis)
Sql代码
1$ ssh-keygen -t rsa #不需要密码,一路回车就行(在本地操作)
2$ scp ~/.ssh/id_rsa.pub root@xxx:/tmp/ # 上传你的ssh public key到服务器
当git中遇到这样的问题时候
Agent admitted failure to sign using the key.
Permission denied (publickey).
运行:ssh-add就可以了
4.初始化gitosis
Sql代码
1$ adduser git # 新增一个git用户
2$ su - git # 切换倒git用户下
3$ gitosis-init < /tmp/id_rsa.pub # id_rsa.pub是刚刚传过来的
4$ rm /tmp/id_rsa.pub # id_rsa.pub已经无用,可删除.
5.获取并配置gitosis-admin
Sql代码
01$ git clone git@xxx:gitosis-admin.git # 在本地执行,获取gitosis管理项目
02$ vi gitosis-admin/gitosis.conf # 编辑gitosis-admin配置文件
03# 在gitosis.conf底部增加
04[group 组名]
05writable = 项目名
06members = 用户 # 这里的用户名字 要和 keydir下的文件名字相一致
07# VI下按ZZ(大写)两次会执行自动保存并退出,完成后执行
08$ git commit -a -m “xxx xx” # 要记住的是,每次添加新文件必须执行git add .,或者git add filename,如果没有新加文件,只是修改的话就可以执行此句。
09# 修改了文件以后一定要PUSH到服务器,否则不会生效。
10$ git push
在windows下 用git-bash生成密钥对 ssh-keygen -t rsa
1.在A机下生成公钥/私钥对。
[chenlb@A ~]$ ssh-keygen -t rsa -P ''
-P表示密码,-P '' 就表示空密码,也可以不用-P参数,这样就要三车回车,用-P就一次回车。
它在/home/chenlb下生成.ssh目录,.ssh下有id_rsa和id_rsa.pub。
2.把A机下的id_rsa.pub复制到B机下,在B机的.ssh/authorized_keys文件里,我用scp复制。
[chenlb@A ~]$ scp .ssh/id_rsa.pub chenlb@192.168.1.181:/home/chenlb/id_rsa.pub
chenlb@192.168.1.181's password:
id_rsa.pub 100% 223 0.2KB/s 00:00
由于还没有免密码登录的,所以要输入密码。
3.B机把从A机复制的id_rsa.pub添加到.ssh/authorzied_keys文件里。
[chenlb@B ~]$ cat id_rsa.pub >> .ssh/authorized_keys
[chenlb@B ~]$ chmod 600 .ssh/authorized_keys
authorized_keys的权限要是600
windows客户端要用tortorisePLink的方式 连接,并用配置repo的时候,要写全部路径,并且不要加上分支名git@88.88.88.88:repositories/hello.git
cd repositories
git init --bare project1.git
新建项目
到此步就算完成gitosis的初始化了。接下来的是新建一个新项目到服务器的操作,如第5步中配置gitosis.conf文件添加的是
Sql代码
01[group project1] # 组名称
02writable = project1 # 项目名称
03members = xxx # 用户名xxx为[group gitosis-admin]中的members一样
04# 记得执行
Sql代码
01$ git commit -a -m “添加新项目project1,新项目的目录是project1,该项目的成员是xxx“ # “”里的内容自定
02$ git push
07# 进入到项目目录
Sql代码
01$ cd /home/用户/project1 # project1要与gitosis.conf文件配置一致
02$ git init
03$ git add . # 新增文件 留意后面有一个点
04$ git commit -a -m “初始化项目project1″
12# 然后就到把这个项目放到服务器上去
Sql代码
01$ git remote add origin git@xxx:project1.git # xxx为服务器地址
02$ git push origin master
15# 也可以把上面的两步合成一步
Sql代码
01$ git push git@xxx:project1.git master
7.创建新的repositories
打开gitosis.conf文件,你将看到
[group gitosis-admin]
writable = gitosis-admin
members = elton@macbook
这个是管理组的权限,members中的用户名就是刚才上传的公钥里面的用户名。
在这个文件后面加入:
[group myteam]
members = elton@macbook
writable = free_monkey
这里你定义了一个叫myteam的组,授予elton@macbook这个用户写“free_monkey”这个repo的权限
git commit -a -m "Allow elton write access to free_monkey"
git push
上面的操作就更新了服务端的权限。
下面就开始创建free_monkey的repo
mkdir free_monkey
cd free_monkey
git init
创建 .gitignore 文件,用于忽略某些不需要进行代码管理的内容,如rails的应用可能如下:
.DS_Store
log/*.log
tmp/**/*
config/database.yml
db/*.sqlite3
提交代码:
git remote add origin git@YOUR_SERVER_HOSTNAME:free_monkey.git
git add .
git commit -a -m "initial import"
git push origin master:refs/heads/master
接下来,可以增加成员的公钥到系统中了
cd gitosis-admin
cp ~/alice.pub keydir/
cp ~/bob.pub keydir/
git add keydir/alice.pub keydir/bob.pub
修改gitosis.conf
[group myteam]
- members = jdoe
+ members = jdoe alice bob
writable = free_monkey
提交修改:
git commit -a -m "Granted Alice and Bob commit rights to FreeMonkey"
git push
其它成员就可以获取代码了
git clone git@YOUR_SERVER:free_monkey.git
(责任编辑:IT)
1.编译安装git
Sql代码
1$ wget http://kernel.org/pub/software/scm/git/git-1.7.3.tar.gz #目前最新版本
2$ tar -xzvf git-1.7.3,tar.gz #解压出来
3$ cd git-1.7.3 #进入目录
4$ yum install -y gettext-devel expat-devel curl-devel zlib-devel openssl-devel #-y是默认自动安装,安装编译时用到的东东
5$ ./configure --with-curl=/usr/local #git安装路径
6$ make && make install #最小化安装的CentOS是没有make的,可以 yum install make 进行安装
7$ git --version #查看版本号,确实git是否安装成功
2.安装gitosis
Sql代码
1$ yum install python python-setuptools
2$ git clone git://eagain.net/gitosis.git
3$ cd gitosis
4$ python setup.py install
3.在开发机器上生成公共密钥(用来初始化gitosis)
Sql代码
1$ ssh-keygen -t rsa #不需要密码,一路回车就行(在本地操作)
2$ scp ~/.ssh/id_rsa.pub root@xxx:/tmp/ # 上传你的ssh public key到服务器
当git中遇到这样的问题时候
Agent admitted failure to sign using the key. 运行:ssh-add就可以了
4.初始化gitosis
Sql代码
1$ adduser git # 新增一个git用户
2$ su - git # 切换倒git用户下
3$ gitosis-init < /tmp/id_rsa.pub # id_rsa.pub是刚刚传过来的
4$ rm /tmp/id_rsa.pub # id_rsa.pub已经无用,可删除.
5.获取并配置gitosis-admin
Sql代码
01$ git clone git@xxx:gitosis-admin.git # 在本地执行,获取gitosis管理项目
02$ vi gitosis-admin/gitosis.conf # 编辑gitosis-admin配置文件
03# 在gitosis.conf底部增加
04[group 组名]
05writable = 项目名
06members = 用户 # 这里的用户名字 要和 keydir下的文件名字相一致
07# VI下按ZZ(大写)两次会执行自动保存并退出,完成后执行
08$ git commit -a -m “xxx xx” # 要记住的是,每次添加新文件必须执行git add .,或者git add filename,如果没有新加文件,只是修改的话就可以执行此句。
09# 修改了文件以后一定要PUSH到服务器,否则不会生效。
10$ git push
在windows下 用git-bash生成密钥对 ssh-keygen -t rsa
1.在A机下生成公钥/私钥对。
[chenlb@A ~]$ ssh-keygen -t rsa -P ''
-P表示密码,-P '' 就表示空密码,也可以不用-P参数,这样就要三车回车,用-P就一次回车。 它在/home/chenlb下生成.ssh目录,.ssh下有id_rsa和id_rsa.pub。 2.把A机下的id_rsa.pub复制到B机下,在B机的.ssh/authorized_keys文件里,我用scp复制。
[chenlb@A ~]$ scp .ssh/id_rsa.pub chenlb@192.168.1.181:/home/chenlb/id_rsa.pub
chenlb@192.168.1.181's password: id_rsa.pub 100% 223 0.2KB/s 00:00 由于还没有免密码登录的,所以要输入密码。 3.B机把从A机复制的id_rsa.pub添加到.ssh/authorzied_keys文件里。
[chenlb@B ~]$ cat id_rsa.pub >> .ssh/authorized_keys
[chenlb@B ~]$ chmod 600 .ssh/authorized_keys authorized_keys的权限要是600 windows客户端要用tortorisePLink的方式 连接,并用配置repo的时候,要写全部路径,并且不要加上分支名git@88.88.88.88:repositories/hello.git
cd repositories
(责任编辑:IT)git init --bare project1.git
新建项目
到此步就算完成gitosis的初始化了。接下来的是新建一个新项目到服务器的操作,如第5步中配置gitosis.conf文件添加的是
Sql代码
01[group project1] # 组名称
02writable = project1 # 项目名称
03members = xxx # 用户名xxx为[group gitosis-admin]中的members一样
04# 记得执行
Sql代码
01$ git commit -a -m “添加新项目project1,新项目的目录是project1,该项目的成员是xxx“ # “”里的内容自定
02$ git push
07# 进入到项目目录
Sql代码
01$ cd /home/用户/project1 # project1要与gitosis.conf文件配置一致
02$ git init
03$ git add . # 新增文件 留意后面有一个点
04$ git commit -a -m “初始化项目project1″
12# 然后就到把这个项目放到服务器上去
Sql代码
01$ git remote add origin git@xxx:project1.git # xxx为服务器地址
02$ git push origin master
15# 也可以把上面的两步合成一步
Sql代码
01$ git push git@xxx:project1.git master
7.创建新的repositories 打开gitosis.conf文件,你将看到 [group gitosis-admin] writable = gitosis-admin members = elton@macbook 这个是管理组的权限,members中的用户名就是刚才上传的公钥里面的用户名。 在这个文件后面加入: [group myteam] members = elton@macbook writable = free_monkey 这里你定义了一个叫myteam的组,授予elton@macbook这个用户写“free_monkey”这个repo的权限 git commit -a -m "Allow elton write access to free_monkey" git push 上面的操作就更新了服务端的权限。 下面就开始创建free_monkey的repo mkdir free_monkey cd free_monkey git init 创建 .gitignore 文件,用于忽略某些不需要进行代码管理的内容,如rails的应用可能如下: .DS_Store log/*.log tmp/**/* config/database.yml db/*.sqlite3 提交代码: git remote add origin git@YOUR_SERVER_HOSTNAME:free_monkey.git git add . git commit -a -m "initial import" git push origin master:refs/heads/master 接下来,可以增加成员的公钥到系统中了 cd gitosis-admin cp ~/alice.pub keydir/ cp ~/bob.pub keydir/ git add keydir/alice.pub keydir/bob.pub 修改gitosis.conf [group myteam] - members = jdoe + members = jdoe alice bob writable = free_monkey 提交修改: git commit -a -m "Granted Alice and Bob commit rights to FreeMonkey" git push 其它成员就可以获取代码了 git clone git@YOUR_SERVER:free_monkey.git |