建站服务器
在服务器上创建用户和项目仓库(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.gitgitosis-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
gitweb找不到工程的问题
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如果遇到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://bjjierui.cn/article/cpsspo.html