Chinaunix首页 | 论坛 | 博客
  • 博客访问: 274413
  • 博文数量: 74
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 668
  • 用 户 组: 普通用户
  • 注册时间: 2013-04-09 17:34
文章分类

全部博文(74)

文章存档

2017年(1)

2016年(13)

2015年(24)

2014年(9)

2013年(27)

我的朋友

分类: Java

2015-10-11 18:17:28

这里使用的操作系统是CentOS release 5.9 (Final),并且已经安装了git和一些必要的开发工具。
在服务器上创建用户和项目仓库(repository)
[plain] view plaincopy
useradd git #创建git用户  
passwd git #设置密码  
su git #切换到git用户  
cd ~/ #切换到home目录  
git init --bare cube #创建一个叫cube的项目仓库  
clone项目并提交修改(本地)
clone
[plain] view plaincopy
git clone git@IP地址:cube ~/cube  
需要说明的是这里会要求输入用户git的密码,我们稍后建立主机信任后就不需要输入密码了.
然后在cube下创建一个README.txt
[plain] view plaincopy
git add *  
git commit -m "create new file"  
git push origin master  


建立主机信任关系
在本地执行
[plain] view plaincopy
ssh-keygen -t rsa  
cat ~/.ssh/id_rsa.pub  
拷贝文件公钥内容


在服务器执行
[plain] view plaincopy
mkdir ~/.ssh  
chmod 755 ~/.ssh  
touch ~/.ssh/authorized_keys  
chmod 600 ~/.ssh/authorized_keys  
echo 拷贝的公钥 >> ~/.ssh/authorized_keys  


要注意文件权限的问题.


使用gitosis来配置和管理git服务端
当服务端项目和用户数量增多时, 管理将变得复杂起来,好在有gitosis.
初始化gitosis
在本地执行
[plain] view plaincopy
scp id_rsa.pub IP地址:/tmp/id_rsa.pub #上传管理员密钥到服务器  


在服务端执行
[plain] view plaincopy
gitosis-init < /tmp/id_rsa.pub #初始化gitosis  


在本地配置gitosis-admin
[plain] view plaincopy
git clone git@IP地址:gitosis-admin.git  


clone到本地后会有一个keydir文件夹和一个gitosis.conf文件,前者保存着git用户的公钥后者是配置文件,其配置文件通常的结构如下:
[gitosis]
gitweb = yes #开启gitweb支持


[repo foobar]
description = Git repository for foobar
owner = user


[group devs] #一个用户组
members = user1 user2


[group admins]
members = user1


[group gitosis-admin]
writable = gitosis-admin
members = @admins


[group foobar]
writable = foobar
members = @devs


[group myteam]
writable = free_monkey
members = jdoe


[group deployer]
writable = free_monkey
readonly = monkey_deployer

使用gitosis创建项目
在gitosis.conf中添加如下内容:
[plain] view plaincopy
[group cubelinux-dev]  
writable = projectname  
members = username #要与客户端使用的用户名一致  


提交项目到服务器


然后在本地创建项目目录
[plain] view plaincopy
git init projectname #要与上面的名字一样  
git add .   
git commit -a -m "init progect"  
提交到服务器
[plain] view plaincopy
git remote add origin git@IP地址:progectname.git   
git push origin master  


开启gitweb支持
gitweb是一个简单的可视化网页界面,可以使用任何兼容CGI的网页服务来运行,这里选用的Apache


下载编译安装
[plain] view plaincopy
git clone git://git.kernel.org/pub/scm/git/git.git  
cd git/  
make GITWEB_PROJECTROOT="/home/git/repositories"\  
    GITWEB_JS="gitweb/static/gitweb.js" \  
    GITWEB_CSS="gitweb/static/gitweb.css" \  
    GITWEB_LOGO="gitweb/static/git-logo.png" \  
    GITWEB_FAVICON="gitweb/static/git-favicon.png" \  
    bindir=/usr/local/bin \  
    gitweb  
make gitwebdir=/var/www/cgi-bin/gitweb install-gitweb  


需要注意的是GITWEB_PROJECTROOT应该修改成你的仓库的路径,并且其权限(包括子目录)应是755。
然后修改/etc/gitweb.conf,改成下面的样子
[plain] view plaincopy
$projectroot = "/home/git/repositories"; #仓库路径  
$GIT = "/usr/local/bin/git"; #git可执行文件路径  


修改apache配置文件
在/etc/httpd/conf/httpd.conf中加入以下内容:
[html] view plaincopy
 
    ServerName gitserver  
    DocumentRoot /var/www/cgi-bin/gitweb  
     
        Options ExecCGI +FollowSymLinks +SymLinksIfOwnerMatch  
        AllowOverride All  
        order allow,deny  
        Allow from all  
        AddHandler cgi-script cgi  
        DirectoryIndex gitweb.cgi  
   
 
 
宾果,这就弄好了!
阅读(381) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~