私有git搭建

建站服务器

在服务器上创建用户和项目仓库(repository)

useraddgit#创建git用户

城区网站建设公司创新互联,城区网站设计制作,有大型网站制作公司丰富经验。已为城区数千家提供企业网站建设服务。企业网站搭建\外贸网站建设要多少钱,请找那个售后服务好的城区做网站的公司定做!

passwdgit#设置密码

sugit#切换到git用户

cd~/#切换到home目录

gitinit--barecube#创建一个叫cube的项目仓库

clone项目并提交修改(本地)

gitclonegit@IP地址:cube~/cube

需要说明的是这里会要求输入用户git的密码,我们稍后建立主机信任后就不需要输入密码了.
然后在cube下创建一个README.txt

gitadd*

gitcommit-mcreatenewfile

gitpushoriginmaster

建立主机信任关系

在本地执行

ssh-keygen-trsa

cat~/.ssh/id_rsa.pub

拷贝文件公钥内容

在服务器执行

mkdir~/.ssh

chmod755~/.ssh

touch~/.ssh/authorized_keys

chmod600~/.ssh/authorized_keys

echo拷贝的公钥>>~/.ssh/authorized_keys

要注意文件权限的问题.

使用gitosis来配置和管理git服务端

Gitosis是为托管的Git存储库提供访问控制和远程管理的工具。它允许通过SSH对读写访问进行细粒度管理,而不需要用户在服务器上具有本地系统帐户。为此,它设置一个单一的系统帐户“git”,然后用于所有Git访问。

AUR包。这将创造三件事:

git用户

git该用户所属的组

/srv/gitosis目录将保存Gitosis的数据和存储库

gitosis-admin可以像任何其他存储库一样克隆,提交和推送。

ssh-keygen例如:

$ssh-keygen-trsa

$sudo-H-ugitgitosis-init

注意:在某些情况下,这可能会导致此类错误:

OSError:[Errno13]Permissiondenied:\'//gitosis\'

#usermod-d/srv/gitosisgit

/srv/gitosis/repositories将存储实际托管存储库的目录。

匹配用户git
密码验证号

/etc/ssh/sshd_config

组态

gitosis-admin存储库来配置Gitosis。要克隆此存储库(使用Gitosis!),请运行:

$gitclonegit@your.git.server:gitosis-admin.git

gitosis-admin存储库中,您将看到两件事:

gitosis.conf- Gitosis和存储库权限的配置文件

keydir- 包含每个用户公用密钥的目录

存储库和权限

/ usr / share / doc / gitosis中找到一些示例配置文件。

[Gitosis的]
gitweb=yes

[repofoobar]
description=foobar的Git仓库
owner=user

[组开发者]
members=user1user2

[组管理员]
members=user1

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

[组foobar]
可写=foobar
members=@devs

[组myteam]
writable=free_monkey
会员=jdoe

[组部署者]
writable=free_monkey
readonly=monkey_deployer

$gitcommit-a-m“允许jdoe写入访问free_monkey”
$gitpush

$mkdirfree_monkey
$cdfree_monkey
$gitinit
$gitremoteaddorigingit@YOUR_SERVER_HOSTNAME:free_monkey.git

$gitpushoriginmaster:refs/heads/master

$gitinit--bare/srv/gitosis/repositories/free_monkey.git

添加用户

$cdgitosis-admin
$cp/alice.pubkeydir/
$cp/bob.pubkeydir/
$gitaddkeydir/alice.pubkeydir/bob.pub

[组myteam]
member=jdoealicebob
writable=free_monkey

$gitcommit-a-m“授予Alice和Bob授予FreeMonkey的权限”
$gitpush

$gitclonegit@YOUR_SERVER_HOSTNAME:free_monkey.git

公共访问

$sudo-ugitgit-daemon--base-path=/srv/gitosis/repositories/--export-all

$gitclonegit://YOUR_SERVER_HOSTNAME/free_monkey.git

更多的技巧

#chmod755/srv/gitosis/repositories/gitosis-admin.git/hooks/post-update

$PATH=“/home/$(whoami)/sys/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11:在/usr/游戏”
$PYTHONPATH=/home/$(whoami)/sys/lib/python2.4/site-packages

$sudo-H-ugitenvPATH=$PATHgitosis-init

非标准SSH端口

gitclonessh://git@myserver.com:1234/repo.git

$Hostmyserver.com
$Port1234

[repo]块用于定义与gitweb一起使用的一些必要区域。

[组]块用于两者:

定义用户组

定义存储库权限

@用于定义用户组。

keydir

gitweb

开启gitweb支持

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

gitclonegit://git.kernel.org/pub/scm/git/git.git

cdgit/

makeGITWEB_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

makegitwebdir=/var/www/cgi-bin/gitwebinstall-gitweb

需要注意的是GITWEB_PROJECTROOT应该修改成你的仓库的路径,并且其权限(包括子目录)应是705。

然后修改/etc/gitweb.conf,改成下面的样子

[plain]view plaincopy

$projectroot=/home/git/repositories;#仓库路径

$GIT=/usr/local/bin/git;#git可执行文件路径

修改apache配置文件

在/etc/httpd/conf/httpd.conf中加入以下内容:

ServerNamegitserver

DocumentRoot/var/www/cgi-bin/gitweb

OptionsExecCGI+FollowSymLinks+SymLinksIfOwnerMatch

AllowOverrideAll

orderallow,deny

Allowfromall

AddHandlercgi-scriptcgi

DirectoryIndexgitweb.cgi

这就弄好了!

可能遇到的问题用户认证不通过的问题:

git clone git@IP:gitosis-admin.git
Initialized empty Git repository in /home/yang/gitosis-admin/.git/
Agent admitted failure to sign using the key.
Permission denied (publickey).
fatal: The remote end hung up unexpectedly

// 解决方法,在管理员PC上
# ssh-add ~/.ssh/id_rsa

gitweb找不到工程的问题

如果遇到gieweb的页面显示找不到工程,多半是权限设置错误。

简单的说就是Apache用户组不具备访问你仓库目录的权限,例如我的仓库是放在/home/git/repositories下的,所以应将/home/git和/home/git/repositories以及你仓库中的所有项目的权限都设置成705,之前在网上发现有人说设置成775的,如果你设置成775的话虽然也能用,但会导致无法使用命令访问代码仓库,原因我还不清楚。

svn 迁移到git

http://blog.csdn.net/huaishu/article/details/41083951


网站栏目:私有git搭建
本文来源:http://myzitong.com/article/cpsspo.html