问题描述
我最近在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
要生成用于更安全身份验证的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.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。随意尝试一下;文档可在此处获得:
使用这种方法,您可以拥有一个中央Git服务器,其中包含在几分钟内运行的私有存储库。如果你不熟悉它们,那么gitolite和EC2有一个学习曲线。
第八种方法
使用gitolite很容易实现。在不到一个小时的时间内,您将拥有易于配置且安全的多用户git服务器。
我在my site上有一篇howto文章