设置一个git服务器


57

我最近在Amazon EC2上设置了ubuntu-server。我想将其用作我的git服务器,因此可以在其中存储我的存储库。

因此,在哪里可以找到有关如何在ubuntu服务器上设置git的一些详细说明?所有这些SSH密钥以及类似的东西,多个用户等。


2
我认为这不是与Ubuntu相关的问题(除了明显的“ it's linux”之外),您甚至还查看过git文档吗?这里提到建立公共存储库和私有存储库。
Ward Muylaert

22
@BonboBingo说“仅搜索Google”确实不是解决方案。大多数问题在这里可以用“如果你搜索足够长的时间......”问Ubuntu的目标是要回答更多信息-权威的问答网站提供第一级答案,而不是该说“只是谷歌”答案的墙检查常见问题解答
Marco Ceppi

1
这里有一个有用的步骤指南:help.ubuntu.com/community/Git。@Marco Ceppi对不起,但我没有争论。然后,我发布的链接似乎与问题相关……现在可以作为答案了吗?
BonboBingo 2011年

@BonboBingo的评论不算作答案!我只是评论您评论的“搜索Google”部分。如果您想在Ubuntu帮助指南中回答有关Git文章的详细信息,则应使用此页面底部的“您的答案”框!:)
Marco Ceppi

2
“而不是说“仅Google”的答案墙-有关更多信息,请检查“ ...好的,您是对的:)让我们在这里停止。
BonboBingo 2011年

Answers:


38

您可以按照aking1012的建议使用本教程来安装Git服务器,也可以只在EC2实例上安装SSH服务器(保护它并更改默认端口可能是明智的选择)。

Git可以是无服务器的,您可以初始化存储库,然后通过SSH从远程访问它。因此,在Ubuntu Server上执行以下操作即可:

GIT_DIR=project.git git init  
cd project.git  
git --bare update-server-info  
cp hooks/post-update.sample hooks/post-update

最后在服务器上安装SSH:

sudo apt-get install ssh-server

现在,您应该配置SSH以保护它。

现在是时候使您的项目在线(开发计算机上已经拥有的数据):

git push ssh://<username>@<remote-git-hostname>/path/to/project.git master

现在您可以开始克隆了。您继续使用开发机器:

git clone ssh://<username>@<remote-git-hostname>/path/to/dir.git

在Git上检查此出色的资源

为了生成用于更安全身份验证的ssh密钥,您可以阅读有关SSH身份验证的本文。


那不是openssh-server吗?
Jorge Castro

1
@jorge似乎ssh-server是openssh-server的别名,至少在Ubuntu 10.04上是这样。
惠更斯(Huygens)2010年

1
很好,这可以工作,但是通过SSH登录到Amazon EC2计算机需要使用公共/私有密钥对(ssh -i key.pem ubuntu @ address)。另外,我要记住路径(Ubuntu的@地址:在/ var / WWW / DIR1 / DIR2),而不是只混帐克隆git.mydomain.com/repository
Pawełkowy

1
@Pawel好点。这就是为什么有些人将git存储库放在文件系统根目录下的原因。但是,是的,您需要ssh密钥或帐户。或者,您可以使用HTTP,但是这样您就没有很好的访问控制AFAIK。
惠更斯2010年

3
@PawełKarpiński-您可以在其中设置客户端SSH配置文件~/.ssh/config来处理用户名/主机地址,键输入,端口等。
Shauna 2012年

15

对于我所有的Git服务器设置,我都使用Gitolite,它允许“每分支”访问的安全粒度。如果在远程服务器上进行安装,则安装非常简单,就像运行交互式脚本一样简单。除了这种“易于设置”的特性外,它还具有Natty和Maverick的软件包

sudo apt-get install gitolite

这不会提供像Github或Gitweb这样的Web前端-但您可以轻松地在Gitolite之类的设备上进行配置和安装。


9

我喜欢乙醇钠。Pro Git书上有一,但我建议阅读整本书。

至于您的多用户要求:

Gitolite允许您不仅按存储库(如Gitosis一样)指定权限,还可以按每个存储库内的分支或标记名指定权限。也就是说,您可以指定某些人(或一群人)只能推送某些“引用”(分支或标签),而不能推送其他人。


7

1
注意:我目前正在为开发客户端和开发服务器教程整理一个0到完成的rvm,ree / ruby​​,rails,git教程。它只是将许多在线教程汇总到一起并对其进行了一些修改,但目前仍在进行中。
RobotHumans 2010年

这些教程很棒,但是,它们非常复杂。没有任何“简短的”教程吗?:)
Pawełkowy

我还没有看到任何更直接的东西...关于怪异和怪异的大多数教程都不会通过创建示例项目和测试来完成(我认为应该在每个教程中都有)。如果我看到另一个更直接的评论,我会牢记这个主题
RobotHumans 2010年

@PawełKarpiński-他们有什么复杂的事情?我以前使用过Gitosis设置,实际上非常简单。
Shauna 2012年


4

最适合我的解决方案是设置WebDAV。

  • sudo a2enmod sudo dav_fs

  • sudo a2enmod dav

  • 将新文件添加到/etc/apache2/sites-available并命名,例如git.yourserver.com。编辑它并添加以下行:

<VirtualHost *:80>

DocumentRoot /var/www/git.yourserver.com/repos
ServerName git.yourserver.net
Options Indexes FollowSymLinks MultiViews

<Location />
    DAV On
    AuthType Basic
    AuthName "git repos"
    AuthUserFile /var/www/git.yourserver.net/password.dav
    Require valid-user
</Location>

</VirtualHost>

  • 在id中创建目录/var/www/git.yourserver.com和目录repos
  • sudo chown www-data /var/www/git.yourserver.com/repos
  • sudo htpasswd -c /var/www/git.yourserver.com/password.dav user_login 并输入用户名的密码 user_login
  • sudo chown root:www-data /var/www/git.yourserver.com/password.dav
  • sudo chmod 640 /var/www/git.yourserver.com/password.dav

现在,sudo a2ensite git.yourserver.comsudo service apache2 restart

  • 输入/var/www/git.yourserver.com/repos并创建目录,例如,myrepo.git
  • cd myrepo.git
  • git --bare init
  • git update-server-info

现在,从远程服务器注销并转到要在其中编辑文件的本地目录。

git clone http://user_login:user_password@git.yourserver.com/myrepo.git

并且您完成了。如果要将提交的更改发送到服务器:

git push origin master

您可以使用创建任意数量的用户sudo htpasswd。请记住-c,添加更多用户时不要使用switch,因为旧文件将被删除。


3
HTTP是受支持但不建议使用的“哑”协议。本地git协议工作得更好,并且更容易设置,因为您所要做的就是拥有一个正常工作的ssh服务器(您应该已经)并安装git-core。完全不需要与Apache混为一谈。
psusi 2011年

3

我也喜欢使用gitolite管理用户和安全性的方法。我有一个正在测试的用于EC2的Git + gitolite服务器AMI。随时尝试一下;文档可在此处获取:

Alestic Git服务器

使用这种方法,您可以在几分钟内使中央Git服务器运行私有存储库。如果您不熟悉gitolite和EC2,则有一条学习曲线。


3

凹凸棒石很容易实现。在不到一个小时的时间内,您将拥有易于配置且安全的多用户git服务器。

我的网站上有一篇howto文章

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.