私有git 搭建

发布时间:2024-06-03 点击:130
建站服务器
这里使用的操作系统是centosrelease5.9(final),并且已经安装了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安装gitosis-gitaur包。这将创造三件事:
该git用户
git该用户所属的组
该/srv/gitosis目录将保存gitosis的数据和存储库
要配置gitosis,您不要直接在服务器上编辑文件。相反,gitosis提供了一个包含配置的git存储库。要更新此配置,您gitosis-admin可以像任何其他存储库一样克隆,提交和推送。
由于gitosis使用ssh密钥对用户进行身份验证,因此您将需要生成一个用于管理存储库的密钥对。如果没有,可以使用ssh-keygen例如:
$ssh-keygen-trsa您现在可以初始化管理存储库。
$sudo-h-ugitgitosis-init</path/to/public_key.pub初始化的空git仓库在/srv/gitosis/repositories/gitosis-admin.git/在/srv/gitosis/repositories/gitosis-admin.git/中重新初始化现有的git仓库注意:在某些情况下,这可能会导致此类错误:
oserror:[errno13]permissiondenied:\\\'//gitosis\\\'原因可能是git主目录没有正确设置。通过手动设置来修复它:
#usermod-d/srv/gitosisgit此外,此命令创建/srv/gitosis/repositories将存储实际托管存储库的目录。
在管理存储库初始化完成后,禁用用户git的基于密码的ssh登录可能是合理的。
要实现这一点,添加
匹配用户git密码验证号在……的最后/etc/ssh/sshd_config
组态
如上所述,通过将提交推送到gitosis-admin存储库来配置gitosis。要克隆此存储库(使用gitosis!),请运行:
$gitclonegit@your.git.server:gitosis-admin.git在gitosis-admin存储库中,您将看到两件事:
gitosis.conf– gitosis和存储库权限的配置文件
keydir– 包含每个用户公用密钥的目录
要修改存储库或用户,或配置gitosis,只需提交克隆中的更改并将其推回到服务器。
存储库和权限
您可以在/ usr / share / doc / gitosis中找到一些示例配置文件。
[gitosis的]gitweb=yes[repofoobar]description=foobar的git仓库owner=user[组开发者]members=user1user2[组管理员]members=user1[组gitosis-admin]writable=gitosis-adminmembers=@admins[组foobar]可写=foobarmembers=@devs[组myteam]writable=free_monkey会员=jdoe[组部署者]writable=free_monkeyreadonly=monkey_deployer这定义了一个名为“free_monkey”的新组,它是一个任意字符串。“jdoe”是myteam的成员,可以访问“gitosis”存储库。“monkey_deployer”键将只能访问“free_monkey”。
将此添加到gitosis.conf中,提交并推送它:
$gitcommit-a-m“允许jdoe写入访问free_monkey”$gitpush现在,用户“jdoe”可以访问名为“free_monkey”的存储库,但是我们还没有创建一个存储库。我们将做的是在本地创建一个新的存储库,在git服务器上进行初始化,然后推送它:
$mkdirfree_monkey$cdfree_monkey$gitinit$gitremoteaddorigingit@your_server_hostname:free_monkey.git做一些工作,git添加和提交文件
$gitpushoriginmaster:refs/heads/master当使用ssh时,最后一个命令将失败,并显示错误消息“不显示为git存储库”这可以通过在服务器上手动初始化存储库来修复
$gitinit--bare/srv/gitosis/repositories/free_monkey.git并重试最后一个命令
随着最后的推动,你将会参加比赛。存储库“free_monkey”已在服务器上创建(在/ srv / gitosis / repositories中),您可以像任何ol\\\’git存储库一样开始使用它。
git病毒库也可以用于gitweb;只需将gitweb配置中包含存储库的目录指向。
添加用户
下一个自然的事情是让幸运的几个提交访问freemonkey项目。这是一个简单的两步过程。
首先,收集他们的公共ssh密钥,我将其称为“alice.pub”和“bob.pub”,并将其放入当地gitosis-admin存储库的keydir /。其次,编辑gitosis.conf并将其添加到“成员”列表中。
$cdgitosis-admin$cp/alice.pubkeydir/$cp/bob.pubkeydir/$gitaddkeydir/alice.pubkeydir/bob.pub请注意,密钥文件名必须有“.pub”扩展名。
gitosis.conf更改:
[组myteam]member=jdoealicebobwritable=free_monkey提交和推送:
$gitcommit-a-m“授予alice和bob授予freemonkey的权限”$gitpush而已。alice和bob现在可以像这样克隆free_monkey存储库:
$gitclonegit@your_server_hostname:free_monkey.git爱丽丝和鲍勃也将有承诺的权利。
公共访问
如果您正在运行一个公共项目,您的用户将拥有提交权限,然后您将拥有其他所有人。我们如何让别人只读访问,而不用ssh密钥?
我们只是使用git-daemon。这是独立于gitosis,它与git本身一起。
$sudo-ugitgit-daemon--base-path=/srv/gitosis/repositories/--export-all这将使您使用gitosis管理的所有存储库对于公众来说是只读的。有人可以像这样克隆freemonkey:
$gitclonegit://your_server_hostname/free_monkey.git要仅导出一些存储库而不是其他存储库,您需要在要公开的每个存储库的根目录(例如/srv/gitosis/repositories/free_monkey.git)内触摸git-daemon-export-ok。然后从上面的git-daemon命令中删除“–export-all”。
更多的技巧
gitosis.conf可以设置做一些其他的巧妙的技巧。在gitosis源目录中打开example.conf(您最初在顶部克隆gitosis方式),以查看所有选项的摘要。您可以将一些存储库指定为只读(与可写)相反,但尚未公开)。组成员列表可以包括另一个组。还有一些其他的技巧,我会留给读者发现。
注意事项
如果您的服务

服务器买哪个好相关云计算内容
南京ecs云服务器测试工具
什么是域名一口价交易 一口价域名续费要花费多少
云服务器负载均衡配置
谷歌搜索质量评估指南更新:调整将影响所有SEO行为
网站空间和云服务器的区别
腾讯云服务器怎么装win7
手机建站怎么进行 注意事项有哪些