设置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”(分支或标签)而不能推送其他人。
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
。 编辑它并添加以下行:
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.com
和sudo 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文章