实验环境:
主机名 IP(Static) 系统 配置 用途
GitServer 192.168.220.211 CentOS-6.3-x86_64-minimal 2CPU,1G RAM,20G DISK,1网卡 Git Server
GitNode01 192.168.220.212 CentOS-6.3-x86_64-minimal 2CPU,1G RAM,20G DISK,1网卡 Git Node
GitNode02 192.168.220.213 Windows 7 64bit 2CPU,1G RAM,20G DISK,1网卡 Git Node
*******************************************************************************************************************************************************
一、配置GitServer:
1.系统基础设置:
[root@GitServer ~]# vi /etc/selinux/config
SELINUX=disabled
[root@GitServer ~]# iptables –F
[root@GitServer ~]# service iptables stop
[root@GitServer ~]# chkconfig iptables off
[root@GitServer ~]# reboot
2.安装Git,设置用户:
[root@GitServer ~]# yum -y install git
[root@GitServer ~]# groupadd gitserver
[root@GitServer ~]# useradd --home /home/git git -g gitserver
[root@GitServer ~]# passwd git
更改用户 git 的密码 。
新的 密码:
无效的密码: 它基于字典单词
无效的密码: 过于简单
重新输入新的 密码:
passwd: 所有的身份验证令牌已经成功更新。
[root@GitServer ~]# git config --global user.name "git"
[root@GitServer ~]# git config --global user.email "git@email.com"
[root@GitServer ~]# su - git
[git@GitServer ~]$ chmod 755 /home/git
[git@GitServer ~]$ ssh-keygen -t rsa //任何提示可略过,一路回车即可;
[git@GitServer ~]$ cat ~/.ssh/id_rsa.pub > ~/.ssh/authorized_keys
[git@GitServer ~]$ echo "Host *" >> ~/.ssh/config
[git@GitServer ~]$ echo "StrictHostKeyChecking no" >> ~/.ssh/config
[git@GitServer ~]$ cd .ssh
[git@GitServer .ssh]$ ls
authorized_keys id_rsa id_rsa.pub //将私钥(id_rsa)分发给客户端用户,用于客户端与服务器的无密码交互访问;
[git@GitServer .ssh]$ exit
logout
3.安装Gitosis:
[root@GitServer ~]# yum -y install python-setuptools
[root@GitServer ~]# cd /tmp/
[root@GitServer tmp]# git clone git://github.com/res0nat0r/gitosis.git
[root@GitServer tmp]# cd gitosis/
[root@GitServer gitosis]# python setup.py install
[root@GitServer gitosis]# cd
4.初始化gitosis:
[root@GitServer ~]# su - git
[git@GitServer ~]$ gitosis-init < /home/git/.ssh/id_rsa.pub
Initialized empty Git repository in /home/git/repositories/gitosis-admin.git/
Reinitialized existing Git repository in /home/git/repositories/gitosis-admin.git/
[git@GitServer ~]$ ll -h
总用量 8.0K
drwxr-xr-x 2 git gitserver 4.0K 8月 20 17:59 gitosis
drwxr-xr-x 3 git gitserver 4.0K 8月 20 17:59 repositories
[git@GitServer ~]$ chmod u+x /home/git/repositories/gitosis-admin.git/hooks/post-update
5.创建新项目:
[git@GitServer ~]$ cd repositories/
[git@GitServer repositories]$ ls
gitosis-admin.git
[git@GitServer repositories]$ mkdir new-project.git
[git@GitServer repositories]$ cd new-project.git
[git@GitServer new-project.git]$ git init --bare
[git@GitServer new-project.git]$ chmod -R 777 objects refs
[git@GitServer new-project.git]$ cd ..
[git@GitServer repositories]$ cd gitosis-admin.git/
[git@GitServer gitosis-admin.git]$ chmod -R 777 objects refs
[git@GitServer gitosis-admin.git]$ vi gitosis.conf
[gitosis]
[group gitosis-admin]
writable = gitosis-admin
members = git@GitServer
[group new-project]
writable = new-project
members = git@GitServer GitNode01 GitNode02 //加入GitNode01 GitNode02用户对new-project项目的访问权限;
保存并退出;
[git@GitServer gitosis-admin.git]$ cd gitosis-export/
[git@GitServer gitosis-export]$ ls
keydir
[git@GitServer gitosis-export]$ cd keydir/
[git@GitServer keydir]$ ls //该目录下目前只有git@GitServer.pub,当客户端生成公钥后将公钥放置该目录;
git@GitServer.pub
[git@GitServer keydir]$ exit
6.安装配置gitweb:
[root@GitServer ~]# yum -y install gitweb httpd
[root@GitServer ~]# vi /etc/gitweb.conf
加入一行:
$projectroot = "/var/www/git";
[root@GitServer ~]# vi /etc/httpd/conf.d/git.conf
内容如下:
Alias /git /var/www/git
<Directory /var/www/git>
Allow from all
AllowOverride all
Order allow,deny
Options +ExecCGI
AddHandler cgi-script .cgi
DirectoryIndex gitweb.cgi
SetEnv GITWEB_CONFIG /etc/gitweb.conf
Dav On
RewriteEngine Off
</Directory>
[root@GitServer ~]# /etc/init.d/httpd restart
[root@GitServer ~]# ln -s /home/git/repositories/new-project.git /var/www/git/
通过浏览器:
http://192.168.100.211/git即可访问:
7.其他相关操作:
下面操作内容用于Git Windows客户端配置:
[root@GitServer ~]# mkdir .ssh
[root@GitServer ~]# cd .ssh
[root@GitServer .ssh]# ls
[root@GitServer .ssh]# cp /home/git/.ssh/id_rsa ./
[root@GitServer .ssh]# cp ~/.gitconfig ./
[root@GitServer .ssh]# ls -ah
. .. .gitconfig id_rsa
[root@GitServer .ssh]# cd
**********************************************************************************************
二、配置Linux Git客户端GitNode01:
1.系统基础设置:
[root@GitServer ~]# vi /etc/selinux/config
SELINUX=disabled
[root@GitNode01 ~]# iptables –F
[root@GitNode01 ~]# service iptables stop
[root@GitNode01 ~]# chkconfig iptables off
[root@GitNode01 ~]# reboot
2.安装Git,设置用户:
[root@GitNode01 ~]# yum -y install git
[root@GitNode01 ~]# groupadd gitserver
[root@GitNode01 ~]# useradd --home /home/gituser gituser -g gitserver
[root@GitNode01 ~]# passwd gituser
更改用户 gituser 的密码 。
新的 密码:
无效的密码: 它基于字典单词
无效的密码: 过于简单
重新输入新的 密码:
passwd: 所有的身份验证令牌已经成功更新。
3.下载项目,上传文件:
[root@GitNode01 ~]# su - gituser
[gituser@GitNode01 ~]$ ssh-keygen -t rsa //任何提示可略过,一路回车即可;
[gituser@GitNode01 ~]$ cd .ssh/
[gituser@GitNode01 .ssh]$ ls
id_rsa id_rsa.pub
[gituser@GitNode01 .ssh]$ rm -rf id_rsa
[gituser@GitNode01 .ssh]$ scp git@192.168.100.211:/home/git/.ssh/id_rsa ./ //拷贝GitServer的私钥到客户端本地,用户无密码验证;
[gituser@GitNode01 .ssh]$ mv id_rsa.pub GitNode01.pub
[gituser@GitNode01 .ssh]$ scp GitNode01.pub git@192.168.100.211:/home/git/repositories/gitosis-admin.git/gitosis-export/keydir/ //上传公钥到GitServer;
[gituser@GitNode01 .ssh]$ cd
[gituser@GitNode01 ~]$ mkdir myproject
[gituser@GitNode01 ~]$ cd myproject/
[gituser@GitNode01 myproject]$ git clone git@192.168.100.211:/home/git/repositories/new-project.git
Initialized empty Git repository in /home/gituser/myproject/new-project/.git/
warning: You appear to have cloned an empty repository.
[gituser@GitNode01 myproject]$ ls
new-project
[gituser@GitNode01 myproject]$ cd new-project/
[gituser@GitNode01 new-project]$ ls
[gituser@GitNode01 new-project]$ touch readme.txt
[gituser@GitNode01 new-project]$ echo "text-1234567890" > readme.txt
[gituser@GitNode01 new-project]$ more readme.txt
text-1234567890
[gituser@GitNode01 new-project]$ git add . //不要忘了最后面的".";
[gituser@GitNode01 new-project]$ git commit -a //该处会弹出编辑对话框,内容实际是文件的注释,在最下端输入想添加的注释即可;
[gituser@GitNode01 new-project]$ git push origin master
Counting objects: 3, done.
Writing objects: 100% (3/3), 227 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@192.168.100.211:/home/git/repositories/new-project.git
* [new branch] master -> master
在浏览器http://192.168.100.211/git/,在new-project项目的tree下可看到readme.txt文件,表明上传成功;
**********************************************************************************************
三、配置Windows Git客户端GitNode02:
1.下载Git Windows客户端,默认安装即可:
Git Windows客户端下载地址:
http://code.google.com/p/msysgit/downloads/list
2.客户端配置:
查看自己所使用的用户,比如我使用的Administrator,切换到该目录(C:Documents and SettingsAdministrator),将"配置GitServer"第七步中root下的".ssh"目录拷贝至该目录下,然后将.ssh下的.gitconfig文件剪切到上一级目录,即C:Documents and SettingsAdministrator下,修改.gitconfig内容,将"name = git"的git改成GitNode02,"email = git@email.com"的邮件地址部分改为GitNode02@email.com。
内容如下:
[user]
name = GitNode02
email = GitNode02@email.com
3.生成公钥
找一台Linux主机任意用户下执行ssh-keygen -t rsa,并把.ssh目录下的id_rsa.pub文件重命名为GitNode02.pub,将GitNode02.pub文件传送GitServer的/home/git/repositories/gitosis-admin.git/gitosis-export/keydir目录下
并且执行下列命令:
[root@GitServer keydir]# pwd
/home/git/repositories/gitosis-admin.git/gitosis-export/keydir
[root@GitServer keydir]# chown git:gitserver GitNode02.pub
[root@GitServer keydir]# chmod 644 GitNode02.pub
[root@GitServer keydir]# ll -h
总用量 12K
-rw-r--r-- 1 git gitserver 395 8月 20 17:59 git@GitServer.pub
-rw-r--r-- 1 git gitserver 399 8月 20 18:34 GitNode01.pub
-rw-r--r-- 1 git gitserver 396 8月 20 20:38 GitNode02.pub
[root@GitServer keydir]#
4.Windows测试:
(1).打开桌面上的”git bash“;
(2).从GitServer克隆项目:
(2).查看本地项目克隆结果:
(3).写一个名为”text-windows.txt“的文件:
(4).上传文件:
(5).打开浏览器输入:http://192.168.100.211/git/,在new-project项目的tree下可看到”text-windows.txt“文件,表明上传成功;
**********************************************************************************************