当前位置: 首页>>技术教程>>正文


设置git服务器

, ,

问题描述

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

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

最佳解决方法

您可以使用tutorial to install a Git server as aking1012 proposed,也可以在EC2实例上安装SSH服务器(保护它并更改默认端口可能是明智之举)。

Git可以是server-less你初始化你的存储库,然后你通过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

检查此excellent resource on Git

要生成用于更安全身份验证的ssh密钥,您可以阅读有关SSH authentication的这篇文章。

次佳解决方法

对于我的所有Git服务器设置,我使用Gitolite,它允许”per-branch”访问的安全粒度。如果您在远程服务器上进行安装,那么安装非常简单,就像运行交互式脚本一样简单。除了这个”easy-to-setup”之外,它还有Natty和Maverick的套装

sudo apt-get install gitolite

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

第三种解决方法

我喜欢gitolite。 Pro Git书上有一个section但我建议阅读整本书。

至于您的多个用户要求:

Gitolite allows you to specify permissions not just by repository (like Gitosis does), but also by branch or tag names within each repository. That is, you can specify that certain people (or groups of people) can only push certain “refs” (branches or tags) but not others.

第四种方法

可以稍微修改http://scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way以适合您的目的…类似的教程http://blog.agdunn.net/?p=277

第五种方法

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

第六种方法

对我来说最好的解决方案是设置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开关,因为旧文件将被删除。

第七种方法

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

Alestic Git Server

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

第八种方法

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

我在my site上有一篇howto文章

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/1289.html,未经允许,请勿转载。