设置git服务器

我最近在Amazon EC2上设置了ubuntu-server。 我想用它作为我的git服务器,所以我可以将我的存储库存储在那里。

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

您可以使用本教程安装Git服务器作为aking1012建议您,或者您可以在您的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://@/path/to/project.git master 

现在你可以开始克隆了。 你继续你的开发机器:

 git clone ssh://@/path/to/dir.git 

在Git上查看这个优秀的资源 。

为了生成用于更安全身份validation的ssh密钥,您可以阅读有关SSH身份validation的这篇文章。

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

 sudo apt-get install gitolite 

这不会提供像Github或Gitweb这样的Web前端 – 但您可以轻松地在Gitolite之类的东西上配置和安装它们。

我喜欢gitolite 。 Pro Git书中有一节 ,但我建议阅读整本书。

至于您的多个用户要求:

Gitolite允许您不仅通过存储库(如Gitosis确实)指定权限,还可以通过每个存储库中的分支或标记名称来指定权限。 也就是说,您可以指定某些人(或一组人)只能推送某些“refs”(分支或标签)而不能推送其他人。

绝对遵循官方文档: https : //help.ubuntu.com/community/Git ( 设置Git和项目管理部分

对我来说最好的解决方案是设置WebDAV。

  • sudo a2enmod sudo dav_fs

  • sudo a2enmod dav

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

 DocumentRoot /var/www/git.yourserver.com/repos ServerName git.yourserver.net Options Indexes FollowSymLinks MultiViews  DAV On AuthType Basic AuthName "git repos" AuthUserFile /var/www/git.yourserver.net/password.dav Require valid-user  

  • 在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开关,因为旧文件将被删除。

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

Alestic Git服务器

使用这种方法,您可以拥有一个中央Git服务器,其中包含在几分钟内运行的私有存储库。 如果你不熟悉它们,那么gitolite和EC2有一个学习曲线。

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

我的网站上有一篇howto文章