centos6.3搭建一个git服务器
十篇博文:
一、centos6.3搭建一个git服务器
二、通过gitolite架设git仓库
三、在linux(CentOS)上搭建git服务器和配置gitolite权限管理
四、git权限问题
五、在centos 下安装配置基于gitosis 的git 服务 或者 Linux系统CentOS下搭建Git服务器Gitosis
六、使用Gitolite搭建轻量级的Git服务器(gitolite 和Gitosis 区别,Gitosis已经停止维护)
七、简单方便Git的艰难第一步 (权限、新用户)
八、centos6.2服务器上用gitolite部署git服务器(转)
九、Gitolite 构建 Git 服务器
十、Git远程操作详解
十一、GitHub常用命令
(联合参考文章一、文章九、文章十。按照文章一可以不懂的前提下创建git服务器,并搭建个大概,这个时候看文章九、十,这两篇文章从框架的高度去介绍可以较好了解原理)
基本命令:(cd /home) 、 (rm 文件名)、 (rm -rf 文件夹)、(mv 原文件名 新文件名)、 (su 用户名)切换至某个用户名、 (su -)从某个用户切换出来、(ls)查看文件夹详细(mkdir)新建一个文件夹 、(vi 文件名)进入查看和编辑,在vi情境下:退出:输入ZZ,或者输入‘:q+回车' ;退出并保存:':wq+回车' ;编辑:’a‘
defaults write com.apple.finder AppleShowAllFiles -bool true (显示隐藏文件)
defaults write com.apple.finder AppleShowAllFiles -bool false (关闭‘显示隐藏文件)
第一篇 centos6.3搭建一个git服务器
os: centos63(Final)
git: 1.7.1
gitolite
步骤很简单,需要安装git, ssh支持,gitolite, 然后公钥 . 本文全部采用的yum包过来的.
1. 登录服务器(ssh [email protected]),安装,(# 是root 登录后的.)
#yum install perl openssh git
装不上,那就装下面的依赖
#yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel
2.建立一个用户
#adduser --system --shell /bin/sh --create-home --home-dir /home/git git (在home下会建个git文件夹,如果是第二次执行,最后一个git需要换个名字,后面的跟着换)(命令:添加用户组 groupadd git)centos系统添加/删除用户和用户组的例子
#cd /home/git
#mkdir repositories
#chown git:git -R ./repositories (每天一个linux命令(30): chown命令) chown [-r] [用户名称:组名称][文件或目录]
#chmod 700 ./repositories (每天一个linux命令(27):linux chmod命令) 1+2+4 :[执行]+[读]+[写] ugo:用户、群组、other
3.切换至刚建的git用户 ($ 表示用户) (git是用户名,可以是git1,git2....)
#su git (git是用户名,可以是git1,git2....前面建用户是什么名字,就用什么名字)
$git clone git://github.com/sitaramc/gitolite (这里直接复制粘贴,这个git 不是用户名)
$mkdir -p $HOME/bin
$gitolite/install -to $HOME/bin
这里可能会报错缺少模块,就需要 切换到root 安装缺失模块.比如perl-Time-HiRes 这个
$su -
输入服务器root密码
#yum install perl-Time-HiRes
#su git
$gitolite/install -to $HOME/bin
然后这里安装的就完了.
本机, 本机我这里是debian,
#ssh-keygen
#cd /root/.ssh
里面有id_ras.pub 和id_rsa ,一个是公钥,一个是私钥. 如果之前你装过openssl产生过密钥,那这里就不要覆盖了
复制到服务器的/tmp
#scp ~/.ssh/id_rsa.pub server_username@server_host:/tmp
(例子:scp /Users/ming/git_key.pub [email protected]:/tmp)
(例子:scp /Users/ming/.ssh/id_rsa.pub [email protected]:/tmp)
输入密码
回到服务器,
#cd /tmp
#mv id_rsa.pub admin.pub
为什么要改成admin.pub 因为gitolite根据这个文件名来设立帐号.我这里用admin
#su git 切换到git用户
$$HOME/bin/gitolite setup -pk admin.pub
(这里会有两个警告:
WARNING: /home/git/.ssh missing; creating a new one
(this is normal on a brand new install)
WARNING: /home/git/.ssh/authorized_keys missing; creating a new one
(this is normal on a brand new install)
)
然后去/home/git/repositories 里面,可以看见仓库文件.gitolite-admin.git 和test.git 一个是管理仓库的,一个是测试用
本机拉服务器代码
#git clone git@server_host:gitolite-admin
(例子git clone [email protected]:gitolite-admin)
进入仓库后可以看到conf 和keydir ,conf/gitolite.conf 是添加用户/仓库的配置, keydir 是放对应用户的公钥.
修改好后可以直接push了.
(如果无法拉取,试着修改权限后:chmod -R g+r gitolite-admin.git )
//这时你有可能无法push,原因各种各样。提示我的问题是“让我升级”
#yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel
#wget https://github.com/git/git/archive/v2.2.0.tar.gz
#tar zxvf v2.2.0 //解压
#cd git-2.2.0
#make prefix=/usr/local all
#make prefix=/usr/local install #root
这时如果一切顺利,从新链接服务器,查看版本,会得到如下结果
# git --version //输出下面的版本
git version 2.2.0
如果有编译错误点这个链接::CentOS服务器安装 Git 2.2.0
至此,你可以从服务器clone项目,也可以push你的项目到服务器
二.debian的
和上面一样,唯一需要注意的adduser 的参数不同
#adduser --system --shell /bin/sh --home /home/git git
三.搭好环境后,配置:权限、用户/组
1.进入服务器项目的地址,比如下面的例子,进入test 的conf文件夹内
[root@localhost ~]# cd /opt/svn/
[root@localhost svn]# ls
edu photoo showfunny showfunny1 test
[root@localhost svn]# cd test
[root@localhost test]# ls
conf db format hooks locks README.txt
[root@localhost test]# cd conf
[root@localhost conf]# ls
authz passwd svnserve.conf
2.修改 svnserve.conf,做的操作是去掉前面的(' # '),不要留空格。(进入方式,输入: vi svnserve.conf )。如下# anon-access = none
# auth-access = write
# password-db = passwd
# authz-db = authz
# realm = My First Repository
3.修改 passwd,为用户配置密码。(进入方式,输入:vipasswd )。如下
[users]
harry = harryssecret
sally = sallyssecret
ming = 7123
guo = 123
4.修改 authz,为用户配置权限,分组。如下
[groups]
# harry_and_sally = harry,sally
# harry_sally_and_joe = harry,sally,&joe
ios = ming,guo 定义一个分组,成员为ming,guo
# [/foo/bar]
# harry = rw
# &joe = r
# * =
[test:/] 在test目录下,这些用户的权限
ming = rw
guo = r
// svn://192.168.1.110/IOS/